Commit d992293f authored by carlvercosaa's avatar carlvercosaa
Browse files

Primeiro commit

parent 07df0ab5
Pipeline #24 canceled with stages
...@@ -25,6 +25,8 @@ use Illuminate\Support\Facades\Auth; ...@@ -25,6 +25,8 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use App\Endereco; use App\Endereco;
use App\Mail\EventoCriado; use App\Mail\EventoCriado;
use App\ObjetivoDeDesenvolvimentoSustentavel;
use App\Meta;
use geekcom\ValidatorDocs\Rules\Ddd; use geekcom\ValidatorDocs\Rules\Ddd;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use ZipArchive; use ZipArchive;
...@@ -71,9 +73,10 @@ class EventoController extends Controller ...@@ -71,9 +73,10 @@ class EventoController extends Controller
$coordenadors = CoordenadorComissao::with('user')->get(); $coordenadors = CoordenadorComissao::with('user')->get();
$naturezas = Natureza::orderBy('nome')->get(); $naturezas = Natureza::orderBy('nome')->get();
$yesterday = Carbon::yesterday('America/Recife'); $yesterday = Carbon::yesterday('America/Recife');
$ods = ObjetivoDeDesenvolvimentoSustentavel::with('metas')->get();
$yesterday = $yesterday->toDateString(); $yesterday = $yesterday->toDateString();
return view('evento.criarEvento', ['coordenadors' => $coordenadors, 'naturezas' => $naturezas, 'ontem' => $yesterday]); return view('evento.criarEvento', ['coordenadors' => $coordenadors, 'naturezas' => $naturezas, 'ontem' => $yesterday, 'ods' => $ods]);
} }
/** /**
...@@ -770,6 +773,22 @@ class EventoController extends Controller ...@@ -770,6 +773,22 @@ class EventoController extends Controller
return response()->download($path); return response()->download($path);
} }
public function getMetas($odsId)
{
{
try {
$ods = ObjetivoDeDesenvolvimentoSustentavel::with('metas')->findOrFail($odsId);
$response = [
'ods' => $ods->nome,
'metas' => $ods->metas,
];
return response()->json($response);
} catch (\Exception $e) {
return response()->json(['error' => 'Erro ao carregar as metas'], 500);
}
}
}
// public function baixarModelos($id) { // public function baixarModelos($id) {
// $evento = Evento::find($id); // $evento = Evento::find($id);
......
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Meta extends Model
{
protected $fillable = ['objetivo_de_desenvolvimento_sustentavel_id', 'nome', 'descricao'];
public function ods()
{
return $this->belongsTo('App\ObjetivoDeDesenvolvimentoSustentavel', 'id');
}
}
...@@ -13,4 +13,9 @@ class ObjetivoDeDesenvolvimentoSustentavel extends Model ...@@ -13,4 +13,9 @@ class ObjetivoDeDesenvolvimentoSustentavel extends Model
public function trabalhos(){ public function trabalhos(){
return $this->belongsToMany('App\Trabalho', 'objetivo_de_desenvolvimento_sustentavel_trabalhos', 'objetivo_de_desenvolvimento_sustentavel_id'); return $this->belongsToMany('App\Trabalho', 'objetivo_de_desenvolvimento_sustentavel_trabalhos', 'objetivo_de_desenvolvimento_sustentavel_id');
} }
public function metas()
{
return $this->hasMany('App\Meta', 'objetivo_de_desenvolvimento_sustentavel_id');
}
} }
This source diff could not be displayed because it is too large. You can view the blob instead.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMetasTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('metas', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('objetivo_de_desenvolvimento_sustentavel_id');
$table->foreign('objetivo_de_desenvolvimento_sustentavel_id')->references('id')->on('objetivo_de_desenvolvimento_sustentavels');
$table->string('nome');
$table->text('descricao');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('metas');
}
}
...@@ -35,5 +35,6 @@ class DatabaseSeeder extends Seeder ...@@ -35,5 +35,6 @@ class DatabaseSeeder extends Seeder
$this->call(AvaliacaoTrabalhosSeeder::class); $this->call(AvaliacaoTrabalhosSeeder::class);
$this->call(AvaliacaoRelatorioSeeder::class); $this->call(AvaliacaoRelatorioSeeder::class);
$this->call(OdsSeeder::class); $this->call(OdsSeeder::class);
$this->call(MetaSeeder::class);
} }
} }
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class MetaSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// METAS ODS 1
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 1,
'nome' => '1.1',
'descricao' => 'Até 2030, erradicar a pobreza extrema para todas as pessoas em todos os lugares, atualmente medida como pessoas vivendo com menos de US$ 1,90 por dia',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 1,
'nome' => '1.2',
'descricao' => 'Até 2030, reduzir pelo menos à metade a proporção de homens, mulheres e crianças, de todas as idades, que vivem na pobreza, em todas as suas dimensões, de acordo com as definições nacionais',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 1,
'nome' => '1.3',
'descricao' => 'Implementar, em nível nacional, medidas e sistemas de proteção social adequados, para todos, incluindo pisos, e até 2030 atingir a cobertura substancial dos pobres e vulneráveis',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 1,
'nome' => '1.4',
'descricao' => 'Até 2030, garantir que todos os homens e mulheres, particularmente os pobres e vulneráveis, tenham direitos iguais aos recursos econômicos, bem como o acesso a serviços básicos, propriedade e controle sobre a terra e outras formas de propriedade, herança, recursos naturais, novas tecnologias apropriadas e serviços financeiros, incluindo microfinanças',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 1,
'nome' => '1.5',
'descricao' => 'Até 2030, construir a resiliência dos pobres e daqueles em situação de vulnerabilidade, e reduzir a exposição e vulnerabilidade destes a eventos extremos relacionados com o clima e outros choques e desastres econômicos, sociais e ambientais',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 1,
'nome' => '1.a',
'descricao' => 'Garantir uma mobilização significativa de recursos a partir de uma variedade de fontes, inclusive por meio do reforço da cooperação para o desenvolvimento, para proporcionar meios adequados e previsíveis para que os países em desenvolvimento, em particular os países menos desenvolvidos, implementem programas e políticas para acabar com a pobreza em todas as suas dimensões',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 1,
'nome' => '1.b',
'descricao' => 'Criar marcos políticos sólidos em níveis nacional, regional e internacional, com base em estratégias de desenvolvimento a favor dos pobres e sensíveis a gênero, para apoiar investimentos acelerados nas ações de erradicação da pobreza',
]);
// METAS ODS 2
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 2,
'nome' => '2.1',
'descricao' => 'Até 2030, acabar com a fome e garantir o acesso de todas as pessoas, em particular os pobres e pessoas em situações vulneráveis, incluindo crianças, a alimentos seguros, nutritivos e suficientes durante todo o ano',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 2,
'nome' => '2.2',
'descricao' => 'Até 2030, acabar com todas as formas de desnutrição, incluindo atingir, até 2025, as metas acordadas internacionalmente sobre nanismo e caquexia em crianças menores de cinco anos de idade, e atender às necessidades nutricionais dos adolescentes, mulheres grávidas e lactantes e pessoas idosas',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 2,
'nome' => '2.3',
'descricao' => 'Até 2030, dobrar a produtividade agrícola e a renda dos pequenos produtores de alimentos, particularmente das mulheres, povos indígenas, agricultores familiares, pastores e pescadores, inclusive por meio de acesso seguro e igual à terra, outros recursos produtivos e insumos, conhecimento, serviços financeiros, mercados e oportunidades de agregação de valor e de emprego não agrícola',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 2,
'nome' => '2.4',
'descricao' => 'Até 2030, garantir sistemas sustentáveis de produção de alimentos e implementar práticas agrícolas resilientes, que aumentem a produtividade e a produção, que ajudem a manter os ecossistemas, que fortaleçam a capacidade de adaptação às mudanças climáticas, às condições meteorológicas extremas, secas, inundações e outros desastres, e que melhorem progressivamente a qualidade da terra e do solo',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 2,
'nome' => '2.5',
'descricao' => 'Até 2020, manter a diversidade genética de sementes, plantas cultivadas, animais de criação e domesticados e suas respectivas espécies selvagens, inclusive por meio de bancos de sementes e plantas diversificados e bem geridos em nível nacional, regional e internacional, e garantir o acesso e a repartição justa e equitativa dos benefícios decorrentes da utilização dos recursos genéticos e conhecimentos tradicionais associados, como acordado internacionalmente',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 2,
'nome' => '2.a',
'descricao' => 'Aumentar o investimento, inclusive via o reforço da cooperação internacional, em infraestrutura rural, pesquisa e extensão de serviços agrícolas, desenvolvimento de tecnologia, e os bancos de genes de plantas e animais, para aumentar a capacidade de produção agrícola nos países em desenvolvimento, em particular nos países menos desenvolvidos',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 2,
'nome' => '2.b',
'descricao' => 'Corrigir e prevenir as restrições ao comércio e distorções nos mercados agrícolas mundiais, incluindo a eliminação paralela de todas as formas de subsídios à exportação e todas as medidas de exportação com efeito equivalente, de acordo com o mandato da Rodada de Desenvolvimento de Doha',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 2,
'nome' => '2.c',
'descricao' => 'Adotar medidas para garantir o funcionamento adequado dos mercados de commodities de alimentos e seus derivados, e facilitar o acesso oportuno à informação de mercado, inclusive sobre as reservas de alimentos, a fim de ajudar a limitar a volatilidade extrema dos preços dos alimentos',
]);
// METAS ODS 3
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.1',
'descricao' => 'Até 2030, reduzir a taxa de mortalidade materna global para menos de 70 mortes por 100.000 nascidos vivos',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.2',
'descricao' => 'Até 2030, acabar com as mortes evitáveis de recém-nascidos e crianças menores de 5 anos, com todos os países objetivando reduzir a mortalidade neonatal para pelo menos 12 por 1.000 nascidos vivos e a mortalidade de crianças menores de 5 anos para pelo menos 25 por 1.000 nascidos vivos',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.3',
'descricao' => 'Até 2030, acabar com as epidemias de AIDS, tuberculose, malária e doenças tropicais negligenciadas, e combater a hepatite, doenças transmitidas pela água, e outras doenças transmissíveis',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.4',
'descricao' => 'Até 2030, reduzir em um terço a mortalidade prematura por doenças não transmissíveis via prevenção e tratamento, e promover a saúde mental e o bem-estar',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.5',
'descricao' => 'Reforçar a prevenção e o tratamento do abuso de substâncias, incluindo o abuso de drogas entorpecentes e uso nocivo do álcool',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.6',
'descricao' => 'Até 2020, reduzir pela metade as mortes e os ferimentos globais por acidentes em estradas',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.7',
'descricao' => 'Até 2030, assegurar o acesso universal aos serviços de saúde sexual e reprodutiva, incluindo o planejamento familiar, informação e educação, bem como a integração da saúde reprodutiva em estratégias e programas nacionais',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.8',
'descricao' => 'Atingir a cobertura universal de saúde, incluindo a proteção do risco financeiro, o acesso a serviços de saúde essenciais de qualidade e o acesso a medicamentos e vacinas essenciais seguros, eficazes, de qualidade e a preços acessíveis para todos',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.9',
'descricao' => 'Até 2030, reduzir substancialmente o número de mortes e doenças por produtos químicos perigosos, contaminação e poluição do ar e água do solo',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.a',
'descricao' => 'Fortalecer a implementação da Convenção-Quadro para o Controle do Tabaco em todos os países, conforme apropriado',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.b',
'descricao' => 'Apoiar a pesquisa e o desenvolvimento de vacinas e medicamentos para as doenças transmissíveis e não transmissíveis, que afetam principalmente os países em desenvolvimento, proporcionar o acesso a medicamentos e vacinas essenciais a preços acessíveis, de acordo com a Declaração de Doha, que afirma o direito dos países em desenvolvimento de utilizarem plenamente as disposições do acordo TRIPS sobre flexibilidades para proteger a saúde pública e, em particular, proporcionar o acesso a medicamentos para todos',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.c',
'descricao' => 'Aumentar substancialmente o financiamento da saúde e o recrutamento, desenvolvimento e formação, e retenção do pessoal de saúde nos países em desenvolvimento, especialmente nos países menos desenvolvidos e nos pequenos Estados insulares em desenvolvimento',
]);
DB::table('metas')->insert([
'objetivo_de_desenvolvimento_sustentavel_id' => 3,
'nome' => '3.d',
'descricao' => 'Reforçar a capacidade de todos os países, particularmente os países em desenvolvimento, para o alerta precoce, redução de riscos e gerenciamento de riscos nacionais e globais de saúde',
]);
}
}
\ No newline at end of file
...@@ -5,6 +5,25 @@ ...@@ -5,6 +5,25 @@
<h1>Novo Edital</h1> <h1>Novo Edital</h1>
</div> </div>
<!-- Tabs -->
<div>
<ul class="nav nav-tabs">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="edital-tab" data-bs-toggle="tab" data-bs-target="#edital-container" type="button" role="tab" aria-controls="edital-container" arial-selected="true"> Edital </button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="ods-tab" data-bs-toggle="tab" data-bs-target="#ods-container" type="button" role="tab" aria-controls="ods-container" arial-selected="false"> ODS`S </button>
</li>
</ul>
</div>
<!-- Panels -->
<div id="tab-containers" class="tab-content">
<div id="edital-container" class="tab-pane fade show active" role="tabpanel" aria-labelledby="edital-tab">
<form action="{{route('evento.criar')}}" method="POST" enctype="multipart/form-data"> <form action="{{route('evento.criar')}}" method="POST" enctype="multipart/form-data">
@csrf @csrf
...@@ -547,6 +566,43 @@ ...@@ -547,6 +566,43 @@
</div> </div>
</div> </div>
</form> </form>
</div>
<div id="ods-container" class="tab-pane fade" role="tabpanel" aria-labelledby="ods-tab">
<head>
<title>ODS Form</title>
</head>
<body>
<div class="row subtitulo">
<div class="col-sm-12">
<p>ODS</p>
</div>
</div>
<div class="container">
<div class="form-group">
@foreach($ods as $ods)
<div>
<input type="checkbox" name="ods[]" value="{{ $ods->id }}" class="form-check-input">
<label class="form-check-label" for="ods{{ $ods->id }}">{{ $ods->nome }}</label>
</div>
@endforeach
</div>
<div id="metas-container" class="row"></div>
</div>
<div>
<button type="submit" class="btn btn-primary botao-form" style="width:100%">
{{ __('Enviar') }}
</button>
</div>
</div>
</div>
</div> </div>
...@@ -747,6 +803,72 @@ ...@@ -747,6 +803,72 @@
} }
} }
// Form dinâmico da ODS
$(document).ready(function(){
var selectedOds = [];
$('.form-check-input').change(function(){
selectedOds = [];
$('#metas-container').empty();
$('.form-check-input:checked').each(function(){
selectedOds.push($(this).val());
});
if(selectedOds.length > 3){
alert('Você só pode selecionar até 3 ODS.');
$(this).prop('checked', false);
return;
}
selectedOds.forEach(function(odsId){
$.ajax({
url: 'metas/' + odsId,
method: 'GET',
success: function(response){
var metaOptions = '<hr><div class="col-12"><div class="row subtitulo"><div class="col-sm-12"><p>Metas para ' + response.ods + '</p></div></div></div></div>' + '<div class="form-group">';
response.metas.forEach(function(meta){
metaOptions += '<div class=" card form-check meta-item" style="margin-bottom : 1 rem "><div class="card-body">' +
'<input type="checkbox" name="metas[' + odsId + '][]" value="' + meta.id + '" class="form-check-input meta-checkbox" id="meta' + meta.id + '">' +
'<label class="form-check-label" for="meta' + meta.id + '">' + meta.nome + '</label>' +
'<p class="form-text text-muted">' + meta.descricao + '</p>' +
'</div></div>';
});
metaOptions += '</div>'
$('#metas-container').append(metaOptions);
},
error: function(jqXHR, textStatus, errorThrown){
console.error('Erro ao carregar as metas:', textStatus, errorThrown);
alert('Erro ao carregar as metas.');
}
});
});
});
$(document).on('change', '.form-check-input', function(){
var metaCheckboxes = $('input[name^="metas"]');
var selectedMetas = {};
metaCheckboxes.each(function(){
var odsId = $(this).attr('name').match(/metas\[(\d+)\]/)[1];
if(!selectedMetas[odsId]) selectedMetas[odsId] = [];
if($(this).prop('checked')) selectedMetas[odsId].push($(this).val());
});
for(var odsId in selectedMetas){
if(selectedMetas[odsId].length > 3){
alert('Você só pode selecionar até 3 metas por ODS.');
$(this).prop('checked', false);
return;
}
}
});
});
new MultiSelectTag('metas'); // id
window.onload = showDocumentoExtra(); window.onload = showDocumentoExtra();
</script> </script>
......
...@@ -23,6 +23,20 @@ ...@@ -23,6 +23,20 @@
<link href="{{ asset('css/app.css') }}" rel="stylesheet"> <link href="{{ asset('css/app.css') }}" rel="stylesheet">
<link href="{{ asset('css/layout.css') }}" rel="stylesheet"> <link href="{{ asset('css/layout.css') }}" rel="stylesheet">
<!-- Select2 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/habibmhamadi/multi-select-tag@3.0.1/dist/css/multi-select-tag.css">
<script src="https://cdn.jsdelivr.net/gh/habibmhamadi/multi-select-tag@3.0.1/dist/js/multi-select-tag.js"></script>
<!-- tabs -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Ajax -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
@yield('styles') @yield('styles')
...@@ -313,6 +327,9 @@ ...@@ -313,6 +327,9 @@
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
} }
}); });
$(document).ready(function() {
$('.js-example-basic-multiple').select2();
});
$(document).ready(function() { $(document).ready(function() {
$("#dropdown-login").on('click', function(event){ $("#dropdown-login").on('click', function(event){
event.stopPropagation(); event.stopPropagation();
......
<?php <?php
use App\Http\Controllers\EventoController;
use App\Notifications\SubmissaoNotification; use App\Notifications\SubmissaoNotification;
use App\Trabalho; use App\Trabalho;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
...@@ -335,6 +336,7 @@ Route::prefix('evento')->name('evento.')->group(function () { ...@@ -335,6 +336,7 @@ Route::prefix('evento')->name('evento.')->group(function () {
Route::post('/editar/{id}', 'EventoController@update')->name('update')->middleware('checkRoles:coordenador,administrador'); Route::post('/editar/{id}', 'EventoController@update')->name('update')->middleware('checkRoles:coordenador,administrador');
Route::post('/setResumo', 'EventoController@setResumo')->name('setResumo')->middleware('checkAdministrador'); Route::post('/setResumo', 'EventoController@setResumo')->name('setResumo')->middleware('checkAdministrador');
Route::post('/setFoto', 'EventoController@setFotoEvento')->name('setFotoEvento')->middleware('checkAdministrador'); Route::post('/setFoto', 'EventoController@setFotoEvento')->name('setFotoEvento')->middleware('checkAdministrador');
Route::get('/metas/{odsId}', 'EventoController@getMetas')->name('getMetas')->middleware('checkAdministrador');;
}); });
//########## Rotas de administrador responsavel (Reitor ou pro-reitor)######## //########## Rotas de administrador responsavel (Reitor ou pro-reitor)########
......
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