Commit 72f53e8f authored by Carlos André's avatar Carlos André
Browse files

editar projeto

parent 44278c29
......@@ -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,42 +397,102 @@ 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(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());
}
$trabalho->update();
return $trabalho;
}
// Anexo Projeto
if(isset($request->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)){
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoCONSU, 'CONSU.pdf');
}
}
//Autorização ou Justificativa
if( isset($request->anexoComiteEtica)){
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, 'Comite_de_etica.pdf');
} elseif( isset($request->justificativaAutorizacaoEtica)){
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
}
//Anexo Lattes
if( isset($request->anexoLattesCoordenador)){
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if( isset($request->anexoPlanilha)){
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilha, "Planilha.". $request->file('anexoPlanilha')->extension());
}
// Anexo grupo pesquisa
if(isset($request->grupoPesquisa)){
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoPlanilha, "Grupo_de_pesquisa.". $request->file('grupoPesquisa')->extension());
}
return $trabalho;
}
......@@ -495,7 +555,9 @@ class TrabalhoController extends Controller
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,]);
'arquivos' => $arquivos,
'enum_turno' => Participante::ENUM_TURNO,
]);
}
/**
......@@ -989,11 +1051,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));
......@@ -1004,8 +1062,11 @@ class TrabalhoController extends Controller
dd("foi");
}
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();
......@@ -1021,21 +1082,182 @@ 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 = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
// Excluidos
$participantesExcluidos = $participantes->diff($participantesPermanecem);
foreach ($participantesExcluidos as $participante) {
$participante->delete();
}
}
if($request->emailParticipante != null) {
foreach ($request->emailParticipante as $key => $email) {
$userParticipante = User::where('email', $email)->first();
......@@ -1130,4 +1352,23 @@ class TrabalhoController extends Controller
}
}
}
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);
dd("foi");
}
}
\ 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');
}
}
......@@ -83,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,11 +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('anexoGrupoPesquisa');
$table->string('anexoPlanilhaPontuacao')->nullable();
$table->string('anexoLattesCoordenador')->nullable();
$table->string('anexoGrupoPesquisa')->nullable();
$table->string('anexoAutorizacaoComiteEtica')->nullable();
$table->string('justificativaAutorizacaoEtica')->nullable();
//chaves estrangeiras
......
This diff is collapsed.
......@@ -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