diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php index 629ff1fc190d66a2c7346caa197e51729b235ef5..b10f53846faf789fe121061e46e41fb1cf55a92f 100755 --- a/app/Http/Controllers/TrabalhoController.php +++ b/app/Http/Controllers/TrabalhoController.php @@ -39,6 +39,7 @@ use Illuminate\Validation\Rule; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use App\Http\Requests\StoreTrabalho; +use App\Http\Requests\AdicionarIntegranteRequest; use Illuminate\Support\Facades\Mail; use App\Http\Requests\UpdateTrabalho; use Illuminate\Support\Facades\Storage; @@ -57,6 +58,7 @@ use App\Desligamento; use App\ObjetivoDeDesenvolvimentoSustentavel; use App\AvaliacaoRelatorio; use App\Curso; +use Illuminate\Support\Facades\Date; class TrabalhoController extends Controller { @@ -1202,6 +1204,77 @@ class TrabalhoController extends Controller } + public function adicionarParticipante(AdicionarIntegranteRequest $request, $id){ + $usuario = User::where('cpf', $request->cpf_consulta)->first(); + + if(!$this->validarQtdParticipantesEdital($id)){ + return redirect(route('trabalho.show', ['id' => $id]))->with(['mensagem' => "Número máximo de integrantes do Edital alcançado, não é possivel inserir."]); + } + + if(!$this->validarParticipanteRepetido($usuario->id, $id)) { + return redirect(route('trabalho.show', ['id' => $id]))->with(['mensagem' => "Já existe um Integrante com esse CPF."]); + } + + + $atributos = ['user_id' => $usuario->id, + 'funcao_participante_id' => $request->funcao_participante, + 'trabalho_id' => $id, + 'data_entrada' => Date::now()->format('Y-m-d H:i:s') + ]; + $rg = Participante::where('user_id', $atributos['user_id']) + ->where('rg', '!=', null) + ->latest() + ->first(); + + $data_de_nascimento = Participante::where('user_id', $atributos['user_id']) + ->where('data_de_nascimento', '!=', null) + ->latest() + ->first(); + + $curso = Participante::where('user_id', $atributos['user_id']) + ->where('curso', '!=', null) + ->latest() + ->first(); + + $linkLattes = Participante::where('user_id', $atributos['user_id']) + ->where('linkLattes', '!=', null) + ->latest() + ->first(); + + $curso_id = Participante::where('user_id', $atributos['user_id']) + ->where('curso_id', '!=', null) + ->latest() + ->first(); + + $atributo['rg'] = $rg ? $rg->rg : null; + $atributo['data_de_nascimento'] = $data_de_nascimento ? $data_de_nascimento->data_de_nascimento : null; + $atributo['curso'] = $curso ? $curso->curso : null; + $atributo['linkLattes'] = $linkLattes ? $linkLattes->linkLattes : null; + $atributo['curso_id'] = $curso_id ? $curso_id->curso_id : null; + + Participante::create($atributos); + + return redirect(route('trabalho.show', ['id' => $id])); + } + + private function validarQtdParticipantesEdital($id) { + $num_participantes_edital = Trabalho::where('id', $id)->first()->evento->numParticipantes; + $num_participantes_projeto = count(Participante::where('trabalho_id', $id)->get()); + if($num_participantes_projeto >= $num_participantes_edital){ + return false; + } + + return true; + } + + private function validarParticipanteRepetido($usuario_id, $trabalho_id){ + if(Participante::where('user_id', $usuario_id)->where('trabalho_id', $trabalho_id)->first()) { + return false; + } + + return true; + } + public function buscarUsuario(Request $request) { $usuario = User::where('cpf', $request->cpf_consulta)->first(); $funcao = FuncaoParticipantes::where('id', $request->funcao)->first(); diff --git a/app/Http/Requests/AdicionarIntegranteRequest.php b/app/Http/Requests/AdicionarIntegranteRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..809e29d0bc22e1b91766fd10b926fe5f739b02ca --- /dev/null +++ b/app/Http/Requests/AdicionarIntegranteRequest.php @@ -0,0 +1,42 @@ + [ + 'required', + 'string', + 'regex:/^\d{3}.\d{3}.\d{3}-\d{2}$/', + 'exists:users,cpf' + ], + 'funcao_participante' => [ + 'required', + 'exists:funcao_participantes,id' + ] + ]; + } + + public function messages() + { + + return [ + 'cpf_consulta.required' => 'O CPF é obrigatório', + 'cpf_consulta.regex' => 'O CPF é inválido', + 'cpf_consulta.exists' => 'Usuário não encontrado', + 'funcao_participante.required' => 'A função do participantes é obrigatória' + ]; + } +} diff --git a/app/Participante.php b/app/Participante.php index 784c8d213b921ef20d31d56b4a1466687079e9a5..875817286b5b49d6987ddb92982bef27587cddd4 100755 --- a/app/Participante.php +++ b/app/Participante.php @@ -12,7 +12,7 @@ class Participante extends Model protected $fillable = ['rg', 'data_de_nascimento', 'curso', 'funcao_participante_id', 'turno', 'ordem_prioridade', 'periodo_atual', 'total_periodos', 'media_do_curso', 'linkLattes', - 'tipoBolsa', 'data_entrada', 'data_saida']; + 'tipoBolsa', 'data_entrada', 'data_saida', 'user_id', 'trabalho_id', 'curso_id']; public function user(){ return $this->belongsTo('App\User'); diff --git a/resources/views/projeto/formularioVisualizar/integrantes.blade.php b/resources/views/projeto/formularioVisualizar/integrantes.blade.php index 33555f9160d544a2c2e6fedc6aba3d620961b19c..c4c61f1b1cf41b5649823e61fa4280043873931c 100644 --- a/resources/views/projeto/formularioVisualizar/integrantes.blade.php +++ b/resources/views/projeto/formularioVisualizar/integrantes.blade.php @@ -4,11 +4,14 @@