Commit c0171c5d authored by Gabriel-31415's avatar Gabriel-31415
Browse files

Merge remote-tracking branch 'upstream/master'

parents fa464bfc 0a6bdf37
......@@ -12,10 +12,14 @@ class Arquivo extends Model
* @var array
*/
protected $fillable = [
'nome', 'versao', 'versaoFinal', 'data', 'trabalhoId',
'nome', 'versao', 'versaoFinal', 'data', 'trabalhoId', 'participanteId'
];
public function trabalho(){
return $this->belongsTo('App\Trabalho', 'trabalhoId');
}
public function participante() {
return $this->belongsTo('App\Participante', 'participanteId');
}
}
......@@ -397,6 +397,68 @@ class TrabalhoController extends Controller
public function armazenarAnexosFinais($request, $pasta, $trabalho, $evento){
// Checando se é um novo trabalho ou uma edição
if ($trabalho->anexoProjeto != null) {
// Anexo Projeto
if(isset($request->anexoProjeto)){
if(Storage::disk()->exists($trabalho->anexoProjeto)) {
Storage::delete($trabalho->anexoProjeto);
}
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
if( $evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if(isset($request->anexoCONSU)){
if(Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) {
Storage::delete($trabalho->anexoDecisaoCONSU);
}
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoCONSU, 'CONSU.pdf');
}
}
//Autorização ou Justificativa
if( isset($request->anexoComiteEtica)){
if(Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) {
Storage::delete($trabalho->anexoAutorizacaoComiteEtica);
}
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, 'Comite_de_etica.pdf');
} elseif( isset($request->justificativaAutorizacaoEtica)){
if(Storage::disk()->exists($trabalho->justificativaAutorizacaoEtica)) {
Storage::delete($trabalho->justificativaAutorizacaoEtica);
}
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
}
//Anexo Lattes
if( isset($request->anexoLattesCoordenador)){
if(Storage::disk()->exists($trabalho->anexoLattesCoordenador)) {
Storage::delete($trabalho->anexoLattesCoordenador);
}
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if( isset($request->anexoPlanilha)){
if(Storage::disk()->exists($trabalho->anexoPlanilhaPontuacao)) {
Storage::delete($trabalho->anexoPlanilhaPontuacao);
}
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilha, "Planilha.". $request->file('anexoPlanilha')->extension());
}
// Anexo grupo pesquisa
if(isset($request->grupoPesquisa)){
if(Storage::disk()->exists($trabalho->anexoGrupoPesquisa)) {
Storage::delete($trabalho->anexoGrupoPesquisa);
}
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoPlanilha, "Grupo_de_pesquisa.". $request->file('grupoPesquisa')->extension());
}
return $trabalho;
}
// Anexo Projeto
if(isset($request->anexoProjeto)){
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
......@@ -427,7 +489,10 @@ class TrabalhoController extends Controller
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilha, "Planilha.". $request->file('anexoPlanilha')->extension());
}
$trabalho->update();
// Anexo grupo pesquisa
if(isset($request->grupoPesquisa)){
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoPlanilha, "Grupo_de_pesquisa.". $request->file('grupoPesquisa')->extension());
}
return $trabalho;
}
......@@ -490,7 +555,9 @@ class TrabalhoController extends Controller
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,]);
'arquivos' => $arquivos,
'enum_turno' => Participante::ENUM_TURNO,
]);
}
/**
......@@ -737,11 +804,18 @@ class TrabalhoController extends Controller
*/
public function destroy(Request $request)
{
$trabalho = Trabalho::find($request->id);
$projeto = Trabalho::find($request->id);
//dd($trabalho);
Storage::deleteDirectory('trabalhos/' . $trabalho->evento->id . '/' . $trabalho->id );
Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id );
$trabalho->delete();
$participantes = $projeto->participantes;
foreach ($participantes as $participante) {
$plano = $participante->planoTrabalho;
$plano->delete();
$participante->delete();
}
$projeto->delete();
return redirect()->back()->with(['mensagem' => 'Projeto deletado com sucesso!']);
}
......@@ -985,11 +1059,7 @@ class TrabalhoController extends Controller
$projeto = $this->atribuirDados($request, $edital);
$projeto->save();
// Salvando anexos no storage
$pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id;
$projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital);
// Email de submissão
$subject = "Submissão de Trabalho";
$proponente = Auth()->user();
Mail::to($proponente->email)->send(new SubmissaoTrabalho($proponente, $subject, $edital, $projeto));
......@@ -997,11 +1067,14 @@ class TrabalhoController extends Controller
// Salvando participantes
$this->salvarParticipantes($request, $edital, $projeto);
dd("foi");
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto submetido com sucesso!']);
}
public function atribuirDados(Request $request, $edital) {
public function atribuirDados(Request $request, $edital, Trabalho $projeto = null) {
if ($projeto == null) {
$projeto = new Trabalho();
}
$proponente = User::find(auth()->user()->id)->proponentes;
$hoje = now();
......@@ -1017,21 +1090,186 @@ class TrabalhoController extends Controller
$projeto->evento_id = $request->editalId;
$projeto->status = 'Submetido';
$projeto->proponente_id = $proponente->id;
//Anexos
$projeto->anexoProjeto = $request->anexoProjeto;
$projeto->anexoAutorizacaoComiteEtica = $request->anexoComiteEtica;
$projeto->justificativaAutorizacaoEtica = $request->justificativaAutorizacaoEtica;
$projeto->anexoLattesCoordenador = $request->anexoLattesCoordenador;
$projeto->anexoPlanilhaPontuacao = $request->anexoPlanilha;
if($edital->tipo == 'PIBIC' || $edital->tipo == 'PIBIC-EM'){
$projeto->anexoDecisaoCONSU = $request->anexoCONSU;
}
// Salvando anexos no storage
$pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id;
$projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital);
return $projeto;
}
public function salvarParticipantes(Request $request, $edital, $projeto) {
public function salvarParticipantes(Request $request, $edital, $projeto, $edicao = false) {
if ($edicao) {
$participantes = $projeto->participantes;
$participantesPermanecem = collect();
foreach ($request->participante_id as $key => $id) {
// Novo participante
if ($id == 0) {
$userParticipante = User::where('email', $request->emailParticipante[$key])->first();
$participante = new Participante();
if($userParticipante == null){
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $request->emailParticipante[$key];
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_cursado[$key];
$participante->total_periodos = $request->total_periodos[$key];
$participante->media_do_curso = $request->media_geral_curso[$key];
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_cursado[$key];
$participante->total_periodos = $request->total_periodos[$key];
$participante->media_do_curso = $request->media_geral_curso[$key];
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
if($request->nomePlanoTrabalho[$key] != null){
$usuario = User::where('email', $request->emailParticipante[$key])->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id .'/';
$nome = $request->nomePlanoTrabalho[$key] .".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
// Editado
} elseif ($id > 0) {
// Removo dos cantidatos excluidos
$participante = Participante::find($id);
$participantesPermanecem->push($participante);
$usuario = $participante->user;
$endereco = $usuario->endereco;
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$usuario->update();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->update();
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_cursado[$key];
$participante->total_periodos = $request->total_periodos[$key];
$participante->media_do_curso = $request->media_geral_curso[$key];
$participante->update();
if($request->anexoPlanoTrabalho != null && array_key_exists($key, $request->anexoPlanoTrabalho) && $request->anexoPlanoTrabalho[$key] != null){
$planoAtual = $participante->planoTrabalho;
if(Storage::disk()->exists($planoAtual->nome)) {
Storage::delete($planoAtual->nome);
}
$planoAtual->delete();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id .'/';
$nome = $request->nomePlanoTrabalho[$key] .".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
// Excluidos
$participantesExcluidos = $participantes->diff($participantesPermanecem);
foreach ($participantesExcluidos as $participante) {
$plano = $participante->planoTrabalho;
$plano->delete();
$participante->delete();
}
return true;
}
if($request->emailParticipante != null) {
foreach ($request->emailParticipante as $key => $email) {
$userParticipante = User::where('email', $email)->first();
......@@ -1125,5 +1363,26 @@ class TrabalhoController extends Controller
}
}
}
return true;
}
public function atualizar(Request $request, $id) {
$edital = Evento::find($request->editalId);
$hoje = now();
$projeto = Trabalho::find($id);
if (!($edital->inicioSubmissao < $hoje && $edital->fimSubmissao >= $hoje)) {
return redirect()->route('inicial')->with(['error'=> 0, 'mensagem' => 'As submissões para o edital '. $edital->titulo .' foram encerradas.']);
}
$projeto = $this->atribuirDados($request, $edital, $projeto);
$projeto->update();
// Salvando participantes
$this->salvarParticipantes($request, $edital, $projeto, true);
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto atualizado com sucesso!']);
}
}
\ No newline at end of file
......@@ -18,4 +18,8 @@ class Participante extends Model
public function trabalhos(){
return $this->belongsToMany('App\Trabalho', 'trabalho_participante');
}
public function planoTrabalho() {
return $this->hasOne('App\Arquivo', 'participanteId');
}
}
......@@ -28,6 +28,7 @@ class Trabalho extends Model
'anexoAutorizacaoComiteEtica',
'JustificativaAutorizacaoEtica',
'anexoLattesCoordenador',
'anexoGrupoPesquisa',
'anexoPlanilhaPontuacao',
'anexoProjeto',
......@@ -82,7 +83,7 @@ class Trabalho extends Model
return $this->hasMany('App\PlanoTrabalho');
}
public function participantes(){
return $this->belongsToMany('App\Participante', 'trabalho_participante');
return $this->hasMany('App\Participante', 'trabalho_id');
}
public function proponente(){
return $this->belongsTo('App\Proponente');
......
......@@ -23,10 +23,11 @@ class CreateTrabalhosTable extends Migration
$table->string('pontuacaoPlanilha');
$table->date('data')->nullable();
//Anexos
$table->string('anexoProjeto');
$table->string('anexoProjeto')->nullable();
$table->string('anexoDecisaoCONSU')->nullable();
$table->string('anexoPlanilhaPontuacao');
$table->string('anexoLattesCoordenador');
$table->string('anexoPlanilhaPontuacao')->nullable();
$table->string('anexoLattesCoordenador')->nullable();
$table->string('anexoGrupoPesquisa')->nullable();
$table->string('anexoAutorizacaoComiteEtica')->nullable();
$table->string('justificativaAutorizacaoEtica')->nullable();
//chaves estrangeiras
......
......@@ -66,9 +66,11 @@
<div class="color-subtitle-edital">Submissão até o dia {{ date('d/m/Y', strtotime($evento->fimSubmissao)) }}</div>
</div>
<div class="col-sm-4">
<a href="{{ route('evento.visualizarNaoLogado', ['id' => $evento->id]) }}">
<button class="btn btn-opcoes-edital background-yellow" style="float: right;" disable>
Em avaliação
</button>
</a>
</div>
</div>
</div>
......@@ -85,9 +87,11 @@
<div class="color-subtitle-edital">Submissão até o dia {{ date('d/m/Y', strtotime($evento->fimSubmissao)) }}</div>
</div>
<div class="col-sm-3">
<a href="{{ route('evento.visualizarNaoLogado', ['id' => $evento->id]) }}">
<button class="btn btn-opcoes-edital background-red" style="float: right;" disabled>
Encerrado
</button>
</a>
</div>
</div>
</div>
......
This diff is collapsed.
......@@ -3,14 +3,15 @@
@section('content')
<div class="container" style="margin-top: 100px;">
@if(isset($mensagem))
{{-- @if(isset($mensagem))
<div class="col-sm-12">
<br>
<div class="alert alert-success">
<p>{{ $mensagem }}</p>
</div>
</div>
@endif
@endif --}}
<div class="container" >
<div class="row" >
<div class="col-sm-1">
......@@ -39,7 +40,19 @@
</div>
</div>
</div>
@if(session('mensagem'))
<div class="row">
<div class="col-sm-12">
<br>
<div class="alert alert-success">
<p>{{session('mensagem')}}</p>
</div>
</div>
</div>
@endif
<hr>
<div class="row">
<div class="col-md-12">
<table class="table table-bordered">
<thead>
<tr>
......@@ -124,6 +137,8 @@
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection
......
......@@ -102,7 +102,7 @@ Route::prefix('avaliador')->name('avaliador.')->group(function(){
Route::get( '/edital/{id}/projetos', 'TrabalhoController@projetosDoEdital' )->name('projetos.edital');
Route::get( '/projeto/{id}/visualizar', 'TrabalhoController@show' )->name('trabalho.show');
Route::get( '/projeto/{id}/editar', 'TrabalhoController@edit' )->name('trabalho.editar');
Route::post( '/projeto/{id}/atualizar', 'TrabalhoController@update' )->name('trabalho.update');
Route::post( '/projeto/{id}/atualizar', 'TrabalhoController@atualizar' )->name('trabalho.update');
Route::get( '/projeto/{id}/excluir', 'TrabalhoController@destroy' )->name('trabalho.destroy');
Route::get( '/projeto/{id}/excluirParticipante','TrabalhoController@excluirParticipante')->name('trabalho.excluirParticipante');
......
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