1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?php
namespace App\Http\Controllers;
use App\Desligamento;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Auth;
use App\User;
use App\Trabalho;
use App\Proponente;
use App\Evento;
use App\Mail\SolicitacaoDesligamento;
use App\Mail\SolicitacaoSubstituicao;
use App\Notificacao;
use App\Participante;
use Carbon\Carbon;
use Illuminate\Support\Facades\Mail;
class ProponenteController extends Controller
{
public function index(){
return view('proponente.index');
}
public function create(){
return view('proponente.cadastro')->with(['mensagem' => 'Preencha o seguinte formulário para poder submeter algum projeto.']);;
}
public function editais(){
$eventos = Evento::all();
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('proponente.editais', ['eventos'=> $eventos, 'hoje'=>$hoje] );
}
public function store(Request $request){
if (Auth()->user()->proponentes == null) {
$validated = $request->validate([
'cargo' => 'required',
'vinculo' => 'required',
'outro' => ['required_if:vinculo,Outro'],
'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade,linkLattes'],
'titulacaoMaxima' => Rule::requiredIf( (isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo']=== 'Pós-doutorando')),
'anoTitulacao'=> ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'],
'anoTitulacao' => Rule::requiredIf( (isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'areaFormacao'=> ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'],
'areaFormacao' => Rule::requiredIf( (isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'bolsistaProdutividade'=> ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'],
'bolsistaProdutividade' => Rule::requiredIf( (isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'nivel' => ['required_if:bolsistaProdutividade,sim'],
//'nivel' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required':''],
'linkLattes'=> ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required':''],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes':''],
]);
if($request['cargo'] === "Estudante" && $request['vinculo'] !== "Pós-doutorando"){
return redirect( route('proponente.create'))->with(['mensagem' => 'Operação não permitida para seu perfil']);
}else{
$proponente = new Proponente();
$proponente->SIAPE = $request->SIAPE;
$proponente->cargo = $request->cargo;
$proponente->vinculo = $request->vinculo;
$proponente->titulacaoMaxima = $request->titulacaoMaxima;
$proponente->anoTitulacao = $request->anoTitulacao;
$proponente->areaFormacao = $request->areaFormacao;
$proponente->bolsistaProdutividade = $request->bolsistaProdutividade;
$proponente->nivel = $request->nivel;
$proponente->linkLattes = $request->linkLattes;
$proponente->user_id = Auth::user()->id;
$proponente->save();
$user = User::find(Auth()->user()->id);
//$user->tipo = "proponente";
$user->save();
$eventos = Evento::all();
return redirect( route('home'))->with(['mensagem' => 'Cadastro feito com sucesso! Você já pode criar projetos']);
}
}else{
return redirect( route('proponente.create'))->with(['mensagem' => 'Você já é proponente!']);
}
}
public function projetosDoProponente(Request $request) {
if($request->buscar == null){
$proponente = Proponente::where('user_id', Auth()->user()->id)->first();
$projetos = Trabalho::where('proponente_id', $proponente->id)->paginate(10);
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('proponente.projetos')->with(['projetos' => $projetos, 'hoje'=>$hoje, 'busca'=>$request->buscar, 'flag'=>'false']);
}else{
$proponente = Proponente::where('user_id', Auth()->user()->id)->first();
$projetos = Trabalho::where('proponente_id','=',$proponente->id)->where('titulo','ilike','%'.$request->buscar.'%')->paginate(10);
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('proponente.projetos')->with(['projetos' => $projetos, 'hoje'=>$hoje, 'busca'=>$request->buscar, 'flag'=>'true']);
}
}
public function projetosEdital($id) {
$edital = Evento::find($id);
if(Auth::user()->proponentes != null){
$projetos = Trabalho::where('evento_id', '=', $id)->where('proponente_id', Auth::user()->proponentes->id)->orderBy('titulo')->paginate(10);
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje'=>$hoje]);
}else{
return redirect()->route('inicial');
}
}
public function solicitarDesligamento(Request $request){
$participante = Participante::find($request->participante);
$request->validate([
'justificativa' => 'required|max:5000|min:5',
]);
$desligamento = new Desligamento();
$desligamento->status = Desligamento::STATUS_ENUM['solicitado'];
$desligamento->justificativa = $request->justificativa;
$desligamento->trabalho_id = $request->trabalho;
$desligamento->participante_id = $participante->id;
$desligamento->save();
$trabalho = Trabalho::find($request->trabalho);
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $trabalho->evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 7,
]);
$notificacao->save();
Mail::to($trabalho->evento->coordenadorComissao->user->email)->send(new SolicitacaoDesligamento($trabalho->evento, $trabalho));
return redirect()->back()->with(['sucesso' => 'Solicitação de desligamento feita com sucesso.']);
}
}