diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 8abf877c5dac5faf01f0d0542ae73e5cac169bcf..b61b2ad1d7b25e93625f5c7537ba2c27d89f475d 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -12,6 +12,7 @@ use Illuminate\Validation\Rule;
use App\User;
use App\Participante;
use App\Proponente;
+use App\Rules\UrlValidacao;
class RegisterController extends Controller
{
@@ -54,30 +55,31 @@ class RegisterController extends Controller
protected function validator(array $data)
{
-
-
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
- 'cpf' => ['required', 'cpf'],
- 'celular' => ['required','string'],
- 'instituicao' => ['required','string','max:255'],
+ 'cpf' => ['required', 'cpf', 'unique:users'],
+ 'celular' => ['required', 'string'],
+ 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
+ 'instituicaoSelect' => ['required_without:instituicao'],
'cargo' => ['required'],
'vinculo' => ['required'],
'outro' => ['required_if:vinculo,Outro'],
- 'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade,linkLattes'],
- 'titulacaoMaxima' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo']=== 'Pós-doutorando')),
- 'anoTitulacao'=> ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'],
- 'anoTitulacao' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
- 'areaFormacao'=> ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'],
- 'areaFormacao' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
- 'bolsistaProdutividade'=> ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'],
- 'bolsistaProdutividade' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
+ 'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'],
+ 'titulacaoMaxima' => Rule::requiredIf((isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
+ 'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'],
+ 'anoTitulacao' => Rule::requiredIf((isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
+ 'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'],
+ 'areaFormacao' => Rule::requiredIf((isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
+ 'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'],
+ 'bolsistaProdutividade' => Rule::requiredIf((isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
'nivel' => ['required_if:bolsistaProdutividade,sim'],
- 'linkLattes'=> ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
- 'linkLattes' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
-
+ 'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''],
+ 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
+ 'linkLattes' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''],
+ 'linkLattes' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'link_lattes':''],
+
]);
}
@@ -89,54 +91,59 @@ class RegisterController extends Controller
*/
protected function create(array $data)
{
- //dd($data);
+ //dd($data);
$user = new User();
$user->name = $data['name'];
$user->email = $data['email'];
$user->password = bcrypt($data['password']);
$user->cpf = $data['cpf'];
$user->celular = $data['celular'];
- $user->instituicao = $data['instituicao'];
+ if ($data['instituicao'] != null) {
+ $user->instituicao = $data['instituicao'];
+ } else if (isset($data['instituicaoSelect']) && $data['instituicaoSelect'] != "Outra") {
+ $user->instituicao = $data['instituicaoSelect'];
+ }
- if($data['cargo'] === "Estudante" && $data['vinculo'] !== "Pós-doutorando"){
+ if ($data['cargo'] === "Estudante" && $data['vinculo'] !== "Pós-doutorando") {
$user->tipo = 'participante';
$user->save();
$participante = new Participante();
$user->participantes()->save($participante);
- }else{
+ } else {
$user->tipo = 'proponente';
$user->save();
$proponente = new Proponente();
- if($data['SIAPE'] != null){
+ if ($data['SIAPE'] != null) {
$proponente->SIAPE = $data['SIAPE'];
}
$proponente->cargo = $data['cargo'];
- if($data['vinculo'] != 'Outro'){
+ if ($data['vinculo'] != 'Outro') {
$proponente->vinculo = $data['vinculo'];
- }else{
+ } else {
$proponente->vinculo = $data['outro'];
}
$proponente->titulacaoMaxima = $data['titulacaoMaxima'];
$proponente->anoTitulacao = $data['anoTitulacao'];
- $proponente->areaFormacao = $data['areaFormacao'];
+ $proponente->areaFormacao = $data['areaFormacao'];
$proponente->bolsistaProdutividade = $data['bolsistaProdutividade'];
- if($data['bolsistaProdutividade'] == 'sim'){
+ if ($data['bolsistaProdutividade'] == 'sim') {
$proponente->nivel = $data['nivel'];
}
- $proponente->linkLattes = $data['linkLattes'];
-
+ $proponente->linkLattes = $data['linkLattes'];
+
$user->proponentes()->save($proponente);
}
-
+
return $user;
}
- public function showRegistrationForm(){
+ public function showRegistrationForm()
+ {
return view('auth.register');
}
}
diff --git a/app/Http/Controllers/ParticipanteController.php b/app/Http/Controllers/ParticipanteController.php
index 82c993f7f56b3a4ed7c96a00c754747c71d4462f..aca64aa7d2398f62c05e7c3477be0928e2a52ddd 100644
--- a/app/Http/Controllers/ParticipanteController.php
+++ b/app/Http/Controllers/ParticipanteController.php
@@ -3,6 +3,9 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
+use App\Evento;
+use App\Trabalho;
+use App\Participante;
class ParticipanteController extends Controller
{
@@ -10,4 +13,16 @@ class ParticipanteController extends Controller
return view('participante.index');
}
+
+ public function edital($id){
+ $edital = Evento::find($id);
+ $trabalhosId = Trabalho::where('evento_id', '=', $id)->select('id')->get();
+ $meusTrabalhosId = Participante::where('user_id', '=', Auth()->user()->id)
+ ->whereIn('trabalho_id', $trabalhosId)->select('trabalho_id')->get();
+ $projetos = Trabalho::whereIn('id', $meusTrabalhosId)->get();
+
+ //dd($projetos);
+
+ return view('participante.projetos')->with(['edital' => $edital, 'projetos' => $projetos]);
+ }
}
diff --git a/app/Http/Controllers/ProponenteController.php b/app/Http/Controllers/ProponenteController.php
index df6bafaddd8f87491e938c8dba9a942c88b593c5..3043fce0d59067fdcb8351d0b46d107647ecb057 100644
--- a/app/Http/Controllers/ProponenteController.php
+++ b/app/Http/Controllers/ProponenteController.php
@@ -37,8 +37,10 @@ class ProponenteController extends Controller
'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' => Rule::requiredIf( (isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
+ '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"){
diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php
index 001d60657d0ba9ffe1e8f259a862557c90b047d2..452bfc881b74e3b8094feea72e56bfc5a973300a 100644
--- a/app/Http/Controllers/TrabalhoController.php
+++ b/app/Http/Controllers/TrabalhoController.php
@@ -101,7 +101,9 @@ class TrabalhoController extends Controller
'nomePlanoTrabalho.*' => ['required', 'string'],
'anexoProjeto' => ['required', 'file', 'mimes:pdf', 'max:2000000'],
'anexoCONSU' => ['required', 'file', 'mimes:pdf', 'max:2000000'],
- 'anexoComiteEtica' => ['required', 'file', 'mimes:pdf', 'max:2000000'],
+ 'botao' => ['required'],
+ 'anexoComiteEtica' => ['required_without:justificativaAutorizacaoEtica', 'file', 'mimes:pdf', 'max:2000000'],
+ 'justificativaAutorizacaoEtica' => ['required_without:anexoComiteEtica', 'file', 'mimes:pdf', 'max:2000000'],
'anexoLatterCoordenador' => ['required', 'file', 'mimes:pdf', 'max:2000000'],
'anexoPlanilha' => ['required', 'file', 'mimes:pdf', 'max:2000000'],
'anexoPlanoTrabalho.*' => ['required', 'file', 'mimes:pdf', 'max:2000000'],
@@ -224,6 +226,7 @@ class TrabalhoController extends Controller
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
+ $arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = $mytime;
@@ -268,21 +271,23 @@ class TrabalhoController extends Controller
*/
public function show($id)
{
+ //
$projeto = Trabalho::find($id);
- $edital = Evento::find($projeto->evento_id);
- $grandeAreas = GrandeArea::orderBy('nome')->get();
- $areas = Area::orderBy('nome')->get();
- $subareas = Subarea::orderBy('nome')->get();
+ $edital = Evento::find($projeto->evento_id);
+ $grandeArea = GrandeArea::where('id', $projeto->grande_area_id)->select('nome')->first();
+ $area = Area::where('id', $projeto->area_id)->select('nome')->first();
+ $subarea = Subarea::where('id', $projeto->sub_area_id)->select('nome')->first();
+ $proponente = Proponente::find($projeto->proponente_id);
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
-
return view('projeto.visualizar')->with(['projeto' => $projeto,
- 'grandeAreas' => $grandeAreas,
- 'areas' => $areas,
- 'subAreas' => $subareas,
+ 'grandeArea' => $grandeArea,
+ 'area' => $area,
+ 'subArea' => $subarea,
+ 'proponente' => $proponente,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
@@ -454,6 +459,7 @@ class TrabalhoController extends Controller
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
+ $arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = $mytime;
@@ -486,6 +492,7 @@ class TrabalhoController extends Controller
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
+ $arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = $mytime;
@@ -528,6 +535,16 @@ class TrabalhoController extends Controller
return redirect()->back();
}
+ public function excluirParticipante($id){
+ $participante = Participante::where('user_id', Auth()->user()->id)
+ ->where('trabalho_id', $id)->first();
+
+ $participante->trabalhos()->detach($id);
+ $participante->delete();
+
+ return redirect()->back();
+ }
+
public function novaVersao(Request $request){
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
@@ -710,4 +727,9 @@ class TrabalhoController extends Controller
}
return abort(404);
}
+
+ public function baixarAnexoJustificativa($id) {
+ $projeto = Trabalho::find($id);
+ return Storage::download($projeto->justificativaAutorizacaoEtica);
+ }
}
diff --git a/app/Participante.php b/app/Participante.php
index 5f07bef5ead99e86312685995378b4e4d06ef9a2..6fd42fdadabc4b1672f9a021365cd53e26a13c67 100644
--- a/app/Participante.php
+++ b/app/Participante.php
@@ -3,9 +3,12 @@
namespace App;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
class Participante extends Model
{
+ use SoftDeletes;
+
protected $fillable = ['name', 'user_id', 'trabalho_id', 'participante_id'];
public function user(){
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index d006879e2204a42cd288114974fa029c162b5fe6..a9f3552931f3003e096152f5889db1bcc814fda8 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -24,6 +24,7 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
- Validator::extend('cpf', '\App\Utils\CpfValidation@validate');
+ Validator::extend('cpf', '\App\Utils\CpfValidation@validate');
+ Validator::extend('link_lattes', '\App\Utils\LattesValidation@validate', 'Link inválido');
}
}
diff --git a/app/Utils/LattesValidation.php b/app/Utils/LattesValidation.php
new file mode 100644
index 0000000000000000000000000000000000000000..e97a7524241b17c158e95e85d970e358bf013789
--- /dev/null
+++ b/app/Utils/LattesValidation.php
@@ -0,0 +1,55 @@
+isValidUrl($value);
+ }
+
+ function isValidUrl($url)
+ {
+ // first do some quick sanity checks:
+ if (!$url || !is_string($url)) {
+ return false;
+ }
+
+ $url = filter_var($url, FILTER_SANITIZE_URL);
+
+ // Validate url
+ if (!filter_var($url, FILTER_VALIDATE_URL)) {
+ return false;
+ }
+
+ if(parse_url($url)['host'] != 'buscatextual.cnpq.br' && parse_url($url)['host'] != 'lattes.cnpq.br'){
+ return false;
+ }
+
+ if($this->getHttpResponseCode_using_getheaders($url) != 200){
+ return false;
+ }
+
+ return true;
+ }
+
+ function getHttpResponseCode_using_getheaders($url, $followredirects = true)
+ {
+ if (!$url || !is_string($url)) {
+ return false;
+ }
+ $headers = @get_headers($url);
+ if ($headers && is_array($headers)) {
+ if ($followredirects) {
+ $headers = array_reverse($headers);
+ }
+ foreach ($headers as $hline) {
+ if (preg_match('/^HTTP\/\S+\s+([1-9][0-9][0-9])\s+.*/', $hline, $matches)) {
+ $code = $matches[1];
+ return $code;
+ }
+ }
+ return false;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/config/mail.php b/config/mail.php
index d9c8712e46d6a5654aa412128780246e51ed2208..a31435925b75f8d97be10e59770702a7816cdfd1 100644
--- a/config/mail.php
+++ b/config/mail.php
@@ -57,7 +57,7 @@ return [
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
- 'name' => env('MAIL_FROM_NAME', 'Example'),
+ 'name' => env('MAIL_FROM_NAME', 'Submeta'),
],
/*
diff --git a/database/migrations/2020_02_05_123115_create_arquivos_table.php b/database/migrations/2020_02_05_123115_create_arquivos_table.php
index 5d7119d472ac7acd49fec662a761717ef558324b..26e583ccb37356fd5e6d9af97fbbfc252f534680 100644
--- a/database/migrations/2020_02_05_123115_create_arquivos_table.php
+++ b/database/migrations/2020_02_05_123115_create_arquivos_table.php
@@ -17,6 +17,7 @@ class CreateArquivosTable extends Migration
$table->bigIncrements('id');
$table->timestamps();
$table->string('nome');
+ $table->string('titulo');
$table->integer('versao')->nullable();
$table->boolean('versaoFinal')->nullable();
$table->date('data')->nullable();
diff --git a/database/migrations/2020_05_21_020029_create_plano_trabalhos_table.php b/database/migrations/2020_05_21_020029_create_plano_trabalhos_table.php
deleted file mode 100644
index 26e51d22894240fab1557fc426cd2b944bf12f50..0000000000000000000000000000000000000000
--- a/database/migrations/2020_05_21_020029_create_plano_trabalhos_table.php
+++ /dev/null
@@ -1,36 +0,0 @@
-bigIncrements('id');
- $table->string('titulo');
- $table->string('anexoPlanoTrabalho');
- $table->timestamps();
-
- $table->unsignedBigInteger('trabalho_id');
- $table->foreign('trabalho_id')->references('id')->on('trabalhos');
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('plano_trabalhos');
- }
-}
diff --git a/database/migrations/2020_05_23_054945_create_participantes_table.php b/database/migrations/2020_05_23_054945_create_participantes_table.php
index 8b559d61dc6908c3ac8ec7d60a507967d98a0ee1..b944cc5724483c807065b3500707f6ee55633d37 100644
--- a/database/migrations/2020_05_23_054945_create_participantes_table.php
+++ b/database/migrations/2020_05_23_054945_create_participantes_table.php
@@ -25,6 +25,8 @@ class CreateParticipantesTable extends Migration
$table->unsignedBigInteger('funcao_participante_id')->nullable();
$table->foreign('funcao_participante_id')->references('id')->on('funcao_participantes');
+
+ $table->softDeletes();
});
}
diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php
index 50441fb0b66d1167c2a89b26b0eebf2a06a95256..093006b1da49859c04a869657789dfe1edf96a6e 100644
--- a/resources/lang/en/validation.php
+++ b/resources/lang/en/validation.php
@@ -61,7 +61,7 @@ return [
'required_unless' => 'O :attribute é necessário a menos que :other esteja em :values.',
'required_with' => 'O campo é obrigatório.',
'required_with_all' => 'O campo :attribute é obrigatório quando :values estão presentes.',
- 'required_without' => 'O campo :attribute é obrigatório quando :values não está presente.',
+ 'required_without' => 'O campo é obrigatório.',
'required_without_all' => 'O campo :attribute é obrigatório quando nenhum destes estão presentes: :values.',
'same' => ':Attribute e :other devem ser iguais.',
'size' => [
diff --git a/resources/views/administrador/editais.blade.php b/resources/views/administrador/editais.blade.php
index 89788ff2611def70738589d1a515c75a81dc87ca..68b2f48510ea65248ec8866bc7a292a2b6dd4d2f 100644
--- a/resources/views/administrador/editais.blade.php
+++ b/resources/views/administrador/editais.blade.php
@@ -167,8 +167,8 @@