Commit df50a554 authored by Yuri Resende's avatar Yuri Resende
Browse files

merge com Selecionar_areas_tematicas_avaliadores

parent 139e1dc3
This diff is collapsed.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Trabalho extends Model
{
use SoftDeletes;
// 'rascunho','submetido', 'avaliado', 'corrigido','aprovado','reprovado', 'arquivado'
protected $fillable = [
'titulo',
'data',
'aprovado',
'status',
'decisaoCONSU',
'pontuacaoPlanilha',
'linkGrupoPesquisa',
'linkLattesEstudante',
'comentario',
'modalidade',
'conflitosInteresse',
'anexoDecisaoCONSU',
'anexoAutorizacaoComiteEtica',
'JustificativaAutorizacaoEtica',
'anexoLattesCoordenador',
'anexoGrupoPesquisa',
'anexoPlanilhaPontuacao',
'anexoProjeto',
'grande_area_id',
'area_id',
'sub_area_id',
'evento_id',
'proponente_id',
'coordenador_id',
'proponente_id',
'pivot',
'area_tematica_id',
];
public function recurso(){
return $this->hasMany('App\Recurso', 'trabalhoId');
}
public function arquivo(){
return $this->hasMany('App\Arquivo', 'trabalhoId');
}
public function modalidade(){
return $this->belongsTo('App\Modalidade', 'modalidadeId');
}
public function area(){
return $this->belongsTo('App\Area');
}
public function grandeArea(){
return $this->belongsTo('App\GrandeArea');
}
public function subArea(){
return $this->belongsTo('App\SubArea');
}
public function areaTematica(){
return $this->belongsTo('App\AreaTematica');
}
public function autor(){
return $this->belongsTo('App\User', 'autorId');
}
public function coautor(){
return $this->hasMany('App\Coautor', 'trabalhoId');
}
public function parecer(){
return $this->hasMany('App\Parecer', 'trabalhoId');
}
public function atribuicao(){
return $this->hasMany('App\Atribuicao', 'trabalhoId');
}
public function evento(){
return $this->belongsTo('App\Evento');
}
public function planoTrabalho(){
return $this->hasMany('App\PlanoTrabalho');
}
public function participantes(){
// return $this->belongsToMany('App\Trabalho', 'trabalho_participante');
return $this->hasMany('App\Participante', 'trabalho_id');
}
public function proponente(){
return $this->belongsTo('App\Proponente');
}
public function coordenador(){
return $this->belongsTo('App\CoordenadorComissao');
}
public function avaliadors(){
return $this->belongsToMany('App\Avaliador')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at','pontuacao','acesso');
}
public function substituicaos(){
return $this->hasMany('App\Substituicao');
}
public function parecer_internos(){
return $this->hasMany(ParecerInterno::class, 'trab_id', 'id');
}
public function notificacoes(){
return $this->hasMany(Notificacao::class, 'trabalho_id', 'id');
}
public function desligamentos(){
return $this->hasMany(Desligamento::class, 'trabalho_id', 'id')->orderBy('created_at', 'DESC');
}
public function solicitacoesCertificados()
{
return $this->hasMany(Certificado::class, 'trabalho_id');
}
public function ods(){
return $this->belongsToMany('App\ObjetivoDeDesenvolvimentoSustentavel', 'objetivo_de_desenvolvimento_sustentavel_trabalhos', 'trabalho_id');
}
public function integrantes() {
return $this->belongsToMany('App\User', 'trabalho_users', 'trabalho_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Trabalho extends Model
{
use SoftDeletes;
// 'rascunho','submetido', 'avaliado', 'corrigido','aprovado','reprovado', 'arquivado'
protected $fillable = [
'titulo',
'data',
'aprovado',
'status',
'decisaoCONSU',
'pontuacaoPlanilha',
'linkGrupoPesquisa',
'linkLattesEstudante',
'comentario',
'modalidade',
'conflitosInteresse',
'anexoDecisaoCONSU',
'anexoAutorizacaoComiteEtica',
'JustificativaAutorizacaoEtica',
'anexoLattesCoordenador',
'anexoGrupoPesquisa',
'anexoPlanilhaPontuacao',
'anexoProjeto',
'grande_area_id',
'area_id',
'sub_area_id',
'evento_id',
'proponente_id',
'coordenador_id',
'proponente_id',
'pivot',
'area_tematica_id',
];
public function recurso(){
return $this->hasMany('App\Recurso', 'trabalhoId');
}
public function arquivo(){
return $this->hasMany('App\Arquivo', 'trabalhoId');
}
public function modalidade(){
return $this->belongsTo('App\Modalidade', 'modalidadeId');
}
public function area(){
return $this->belongsTo('App\Area');
}
public function grandeArea(){
return $this->belongsTo('App\GrandeArea');
}
public function subArea(){
return $this->belongsTo('App\SubArea');
}
public function areaTematica(){
return $this->belongsTo('App\AreaTematica');
}
public function autor(){
return $this->belongsTo('App\User', 'autorId');
}
public function coautor(){
return $this->hasMany('App\Coautor', 'trabalhoId');
}
public function parecer(){
return $this->hasMany('App\Parecer', 'trabalhoId');
}
public function atribuicao(){
return $this->hasMany('App\Atribuicao', 'trabalhoId');
}
public function evento(){
return $this->belongsTo('App\Evento');
}
public function planoTrabalho(){
return $this->hasMany('App\PlanoTrabalho');
}
public function participantes(){
// return $this->belongsToMany('App\Trabalho', 'trabalho_participante');
return $this->hasMany('App\Participante', 'trabalho_id');
}
public function proponente(){
return $this->belongsTo('App\Proponente');
}
public function coordenador(){
return $this->belongsTo('App\CoordenadorComissao');
}
public function avaliadors(){
return $this->belongsToMany('App\Avaliador')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at','pontuacao','acesso');
}
public function substituicaos(){
return $this->hasMany('App\Substituicao');
}
public function parecer_internos(){
return $this->hasMany(ParecerInterno::class, 'trab_id', 'id');
}
public function notificacoes(){
return $this->hasMany(Notificacao::class, 'trabalho_id', 'id');
}
public function desligamentos(){
return $this->hasMany(Desligamento::class, 'trabalho_id', 'id')->orderBy('created_at', 'DESC');
}
public function solicitacoesCertificados()
{
return $this->hasMany(Certificado::class, 'trabalho_id');
}
public function ods(){
return $this->belongsToMany('App\ObjetivoDeDesenvolvimentoSustentavel', 'objetivo_de_desenvolvimento_sustentavel_trabalhos', 'trabalho_id');
}
public function integrantes() {
return $this->belongsToMany('App\User', 'trabalho_users', 'trabalho_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class TrabalhoUser extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
public function funcao(){
return $this->belongsTo('App\FuncaoParticipantes', 'funcao_participante_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class TrabalhoUser extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
public function funcao(){
return $this->belongsTo('App\FuncaoParticipantes', 'funcao_participante_id');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTrabalhoUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('trabalho_users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->integer('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->integer('trabalho_id');
$table->foreign('trabalho_id')->references('id')->on('trabalhos');
$table->integer('funcao_participante_id');
$table->foreign('funcao_participante_id')->references('id')->on('funcao_participantes');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('trabalho_users');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTrabalhoUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('trabalho_users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->integer('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->integer('trabalho_id');
$table->foreign('trabalho_id')->references('id')->on('trabalhos');
$table->integer('funcao_participante_id');
$table->foreign('funcao_participante_id')->references('id')->on('funcao_participantes');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('trabalho_users');
}
}
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-md-11">
<h5 style="color: #234B8B; font-weight: bold">Adicionar Integrante(s)</h5>
</div>
<div class="col-md-1 text-sm-right">
<a type="button" value="{{ $edital->id }}" id="atribuir1" data-toggle="modal" data-target="#modalIntegrante">
<img class="" src="{{asset('img/icons/add.ico')}}" style="width:30px" alt="">
</a>
</div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row" id="integrante">
</div>
</div>
</div>
</div>
</div>
<!-- MODAL -->
<div class="modal fade" id="modalIntegrante" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Adicionar Integrante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="form-row" style="padding: 30px;">
<div class="col-md-8">
<label for="cpf_consulta">CPF:</label>
<input type="text" id="cpf_consulta" name="cpf_consulta" class="form-control" onkeyup="mask_cpf();">
</div>
<div class="col-md-4 mt-4">
<button type="button" class="btn btn-primary" onclick="preencherUsuarioExistente()">Adicionar</button>
</div>
</div>
<div class="form-row" style="padding: 0px 30px 30px 30px;">
<label for="funcao_participante">Função do Participante:</label>
<select name="" id="funcao_participante" class="form-control">
@foreach($funcaoParticipantes as $funcao)
<option value="{{$funcao->id}}">{{ $funcao->nome }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
<!-- MODAL DE ERRO -->
<div class="modal fade" id="aviso-modal-usuario-nao-existe" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #dc3545;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
CPF não consta no sistema!
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="aviso-modal-usuario-adicionado" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #32CD32;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Sucesso!</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Integrante adicionado com sucesso
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<script>
function mask_cpf() {
$("#cpf_consulta").keydown(function(){
try {
$("#cpf_consulta").unmask();
} catch (e) {}
$("#cpf_consulta").mask("999.999.999-99");
// ajustando foco
var elem = this;
setTimeout(function(){
// mudo a posição do seletor
elem.selectionStart = elem.selectionEnd = 10000;
}, 0);
// reaplico o valor para mudar o foco
var currentValue = $(this).val();
$(this).val('');
$(this).val(currentValue);
});
}
function removerIntegrante(id) {
$(`#integrante${id}`).remove()
}
function preencherUsuarioExistente() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{ route('trabalho.buscarUsuario') }}',
type: 'POST',
dataType: 'json',
data: {
'cpf_consulta': $('#cpf_consulta').val(),
'funcao': $('#funcao_participante').val()
},
success: function (data) {
if(data == 'inexistente' || $('#cpf_consulta').val() == ""){
exibirModalUsuarioInexistente();
}else {
exibirUsuarioAdicionado();
$('#integrante').append(`
<div id="integrante${data[0]['id']}" class="col-md-6">
<div class="row">
<input name="integrantes[]" type="text" value="${data[0]['id']},${$('#funcao_participante').val()}" hidden>
<div class="col-md-2" style="display: flex; align-items: center;">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-md-4 mb-1">
<strong>Nome:</strong> ${data[0]['name']}
<strong>CPF:</strong> ${data[0]['cpf']}
<strong>Função:</strong> ${data[1]['nome']}
<button type="button" class="btn btn-danger" onclick="removerIntegrante(${data[0]['id']})">Remover</button>
</div>
</div>
</div>
`)
}
}
});
}
function exibirModalUsuarioInexistente() {
$('#aviso-modal-usuario-nao-existe').modal('show');
}
function exibirUsuarioAdicionado() {
$('#aviso-modal-usuario-adicionado').modal('show');;
}
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-md-11">
<h5 style="color: #234B8B; font-weight: bold">Adicionar Integrante(s)</h5>
</div>
<div class="col-md-1 text-sm-right">
<a type="button" value="{{ $edital->id }}" id="atribuir1" data-toggle="modal" data-target="#modalIntegrante">
<img class="" src="{{asset('img/icons/add.ico')}}" style="width:30px" alt="">
</a>
</div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row" id="integrante">
</div>
</div>
</div>
</div>
</div>
<!-- MODAL -->
<div class="modal fade" id="modalIntegrante" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Adicionar Integrante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="form-row" style="padding: 30px;">
<div class="col-md-8">
<label for="cpf_consulta">CPF:</label>
<input type="text" id="cpf_consulta" name="cpf_consulta" class="form-control" onkeyup="mask_cpf();">
</div>
<div class="col-md-4 mt-4">
<button type="button" class="btn btn-primary" onclick="preencherUsuarioExistente()">Adicionar</button>
</div>
</div>
<div class="form-row" style="padding: 0px 30px 30px 30px;">
<label for="funcao_participante">Função do Participante:</label>
<select name="" id="funcao_participante" class="form-control">
@foreach($funcaoParticipantes as $funcao)
<option value="{{$funcao->id}}">{{ $funcao->nome }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
<!-- MODAL DE ERRO -->
<div class="modal fade" id="aviso-modal-usuario-nao-existe" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #dc3545;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
CPF não consta no sistema!
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="aviso-modal-usuario-adicionado" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #32CD32;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Sucesso!</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Integrante adicionado com sucesso
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<script>
function mask_cpf() {
$("#cpf_consulta").keydown(function(){
try {
$("#cpf_consulta").unmask();
} catch (e) {}
$("#cpf_consulta").mask("999.999.999-99");
// ajustando foco
var elem = this;
setTimeout(function(){
// mudo a posição do seletor
elem.selectionStart = elem.selectionEnd = 10000;
}, 0);
// reaplico o valor para mudar o foco
var currentValue = $(this).val();
$(this).val('');
$(this).val(currentValue);
});
}
function removerIntegrante(id) {
$(`#integrante${id}`).remove()
}
function preencherUsuarioExistente() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{ route('trabalho.buscarUsuario') }}',
type: 'POST',
dataType: 'json',
data: {
'cpf_consulta': $('#cpf_consulta').val(),
'funcao': $('#funcao_participante').val()
},
success: function (data) {
if(data == 'inexistente' || $('#cpf_consulta').val() == ""){
exibirModalUsuarioInexistente();
}else {
exibirUsuarioAdicionado();
$('#integrante').append(`
<div id="integrante${data[0]['id']}" class="col-md-6">
<div class="row">
<input name="integrantes[]" type="text" value="${data[0]['id']},${$('#funcao_participante').val()}" hidden>
<div class="col-md-2" style="display: flex; align-items: center;">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-md-4 mb-1">
<strong>Nome:</strong> ${data[0]['name']}
<strong>CPF:</strong> ${data[0]['cpf']}
<strong>Função:</strong> ${data[1]['nome']}
<button type="button" class="btn btn-danger" onclick="removerIntegrante(${data[0]['id']})">Remover</button>
</div>
</div>
</div>
`)
}
}
});
}
function exibirModalUsuarioInexistente() {
$('#aviso-modal-usuario-nao-existe').modal('show');
}
function exibirUsuarioAdicionado() {
$('#aviso-modal-usuario-adicionado').modal('show');;
}
</script>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
<!-- Participantes -->
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-sm-8"><h5 style="color: #234B8B; font-weight: bold">Integrantes</h5></div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row justify-content-start" style="alignment: center">
@foreach($trabalhos_user as $trabalho_user)
<div class="col-sm-1 mt-4">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-sm-5 mt-4">
<h5 class="mb-0">Nome: {{ $trabalho_user->user->name }}</h5>
<h5 class="mb-0">Função: {{ $trabalho_user->funcao->nome }}</h5>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
<!--X Participantes X-->
<!-- Participantes -->
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-sm-8"><h5 style="color: #234B8B; font-weight: bold">Integrantes</h5></div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row justify-content-start" style="alignment: center">
@foreach($trabalhos_user as $trabalho_user)
<div class="col-sm-1 mt-4">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-sm-5 mt-4">
<h5 class="mb-0">Nome: {{ $trabalho_user->user->name }}</h5>
<h5 class="mb-0">Função: {{ $trabalho_user->funcao->nome }}</h5>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
<!--X Participantes X-->
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment