Commit 41fa880f authored by unknown's avatar unknown
Browse files

Merge branch 'master' of https://github.com/antonioDurval/submeta

parents 38cd807d 311314ac
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AreaTematica extends Model
{
protected $fillable = [
'nome',
];
public function trabalho(){
return $this->hasMany('App\Trabalho', 'area_tematica_id');
}
}
......@@ -32,4 +32,8 @@ class Arquivo extends Model
public function avaliadors(){
return $this->belongsToMany('App\Avaliador', 'avaliadors_plano_trabalho')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at');
}
public function avaliacao_relatorios(){
return $this->hasMany('App\AvaliacaoRelatorio', 'arquivo_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AvaliacaoRelatorio extends Model
{
protected $fillable = [
'tipo', 'comentario', 'nota', 'user_id', 'arquivo_id'
];
public function plano(){
return $this->belongsTo(Arquivo::class, 'arquivo_id', 'id');
}
public function user(){
return $this->belongsTo(User::class, 'user_id', 'id');
}
}
......@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\AvaliacaoRelatorio;
use App\Notificacao;
use App\Substituicao;
use Illuminate\Http\Request;
......@@ -111,7 +112,21 @@ class AdministradorController extends Controller
$avalSelecionadosId = $trabalho->avaliadors->pluck('id');
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
$trabalho->aval = $avalProjeto;
// Usuarios que possuem avaliações de relatório
//$avaliacoesRelatorio = [];->join('users','users.id','=','candidatos.user_id')
$AvalRelatParcial = [];
$AvalRelatFinal = [];
foreach($trabalho->participantes as $participante) {
$avals = AvaliacaoRelatorio::where('arquivo_id', $participante->planoTrabalho->id)->get();
foreach($avals as $aval){
if($aval->tipo == "Parcial"){
array_push($AvalRelatParcial,$aval);
}else{
array_push($AvalRelatFinal,$aval);
}
}
}
//
$grandeAreas = GrandeArea::orderBy('nome')->get();
$hoje = Carbon::today('America/Recife');
......@@ -124,7 +139,10 @@ class AdministradorController extends Controller
'substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,
'grandeAreas' => $grandeAreas,
'AvalRelatParcial' => $AvalRelatParcial,
'AvalRelatFinal' => $AvalRelatFinal,
'hoje' => $hoje,]);
}
public function showProjetos(Request $request){
......
<?php
namespace App\Http\Controllers;
use App\AreaTematica;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class AreaTematicaController extends Controller
{
public function destroy($id)
{
$areaTematica = AreaTematica::find($id);
$areaTematica->delete();
return redirect( route('grandearea.index') )->with(['mensagem' => 'Área Tematica excluida com sucesso']);
}
public function update(Request $request, $id)
{
$areaTematica = AreaTematica::find($id);
$areaTematica->nome = $request->nome;
$areaTematica->update();
return redirect( route('grandearea.index') )->with(['mensagem' => 'Área Tematica editada com sucesso']);
}
public function edit($id)
{
$areaTematica = AreaTematica::find($id);
return view('areaTematica.editar')->with(['areaTematica' => $areaTematica]);
}
public function create()
{
return view('areaTematica.create');
}
public function store(Request $request)
{
$validatedData = $request->validate([
'nome' => 'required',
]);
$areaTematica = new AreaTematica();
$areaTematica->nome = $request->nome;
$areaTematica->save();
return redirect( route('grandearea.index') )->with(['mensagem' => 'Área Tematica cadastrada com sucesso']);
}
}
<?php
namespace App\Http\Controllers;
use App\Arquivo;
use App\AvaliacaoRelatorio;
use App\Avaliador;
use App\Evento;
use App\Trabalho;
use App\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Auth;
class AvaliacaoRelatorioController extends Controller
{
public function create()
{
}
public function listarUser(Request $request){
$planos = Arquivo::where('trabalhoId',$request->trabalho_id)->get();
$avaliacoes = AvaliacaoRelatorio::where('user_id',$request->user_id)->get();
$trabalho = Trabalho::find($request->trabalho_id);
$evento = $trabalho->evento;
$hoje = \Carbon\Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
if($evento->dt_fimRelatorioParcial < $hoje && $hoje<$evento->dt_inicioRelatorioFinal){
$tipoRelatorio="Parcial";
}else{
$tipoRelatorio="Final";
}
return view('avaliacaoRelatorio.listar', ["avaliacoes"=>$avaliacoes,"trabalho"=>$trabalho,"planos"=>$planos,"evento"=>$evento,"tipoRelatorio"=>$tipoRelatorio]);
}
public function index(Request $request){
$avaliacoes = AvaliacaoRelatorio::where('user_id',Auth::user()->id)->get();
$hoje = \Carbon\Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('avaliacaoRelatorio.index', ["avaliacoes"=>$avaliacoes,"hoje"=>$hoje]);
}
public function listarProjeto(Request $request){
$planos = Arquivo::where('trabalhoId',$request->trabalho_id)->get();
$avaliacoes = AvaliacaoRelatorio::where('user_id',$request->user_id)->get();
$trabalho = Trabalho::find($request->trabalho_id);
return view('avaliacaoRelatorio.listar', ["avaliacoes"=>$avaliacoes,"trabalho"=>$trabalho,"planos"=>$planos]);
}
public function listarGeral(Request $request){
$planos = Arquivo::all();
$avaliacoes = AvaliacaoRelatorio::where('user_id',$request->user_id)->get();
return view('avaliacaoRelatorio.listar', ["avaliacoes"=>$avaliacoes,"planos"=>$planos]);
}
public function criar(Request $request){
$validatedData = $request->validate([
'nota' => ['required', 'integer',],
'comentario' => ['required'],
]);
$avaliacao = AvaliacaoRelatorio::find($request->avaliacao_id);
if($request->arquivo !=null){
$pasta = 'planoTrabalho/' . $request->plano_id . 'avaliacao/' . $request->avaliacao_id;
$avaliacao->arquivoAvaliacao = Storage::putFileAs($pasta, $request->arquivo, "AvaliacaoRelatorio.pdf");
}
$plano = Arquivo::find($request->plano_id);
$avaliacao->nota = $request->nota;
$avaliacao->comentario = $request->comentario;
$avaliacao->update();
$planos = Arquivo::where('trabalhoId',$request->trabalho_id)->get();
$avaliacoes = AvaliacaoRelatorio::where('user_id',$request->user_id)->get();
$trabalho = Trabalho::find($request->trabalho_id);
$evento = $trabalho->evento;
$hoje = \Carbon\Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
if($evento->dt_fimRelatorioParcial < $hoje && $hoje<$evento->dt_inicioRelatorioFinal){
$tipoRelatorio="Parcial";
}else{
$tipoRelatorio="Final";
}
return view('avaliacaoRelatorio.listar', ["avaliacoes"=>$avaliacoes,"trabalho"=>$trabalho,"planos"=>$planos,"evento"=>$evento,"tipoRelatorio"=>$tipoRelatorio,
'sucesso' => 'Avaliação do relatório '.$tipoRelatorio." do plano ".$plano->titulo.' realizada com sucesso.']);
}
public function atribuicaoAvaliador(Request $request){
$trabalho = Trabalho::find($request->trabalho_id);
foreach ($trabalho->participantes as $participante){
$avaliadoresId= $request->input('avaliadores_'.$participante->planoTrabalho->id.'_id');
// utilizado desta forma pois a versão do PHP 7.2 é preciso que o $array usado na função count($array) não pode ser um valor NULL.
$numeroDeItens = is_countable( $avaliadoresId ) ? count( $avaliadoresId ) : 0;
for ($i = 0; $i < $numeroDeItens; $i++){
$avaliacao = AvaliacaoRelatorio::create([
'tipo'=>$request->tipo_relatorio,
'comentario'=>'',
'nota'=>null,
'user_id'=>$avaliadoresId[$i],
'arquivo_id'=>$participante->planoTrabalho->id,
]);
$avaliacao->save();
if(Avaliador::where('user_id',$avaliadoresId[$i])->get()->count()==0){
$userTemp = User::find($avaliadoresId[$i]);
if($userTemp->instituicao==null || $userTemp->instituicao == "UFAPE" || $userTemp->instituicao == "Universidade Federal do Agreste de Pernambuco"){
$tipoAvaliador = "Interno";
}else{
$tipoAvaliador = "Externo";
}
$avaliador = new Avaliador();
$avaliador->tipo = $tipoAvaliador;
$avaliador->user_id = $avaliadoresId[$i];
$avaliador->save();
}
}
}
return redirect()->back();
}
}
......@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\AreaTematica;
use Illuminate\Http\Request;
use App\GrandeArea;
use App\Area;
......@@ -16,7 +17,8 @@ class GrandeAreaController extends Controller
public function index()
{
$grandesAreas = GrandeArea::orderBy('nome')->get();
return view('naturezas.grandeArea.index')->with(['grandesAreas' => $grandesAreas]);
$areasTematicas = AreaTematica::orderBy('nome')->get();
return view('naturezas.grandeArea.index')->with(['grandesAreas' => $grandesAreas, 'areasTematicas' => $areasTematicas]);
}
/**
......
......@@ -9,6 +9,7 @@ use Auth;
use App\Area;
use App\User;
use App\Evento;
use App\AreaTematica;
use App\Arquivo;
use App\Coautor;
use App\Revisor;
......@@ -88,6 +89,7 @@ class TrabalhoController extends Controller
{
$edital = Evento::find($id);
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::orderBy('nome')->get();
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
......@@ -108,6 +110,7 @@ class TrabalhoController extends Controller
'rascunho' => $rascunho,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
]);
}
......@@ -398,6 +401,7 @@ class TrabalhoController extends Controller
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$areas = Area::all();
$subareas = Subarea::all();
$funcaoParticipantes = FuncaoParticipantes::all();
......@@ -420,6 +424,7 @@ class TrabalhoController extends Controller
'arquivos' => $arquivos,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
]);
}
......
......@@ -38,6 +38,7 @@ class Trabalho extends Model
'coordenador_id',
'proponente_id',
'pivot',
'area_tematica_id',
];
......@@ -64,6 +65,10 @@ class Trabalho extends Model
return $this->belongsTo('App\SubArea');
}
public function areaTematica(){
return $this->belongsTo('App\AreaTematica');
}
public function autor(){
return $this->belongsTo('App\User', 'autorId');
}
......
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AvaliacaoRelatorio extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('avaliacao_relatorios', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('user_id');
$table->integer('arquivo_id');
$table->integer('nota')->nullable();
$table->text('comentario')->nullable();
$table->string('arquivoAvaliacao')->nullable();
$table->enum('tipo', ['Parcial', 'Final']);
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('arquivo_id')->references('id')->on('arquivos');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('avaliacao_relatorios');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateAreaTematicasTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('area_tematicas', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('nome');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('area_tematicas');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddAreaTematicaToTrabalhosTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('trabalhos', function (Blueprint $table) {
$table->integer('area_tematica_id')->nullable();
$table->foreign('area_tematica_id')->references('id')->on('area_tematicas');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('trabalhos', function (Blueprint $table) {
//
});
}
}
<?php
use Illuminate\Database\Seeder;
class AreaTematicaSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('area_tematicas')->insert([
'nome' => 'Erradicação da Pobreza'
]);
DB::table('area_tematicas')->insert([
'nome' => 'Fome zero e agricultura sustentável'
]);
DB::table('area_tematicas')->insert([
'nome' => 'Saúde e bem-estar'
]);
DB::table('area_tematicas')->insert([
'nome' => 'Educação de qualidade'
]);
DB::table('area_tematicas')->insert([
'nome' => 'Igualdade de gênero'
]);
}
}
......@@ -25,6 +25,7 @@ class DatabaseSeeder extends Seeder
$this->call(NaturezaSeeder::class);
$this->call(RecomendacaoSeeder::class);
$this->call(AvaliadorSeeder::class);
$this->call(AreaTematicaSeeder::class);
// $this->call(UsersTableSeeder::class);
......
......@@ -49,7 +49,7 @@
@if($user->tipo != "avaliador")
<td>{{ $user->tipo }}</td>
@else
<td>{{ $user->tipo }} - {{ $user->avaliadors->tipo }} </td>
<td>{{ $user->tipo }} - @if(isset($user->avaliadors->tipo)){{ $user->avaliadors->tipo }} @else Indefinido @endif </td>
@endif
<td>{{ $user->creaet_at }}</td>
......
@extends('layouts.app')
@section('content')
<div class="container" style="margin-top: 50px; margin-bottom: 305px ">
<div class="row" >
<div class="col-sm-12">
<h2 style="color: rgb(0, 140, 255);">{{ __('Criar uma nova área temática') }}</h2>
</div>
</div>
<div class="row">
<form method="POST" action="{{ route('areaTematica.salvar')}}">
@csrf
<div class="col-sm-12">
<label for="nome" class="col-form-label" style="color: rgb(0, 140, 255);">{{ __('Nome') }}<span style="color: red;"> *</span></label>
<input id="nome" type="text" class="form-control @error('nome') is-invalid @enderror" name="nome" value="{{ old('nome') }}" required autocomplete="nome" autofocus >
@error('nome')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<button type="submit" class="btn btn-info" style="position:relative;top:10px;">{{ __('Salvar') }}</button>
</div>
</form>
</div>
</div>
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('content')
<div class="container" style="margin-top: 50px; margin-bottom: 305px ">
<div class="row" >
<div class="col-sm-12">
<h2 style="color: rgb(0, 140, 255);">{{ __('Editar uma área temática') }}</h2>
</div>
</div>
<div class="row">
<form method="POST" action="{{ route('areaTematica.atualizar', ['id' => $areaTematica->id])}}">
@csrf
<div class="col-sm-12">
<label for="nome" class="col-form-label" style="color: rgb(0, 140, 255);">{{ __('Nome') }}<span style="color: red;"> *</span></label>
<input id="nome" type="text" class="form-control @error('nome') is-invalid @enderror" name="nome" value="{{ $areaTematica->nome }}" required autocomplete="nome" autofocus>
@error('nome')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<button type="submit" class="btn btn-info" style="position:relative;top:10px;">{{ __('Salvar') }}</button>
</div>
</form>
</div>
</div>
@endsection
\ No newline at end of file
@php $arquivo = \App\Arquivo::find($aval->arquivo_id); @endphp
<div class="container-fluid">
<div class="row">
<h5><b>Discente:</b>
{{\App\Participante::find($arquivo->participanteId)->user->name}}</h5>
</div>
<div class="row">
<h5><b>Plano:</b> {{$arquivo->titulo}}</h5>
</div>
<div class="row">
<div class="col-sm-1 padEsquerda">
<label for="lattes" class="col-form-label font-tam"
style="font-weight: bold">{{ __('Nota: ') }}</label>
</div>
<div class="col-sm-6 text-center padEsquerda">
<input class="form-control" name="nota" type="number"
style="width: 60px" @if(isset($aval)) value="{{$aval->nota}}" @endif disabled>
</div>
</div>
<div class="row">
<div class="col-sm-12 padEsquerda">
<label for="lattes" class="col-form-label font-tam"
style="font-weight: bold">{{ __('Comentário: ') }}</label>
</div>
</div>
<div class="row">
<div class="col-sm-12 padEsquerda">
<textarea class="col-md-12" minlength="20" id="comentario"
name="comentario"
style="border-radius:5px 5px 0 0;height: 71px;"
disabled>@if(isset($aval)){{$aval->comentario}}</textarea>@else
</textarea>@endif
</div>
</div>
<div class="row">
<label for="lattes" class="col-form-label font-tam"
style="font-weight: bold;margin-right: 5px;">{{ __('Arquivo: ') }}</label>
@if(isset($aval))
@if($aval->arquivoAvaliacao != null)
<a href="{{route('download', ['file' => $aval->arquivoAvaliacao])}}" target="_new" >
<img class="" src="{{asset('img/icons/pdf.ico')}}" style="width:40px">
</a>
@endif
@endif
</div>
</div>
<style>
.padEsquerda {
padding-left: 0px
}
</style>
\ No newline at end of file
@extends('layouts.app')
@section('content')
<div class="container" style="margin-bottom: 295px" >
@if(isset($mensagem))
<div class="col-sm-12">
<br>
<div class="alert alert-success">
<p>{{ $mensagem }}</p>
</div>
</div>
@endif
@if(session('mensagem'))
<div class="col-sm-12">
<br>
<div class="alert alert-success">
<p>{{session('mensagem')}}</p>
</div>
</div>
@endif
<div class="row justify-content-center" style="margin-top: 3rem;">
<div class="col-md-12" style="margin-bottom: -3rem">
<div class="card card_conteudo shadow bg-white" style="border-radius:12px; border-width:0px;">
<div class="card-header" style="border-top-left-radius: 12px; border-top-right-radius: 12px; background-color: #fff">
<div class="d-flex justify-content-between align-items-center" style="margin-top: 9px; margin-bottom:-1rem">
<div class="bottomVoltar" style="margin-top: -20px">
<a href="javascript:history.back()" class="btn btn-secondary" style=""><img src="{{asset('img/icons/logo_esquerda.png')}}" alt="" width="15px"></a>
</div>
<div class="form-group">
<h5 class="card-title mb-0" style="font-size:25px; font-family:Arial, Helvetica, sans-serif; color:#1492E6">Avaliações de Planos de Trabalhos</h5>
</div>
<div style="margin-top: -2rem">
<div class="form-group">
<div style="margin-top:30px;">
{{-- Pesquisar--}}
</div>
</div>
</div>
</div>
</div>
<div class="card-body" >
<table class="table table-bordered table-hover" style=" white-space: nowrap; border-radius:10px; margin-bottom:0px">
<thead>
<tr class="text-center">
<th scope="col">Nome do Evento</th>
<th scope="col">Nome do Projeto</th>
<th scope="col">Nome do plano</th>
<th scope="col">Discente</th>
<th scope="col">Avaliar</th>
</tr>
</thead>
<tbody>
@foreach ($avaliacoes as $avaliacao)
<tr class="text-center">
<td style="max-width:100px; overflow-x:hidden; text-overflow:ellipsis">{{ $avaliacao->plano->trabalho->evento->nome }}</td>
<td style="max-width:100px; overflow-x:hidden; text-overflow:ellipsis">{{ $avaliacao->plano->trabalho->titulo }}</td>
<td style="max-width:100px; overflow-x:hidden; text-overflow:ellipsis">{{ $avaliacao->plano->titulo }}</td>
<td style="max-width:100px; overflow-x:hidden; text-overflow:ellipsis">{{ $avaliacao->plano->participante->user->name }}</td>
<td>
<div class="row justify-content-center">
<form action="{{route('planos.avaliacoesUser')}}" method="POST">
@csrf
<input type="hidden" name="trabalho_id" value="{{ $avaliacao->plano->trabalho->id }}">
<input type="hidden" name="user_id" value="{{Auth::user()->id}}">
<button type="submit" class="btn btn-primary mr-2 ml-2" >
Avaliar
</button>
</form>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script>
</script>
@endsection
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