<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Generator\UrlGenerator;
use App\Entity\Postulacion;
use App\Entity\PcPuntoCultura;
use App\Repository\PostulacionRepository;
use App\Form\PostulacionType;
use App\Entity\EvaluacionIndividual;
use App\Service\EvaluacionService;
use App\Repository\EvaluacionIndividualRepository;
use App\Form\AdmisibilidadType;
use App\Form\EvaluacionIndividualType;
use App\Form\EvaluacionColectivaType;
use App\Entity\User;
use App\Repository\UserRepository;
use App\Entity\ActividadComunitaria;
use App\Repository\ActividadComunitariaRepository;
use App\Entity\ActividadTipo;
use App\Repository\ActividadTipoRepository;
use App\Entity\ParticipacionComunitaria;
use App\Repository\ParticipacionComunitariaRepository;
use App\Service\PostulacionService;
use App\Entity\OrganizacionVinculo;
use App\Repository\OrganizacionVinculoRepository;
use App\Entity\DescripcionActividadOrganizacion;
use App\Repository\DescripcionActividadOrganizacionRepository;
use App\Entity\DocumentoFundamentaDesarrollaActividad;
use App\Repository\DocumentoFundamentaDesarrollaActividadRepository;
use DateTime;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use App\Repository\ConvocatoriaRepository;
use App\Repository\RegionRepository;
use App\Service\AdminService;
use App\Form\AdministracionPostulacionType;
use App\Repository\ParametroRepository;
use App\Repository\PcPuntoCulturaRepository;
use App\Service\RacService;
/**
* @Route("/admin/eval", name="eval_")
*/
class EvaluacionController extends AbstractController
{
#[Route('/', name: 'default')]
public function default(
Request $request
): Response
{
//echo "aca voy";
//die;
}
/* --- Admisibilidad --- */
#[Route('/admisor/home', name: 'admisor_home')]
public function admisorHome(
Request $request,
EvaluacionService $evaluacionService,
ConvocatoriaRepository $convocatoriaRepository,
RegionRepository $regionRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_EVALUADOR_ADM')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
$convocatorias = $convocatoriaRepository->findAll();
$regiones = [];
if($userActual->isSuperAdmin()){
$regiones = $regionRepository->findAll();
} else {
$regiones = $userActual->getRegiones();
}
$regionesLabel = [];
foreach($regiones as $regionOb){
$regionesLabel[] = $regionOb->getNombre();
}
//Paginacion
$page = $request->query->getInt('page', 1);
$limit = 10;
$filters = [
'id' => $request->query->get('id'),
'organizacionName' => $request->query->get('organizacionName'),
'rut' => $request->query->get('rut'),
'racRegion' => $request->query->get('racRegion'),
'convocatoria' => $request->query->get('convocatoria'),
'evaluacion' => $request->query->get('evaluacion'),
'estado' => $request->query->get('estado'),
];
$postulaciones = $evaluacionService->getPostulacionesEnviadasByRegionPaginatedWithFiltersAdmisibilidad(
$regionesLabel,
$userActual->isSuperAdmin(),
$page,
$limit,
$filters,
$userActual->getId()
);
return $this->render('evaluacion/admisor-menu-home.html.twig', [
'postulaciones'=>$postulaciones,
'filters'=>$filters,
'regiones'=> $regiones,
'convocatorias' => $convocatorias,
]);
}
#[Route('/admisor/admisibilidad/{id}', name: 'admisor_admisiblidad')]
public function admisibilidadRealizar(
Request $request,
Int $id,
EvaluacionService $evaluacionService,
PostulacionRepository $postulacionRepository,
AdminService $adminService
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_EVALUADOR_ADM')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
$menuAdmin = $adminService->getMenuAdmin($userActual->getRoles());
$postulacion = $evaluacionService->getPostulacionForAdmisibilidadEvaluar($id);
$form = $this->createForm(AdmisibilidadType::class, $postulacion);
if ($request->isMethod('POST')) {
//echo "guardando...<br>";
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$dataForm = $request->request->all();
$finalizarAdmisibilidad=false;
//Validacion
$isDataValida=true;
$msgDataValidacion="";
if (!(isset($dataForm["admisibilidad"]["admisibilidad_isAdmisible"]))){
$isDataValida=false;
$msgDataValidacion="Admisiblidad no guardada. Debe indicar (Si o No) es admisible";
}
if ($isDataValida){
//$postulacion->setAdmisibilidadObservacionesPub($dataForm["admisibilidad"]["admisibilidad_observacionesPub"]);
$save_finalizar=false;
/*if(isset($dataForm["admisibilidad"]["save"])){
echo "save";
}*/
if(isset($dataForm["admisibilidad"]["save_finalizar"])){
$save_finalizar=true;
}
$now = new DateTime();
$postulacion->setAdmisibilidadAt($now);
$userActual = $this->getUser();
$postulacion->setAdmisibilidadBy($userActual);
if($save_finalizar){
$postulacion->setAdmisibilidadIsFinalizada(true);
}
$postulacionRepository->add($postulacion);
if($save_finalizar){
$this->addFlash('success', 'Admisiblidad guardada y finalizada exitosamente');
return $this->redirect($this->generateUrl('eval_admisor_home'));
}else{
$this->addFlash('success', 'Admisiblidad guardada exitosamente');
//return $this->redirect($this->generateUrl('eval_admisor_home'));
}
}else{
$this->addFlash('danger', $msgDataValidacion);
}
} catch (\Exception $e) {
$this->addFlash('danger', 'Ocurrió un error inesperado' . $e->getMessage());
return $this->redirectToRoute('eval_admisor_admisiblidad', ['id' => $id]);
}
}else{
foreach ($form->getErrors() as $error) {
$message[] = $error->getMessage();
$this->addFlash('danger', $error->getMessage());
}
//throw new HttpException(Codes::HTTP_BAD_REQUEST, implode("\n", $message));
}
}
return $this->renderForm('evaluacion/admisor-menu-admisibilidad.html.twig', [
'postulacion'=>$postulacion,
'form' => $form,
'menuAdmin' => $menuAdmin,
]);
}
/* --- Evaluacion Individual --- */
#[Route('/evaluador-ind/home', name: 'evaluador_ind_home')]
public function evaluadorIndHome(
Request $request,
EvaluacionService $evaluacionService,
ConvocatoriaRepository $convocatoriaRepository,
RegionRepository $regionRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_EVALUADOR_IND')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
$convocatorias = $convocatoriaRepository->findAll();
$regiones = [];
if($userActual->isSuperAdmin()){
$regiones = $regionRepository->findAll();
} else {
$regiones = $userActual->getRegiones();
}
$regionesLabel = [];
foreach($regiones as $regionOb){
$regionesLabel[] = $regionOb->getNombre();
}
//Paginacion
$page = $request->query->getInt('page', 1);
$limit = 10;
$filters = [
'id' => $request->query->get('id'),
'organizacionName' => $request->query->get('organizacionName'),
'rut' => $request->query->get('rut'),
'racRegion' => $request->query->get('racRegion'),
'convocatoria' => $request->query->get('convocatoria'),
'evaluacion' => $request->query->get('evaluacion'),
'estado' => $request->query->get('estado'),
];
$postulaciones = $evaluacionService->getPostulacionesEnviadasByRegionPaginatedWithFiltersEvaluacionInd(
$regionesLabel,
$userActual->isSuperAdmin(),
$page,
$limit,
$filters,
$userActual->getId()
);
return $this->render('evaluacion/evaluador-ind-menu-home.html.twig', [
'postulaciones'=>$postulaciones,
'filters'=>$filters,
'regiones'=> $regiones,
'convocatorias' => $convocatorias,
]);
}
// public function evaluadorIndHome(
// Request $request,
// EvaluacionService $evaluacionService,
// UserRepository $userRepository
// ): Response
// {
// $userActual = $this->getUser();
// $postulacionesEvaluacionesUsuario = $evaluacionService->getPostulacionAndEvaluacionUsuarioByRegionToEvaluar($userActual->getRegion()->getNombre(), $userActual->getId());
// $postulacionesAll = $postulacionesEvaluacionesUsuario["postulaciones"];
// $postulaciones=array();
// foreach($postulacionesAll as $itemPostulacion){
// if ($itemPostulacion->getConvocatoria()){
// if ($itemPostulacion->getConvocatoria()->isEvaluacionActiva()){
// $postulaciones[]=$itemPostulacion;
// }
// }
// }
// $evaluacionesUsuario = $postulacionesEvaluacionesUsuario["evaluaciones"];
// //AllEvaluaciones
// $postulacionesAllEvaluacionesUsuario = $evaluacionService->getPostulacionAndEvaluacionByRegionToEvaluarColectivo($userActual->getRegion()->getNombre());
// $postulacionesAllTemp = $postulacionesAllEvaluacionesUsuario["postulaciones"];
// $postulacionesAllConvocatoria=array();
// foreach($postulacionesAllTemp as $itemPostulacion){
// if ($itemPostulacion->getConvocatoria()){
// if ($itemPostulacion->getConvocatoria()->isAdmisibilidadActiva()){
// $postulacionesAllConvocatoria[]=$itemPostulacion;
// }
// }
// }
// $evaluacionesIndividuales = $postulacionesAllEvaluacionesUsuario["evaluacionesIndividuales"];
// $evaluacionesIndividualesResumen = $postulacionesAllEvaluacionesUsuario["evaluacionesIndividualesResumen"];
// $evaluadoresRegion=0;
// $usersByRegion = $userRepository->findByRegion($userActual->getRegion()->getId());
// foreach($usersByRegion as $user){
// if (in_array("ROLE_EVALUADOR_IND", $user->getRoles())) {
// $evaluadoresRegion++;
// }
// }
// return $this->render('evaluacion/evaluador-ind-home.html.twig', [
// 'postulaciones'=>$postulaciones,
// 'evaluacionesUsuario'=>$evaluacionesUsuario,
// 'evaluacionesIndividuales'=>$evaluacionesIndividuales,
// 'evaluacionesIndividualesResumen'=>$evaluacionesIndividualesResumen,
// 'totalUserEvalInd'=>$evaluadoresRegion,
// ]);
// }
#[Route('/evaluador-ind/calificar/{id}', name: 'evaluador_ind_calificar')]
public function evaluacionIndRealizar(
Request $request,
Int $id,
EvaluacionService $evaluacionService,
PostulacionRepository $postulacionRepository,
EvaluacionIndividualRepository $evaluacionIndividualRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_EVALUADOR_IND')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
$postulacion = $evaluacionService->getPostulacionForEvaluar($id);
$evaluacionUsuario = $evaluacionService->getEvaluacionByPostulacionIdAndUserId($id,$userActual->getId());
if (count($evaluacionUsuario)==0){
$evaluacionIndividual = new EvaluacionIndividual();
$now = new DateTime();
$evaluacionIndividual->setCreatedAt($now);
$evaluacionIndividual->setUpdatedAt($now);
$evaluacionIndividual->setPostulacion($postulacion);
$evaluacionIndividual->setUser($userActual);
$evaluacionIndividualRepository->save($evaluacionIndividual,true);
}elseif(count($evaluacionUsuario)==1){
$evaluacionIndividual = $evaluacionUsuario[0];
}else{
$evaluacionIndividual = $evaluacionUsuario[0];
$this->addFlash('danger', 'Se ha identificado una inconsistencia con las evaluacion (mas de 1 evaluacion por postulacion/usuario), por favor contacte al administrador antes de continuar');
}
$criteriosName = $postulacion->getCriterios();
//Crear Form
$form = $this->createForm(EvaluacionIndividualType::class, $evaluacionIndividual);
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$dataForm = $request->request->all();
//Validacion
$isDataValida=true;
$msgDataValidacion="";
if ($isDataValida){
$now = new DateTime();
$evaluacionIndividual->setUpdatedAt($now);
//$evaluacionIndividual->calcularPuntajeFinal();
$evaluacionIndividual->setHasSaved(true);
$evaluacionIndividualRepository->save($evaluacionIndividual,true);
$this->addFlash('success', 'Evaluacion guardada exitosamente');
return $this->redirect($this->generateUrl('eval_evaluador_ind_home'));
}else{
$this->addFlash('danger', $msgDataValidacion);
}
} catch (\Exception $e) {
$this->addFlash('danger', 'Ocurrió un error inesperado' . $e->getMessage());
return $this->redirectToRoute('eval_evaluador_ind_calificar', ['id' => $id]);
}
}else{
foreach ($form->getErrors() as $error) {
$message[] = $error->getMessage();
$this->addFlash('danger', $error->getMessage());
}
//throw new HttpException(Codes::HTTP_BAD_REQUEST, implode("\n", $message));
}
}
return $this->renderForm('evaluacion/evaluador-ind-menu-calificar.html.twig', [
'postulacion'=>$postulacion,
'form' => $form,
'criteriosName'=>$criteriosName
]);
}
/* --- Evaluacion Colectiva --- */
#[Route('/evaluador-col/home', name: 'evaluador_col_home')]
public function evaluadorColHome(
Request $request,
EvaluacionService $evaluacionService,
ConvocatoriaRepository $convocatoriaRepository,
RegionRepository $regionRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_EVALUADOR_COL')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
$convocatorias = $convocatoriaRepository->findAll();
$regiones = [];
if($userActual->isSuperAdmin()){
$regiones = $regionRepository->findAll();
} else {
$regiones = $userActual->getRegiones();
}
$regionesLabel = [];
foreach($regiones as $regionOb){
$regionesLabel[] = $regionOb->getNombre();
}
//Paginacion
$page = $request->query->getInt('page', 1);
$limit = 10;
$filters = [
'id' => $request->query->get('id'),
'organizacionName' => $request->query->get('organizacionName'),
'rut' => $request->query->get('rut'),
'racRegion' => $request->query->get('racRegion'),
'convocatoria' => $request->query->get('convocatoria'),
'evaluacion' => $request->query->get('evaluacion'),
'estado' => $request->query->get('estado'),
];
$postulaciones = $evaluacionService->getPostulacionesEnviadasByRegionPaginatedWithFiltersEvaluacionCol(
$regionesLabel,
$userActual->isSuperAdmin(),
$page,
$limit,
$filters,
$userActual->getId()
);
return $this->render('evaluacion/evaluador-col-menu-home.html.twig', [
'postulaciones'=>$postulaciones,
'filters'=>$filters,
'regiones'=> $regiones,
'convocatorias' => $convocatorias,
]);
}
// public function evaluadorColHome(
// Request $request,
// EvaluacionService $evaluacionService,
// UserRepository $userRepository
// ): Response
// {
// //$postulaciones = $evaluacionService->getPostulacionesAdmisiblesToEvaluar();
// $userActual = $this->getUser();
// $postulacionesEvaluacionesUsuario = $evaluacionService->getPostulacionAndEvaluacionByRegionToEvaluarColectivo($userActual->getRegion()->getNombre());
// $postulacionesAll = $postulacionesEvaluacionesUsuario["postulaciones"];
// $postulaciones=array();
// foreach($postulacionesAll as $itemPostulacion){
// if ($itemPostulacion->getConvocatoria()){
// if ($itemPostulacion->getConvocatoria()->isAdmisibilidadActiva()){
// $postulaciones[]=$itemPostulacion;
// }
// }
// }
// $evaluacionesIndividuales = $postulacionesEvaluacionesUsuario["evaluacionesIndividuales"];
// $evaluacionesIndividualesResumen = $postulacionesEvaluacionesUsuario["evaluacionesIndividualesResumen"];
// //print_r($evaluacionesIndividualesResumen);
// $evaluadoresRegion=0;
// $usersByRegion = $userRepository->findByRegion($userActual->getRegion()->getId());
// foreach($usersByRegion as $user){
// if (in_array("ROLE_EVALUADOR_IND", $user->getRoles())) {
// $evaluadoresRegion++;
// }
// }
// return $this->render('evaluacion/evaluador-col-home.html.twig', [
// 'postulaciones'=>$postulaciones,
// 'evaluacionesIndividuales'=>$evaluacionesIndividuales,
// 'evaluacionesIndividualesResumen'=>$evaluacionesIndividualesResumen,
// 'totalUserEvalInd'=>$evaluadoresRegion,
// ]);
// }
#[Route('/evaluador-col/calificar/{id}', name: 'evaluador_col_calificar')]
public function evaluacionColRealizar(
Request $request,
Int $id,
EvaluacionService $evaluacionService,
PostulacionRepository $postulacionRepository,
ParametroRepository $parametroRepository,
PcPuntoCulturaRepository $pcPuntoCulturaRepository,
RacService $racService
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_EVALUADOR_COL')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
$postulacion = $evaluacionService->getPostulacionForEvaluar($id);
$criteriosName = $postulacion->getCriterios();
//Crear Form
$form = $this->createForm(EvaluacionColectivaType::class, $postulacion);
$puntajeParaEvaluarAPuntoDeCultura = $parametroRepository->findOneByNombre('PUNTAJE_EVALUACION');
$puntajeEvaluacion = (float) $puntajeParaEvaluarAPuntoDeCultura->getValor();
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$dataForm = $request->request->all();
//Validacion
$isDataValida=true;
$msgDataValidacion="";
$save_finalizar=false;
if(isset($dataForm["evaluacion_colectiva"]["save_finalizar"])){
$save_finalizar=true;
}
if ($save_finalizar){
if (!(isset($dataForm["evaluacion_colectiva"]["eval_nota_conformacion_c1"]))){
$isDataValida=false;
$msgDataValidacion="Evaluación no guardada. Debe calificar el criterio '".$criteriosName["nota_conformacion_c1"]["criterio"]."' en '".$criteriosName["nota_conformacion_c1"]["ambito"]."'";
}
if (!(isset($dataForm["evaluacion_colectiva"]["eval_nota_conformacion_c2"]))){
$isDataValida=false;
$msgDataValidacion="Evaluación no guardada. Debe calificar el criterio '".$criteriosName["nota_conformacion_c2"]["criterio"]."' en '".$criteriosName["nota_conformacion_c2"]["ambito"]."'";
}
if (!(isset($dataForm["evaluacion_colectiva"]["eval_nota_territorio_c1"]))){
$isDataValida=false;
$msgDataValidacion="Evaluación no guardada. Debe calificar el criterio '".$criteriosName["nota_territorio_c1"]["criterio"]."' en '".$criteriosName["nota_territorio_c1"]["ambito"]."'";
}
if (!(isset($dataForm["evaluacion_colectiva"]["eval_nota_territorio_c2"]))){
$isDataValida=false;
$msgDataValidacion="Evaluación no guardada. Debe calificar el criterio '".$criteriosName["nota_territorio_c2"]["criterio"]."' en '".$criteriosName["nota_territorio_c2"]["ambito"]."'";
}
if (!(isset($dataForm["evaluacion_colectiva"]["eval_nota_objetivos_c1"]))){
$isDataValida=false;
$msgDataValidacion="Evaluación no guardada. Debe calificar el criterio '".$criteriosName["nota_objetivos_c1"]["criterio"]."' en '".$criteriosName["nota_objetivos_c1"]["ambito"]."'";
}
if (!(isset($dataForm["evaluacion_colectiva"]["eval_nota_practicas_c1"]))){
$isDataValida=false;
$msgDataValidacion="Evaluación no guardada. Debe calificar el criterio '".$criteriosName["nota_practicas_c1"]["criterio"]."' en '".$criteriosName["nota_practicas_c1"]["ambito"]."'";
}
}
if ($isDataValida){
$now = new DateTime();
$postulacion->setEvalNotaFinalAt($now);
$userActual = $this->getUser();
$postulacion->setEvalNotaFinalBy($userActual);
//$evaluacion->setNotaConformacionC1($dataForm["evaluacion"]["nota_conformacion_c1"]);
$postulacion->calcularPuntajeFinal();
if($save_finalizar){
$postulacion->setEvalIsFinalizada(true);
$punto = $pcPuntoCulturaRepository->findByOrgIdAndRut($postulacion->getOrganizacionId(), $postulacion->getRut(), $postulacion->getDv());
if($postulacion->getEvalPuntajeFinal() >= $puntajeEvaluacion){
$run = strval(number_format((int) $postulacion->getRut(), 0, '', '.')) . '-' . $postulacion->getDv();
$organizaciones = $racService->getRegisterRac(strval($run));
$organizacionRac = null;
if(!empty($organizaciones)){
foreach($organizaciones as $orga){
if(empty($orga['org_id'])) continue;
if($orga['org_id'] == $postulacion->getOrganizacionId()) $organizacionRac = $orga;
}
}
if(empty($punto)) $punto = new PcPuntoCultura();
$punto->setNombre($postulacion->getOrganizacionName());
$punto->setNombreContacto($postulacion->getNombres() . ' ' . $postulacion->getApellidos());
$punto->setEmailContacto($postulacion->getEmail());
$punto->setCorreoElectronico1($postulacion->getEmail());
$punto->setActivo(true);
if(!empty($organizacionRac)){
$punto->setRegion($organizacionRac['datos_org']['region']);
$punto->setComuna($organizacionRac['datos_org']['comuna']);
$punto->setNombreRepresentanteLegal($organizacionRac['datos_org']['representante_legal_nombres'] . ' ' . $organizacionRac['datos_org']['representante_legal_apellidos']);
$punto->setRutRepresentanteLegal($organizacionRac['datos_org']['representante_legal_run']);
$punto->setNombrePersonaJuridica($organizacionRac['datos_org']['representante_legal_nombres'] . ' ' . $organizacionRac['datos_org']['representante_legal_apellidos']);
$punto->setRutPersonaJuridica($organizacionRac['datos_org']['representante_legal_run']);
$punto->setTelefono1($organizacionRac['datos_org']['telefono_contacto'][0]);
$punto->setTelefono2($organizacionRac['datos_org']['movil_contacto'][0]);
}
// $punto->setCertificadoPunto($data['certificado_punto']);
$docEstatutoOrganizacion = [
"path" => "/documentos/postulaciones/postulacion_" . $postulacion->getId() . "/" . $postulacion->getFormDocEstatFileName(),
"new_filename" => $postulacion->getFormDocEstatFileName(),
"original_name" => $postulacion->getFormDocEstatFileNameOriginal()
];
$docCertificadoVigenciaPersonaJuridica = [
"path" => "/documentos/postulaciones/postulacion_" . $postulacion->getId() . "/" . $postulacion->getFormDocVigencFileName(),
"new_filename" => $postulacion->getFormDocVigencFileName(),
"original_name" => $postulacion->getFormDocVigencFileNameOriginal()
];
$docAcreditaPersoneriaVigente = [
"path" => "/documentos/postulaciones/postulacion_" . $postulacion->getId() . "/" . $postulacion->getFormDocAcreditFileName(),
"new_filename" => $postulacion->getFormDocAcreditFileName(),
"original_name" => $postulacion->getFormDocAcreditFileNameOriginal()
];
$docListadoPersonas = [
"path" => "/documentos/postulaciones/postulacion_" . $postulacion->getId() . "/" . $postulacion->getFormDocPersFileName(),
"new_filename" => $postulacion->getFormDocPersFileName(),
"original_name" => $postulacion->getFormDocPersFileNameOriginal()
];
$punto->setDocEstatutoOrganizacion(!empty($postulacion->getFormDocEstatFileName()) ? $docEstatutoOrganizacion : []);
$punto->setDocCertificadoVigenciaPersonaJuridica(!empty($postulacion->getFormDocVigencFileName()) ? $docCertificadoVigenciaPersonaJuridica : []);
$punto->setDocAcreditaPersoneriaVigente(!empty($postulacion->getFormDocAcreditFileName()) ? $docAcreditaPersoneriaVigente : []);
$punto->setDocListadoPersonas(!empty($postulacion->getFormDocPersFileName()) ? $docListadoPersonas : []);
$punto->setOrganizacionComunitariaId($postulacion->getOrganizacionId());
$punto->setRut($postulacion->getRut());
$punto->setDv($postulacion->getDv());
$punto->setPostulacionPunto($postulacion);
$pcPuntoCulturaRepository->save($punto);
} else {
if(!empty($punto)){
$punto->setActivo(false);
$pcPuntoCulturaRepository->save($punto);
}
}
}
$postulacionRepository->save($postulacion,true);
if($save_finalizar){
$this->addFlash('success', 'Evaluacion Colectiva guardada y finalizada exitosamente');
return $this->redirect($this->generateUrl('eval_evaluador_col_home'));
}else{
$this->addFlash('success', 'Evaluacion Colectiva guardada exitosamente');
}
}else{
$this->addFlash('danger', $msgDataValidacion);
}
} catch (\Exception $e) {
$this->addFlash('danger', 'Ocurrió un error inesperado' . $e->getMessage());
return $this->redirectToRoute('eval_evaluador_col_calificar', ['id' => $id]);
}
}else{
foreach ($form->getErrors() as $error) {
$message[] = $error->getMessage();
$this->addFlash('danger', $error->getMessage());
}
//throw new HttpException(Codes::HTTP_BAD_REQUEST, implode("\n", $message));
}
}
$evaluacionesIndividuales = $evaluacionService->getEvaluacionesByPostulacionId($id);
return $this->renderForm('evaluacion/evaluador-col-menu-calificar.html.twig', [
'postulacion'=>$postulacion,
'form' => $form,
'criteriosName'=>$criteriosName,
'evaluacionesIndividuales'=>$evaluacionesIndividuales,
'puntajeEvaluacion' => $puntajeEvaluacion,
]);
}
/* --- Admisibilidad-Evaluador --- */
#[Route('/admisorEvaluador/home', name: 'admisor_evaluador_home')]
public function admisorEvaluadorHome(
Request $request,
EvaluacionService $evaluacionService
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$postulaciones = $evaluacionService->getPostulacionesEnviadas();
return $this->render('evaluacion/admisorEvaluador-home.html.twig', [
'postulaciones'=>$postulaciones
]);
}
/* --- Ambito General --- */
/* --- Supervisor --- */
#[Route('/supervisor/home', name: 'supervisor_home')]
public function supervisorHome(
Request $request,
EvaluacionService $evaluacionService,
ConvocatoriaRepository $convocatoriaRepository,
RegionRepository $regionRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_SUPERVISOR_POS')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
$convocatorias = $convocatoriaRepository->findAll();
$regiones = [];
if($userActual->isSuperAdmin()){
$regiones = $regionRepository->findAll();
} else {
$regiones = $userActual->getRegiones();
}
$regionesLabel = [];
foreach($regiones as $regionOb){
$regionesLabel[] = $regionOb->getNombre();
}
//Paginacion
$page = $request->query->getInt('page', 1);
$limit = 10;
$filters = [
'id' => $request->query->get('id'),
'organizacionName' => $request->query->get('organizacionName'),
'rut' => $request->query->get('rut'),
'racRegion' => $request->query->get('racRegion'),
'convocatoria' => $request->query->get('convocatoria'),
'evaluacion' => $request->query->get('evaluacion'),
'estado' => $request->query->get('estado'),
];
$postulaciones = $evaluacionService->getPostulacionesEnviadasByRegionPaginatedWithFiltersAdministrador(
$regionesLabel,
$userActual->isSuperAdmin(),
$page,
$limit,
$filters
);
return $this->render('evaluacion/supervisor-menu-home.html.twig', [
'postulaciones'=>$postulaciones,
'filters'=>$filters,
'regiones'=> $regiones,
'convocatorias' => $convocatorias,
]);
}
// public function supervisorHome(
// Request $request,
// EvaluacionService $evaluacionService,
// PostulacionService $postulacionService,
// UserRepository $userRepository
// ): Response
// {
// $userActual = $this->getUser();
// if (!$userActual){
// return $this->redirect($this->generateUrl('admin_login'));
// }
// // $hasAccess = in_array('ROLE_ADMIN', $userActual->getRoles());
// // if(!(in_array('ROLE_SUPERVISOR', $userActual->getRoles()))){
// // return $this->redirect('/admin/home');
// // }
// if (($userActual->getRegion()!==null)){
// $region = $userActual->getRegion()->getNombre();
// }else{
// $region = "-";
// }
// $postulaciones = $evaluacionService->getPostulacionesEnviadas();
// /*
// $evaluadoresRegion=0;
// $usersByRegion = $userRepository->findByRegion($userActual->getRegion()->getId());
// foreach($usersByRegion as $user){
// if (in_array("ROLE_EVALUADOR_IND", $user->getRoles())) {
// $evaluadoresRegion++;
// }
// }
// */
// return $this->render('evaluacion/supervisor-home.html.twig', [
// 'postulaciones'=>$postulaciones,
// 'region'=>$region,
// //'totalUserEvalInd'=>$evaluadoresRegion,
// ]);
// }
#[Route('/supervisor/postulacion/ver/{id}', name: 'supervisor_postulacion_ver')]
public function supervisorPostulacionVer(
Request $request,
Int $id,
EvaluacionService $evaluacionService,
PostulacionRepository $postulacionRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_SUPERVISOR_POS')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
// $hasAccess = in_array('ROLE_ADMIN', $userActual->getRoles());
// if(!(in_array('ROLE_SUPERVISOR', $userActual->getRoles()))){
// return $this->redirect('/admin/home');
// }
$postulacion = $evaluacionService->getPostulacionForAdmisibilidadEvaluar($id);
return $this->renderForm('evaluacion/supervisor-menu-postulacion-ver.html.twig', [
'postulacion'=>$postulacion,
]);
}
/* --- Supervisor --- */
#[Route('/administrador/home', name: 'administrador_home')]
public function administradorHome(
Request $request,
EvaluacionService $evaluacionService,
ConvocatoriaRepository $convocatoriaRepository,
RegionRepository $regionRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_ADMINISTRADOR_POS')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
$convocatorias = $convocatoriaRepository->findAll();
$regiones = [];
if($userActual->isSuperAdmin()){
$regiones = $regionRepository->findAll();
} else {
$regiones = $userActual->getRegiones();
}
$regionesLabel = [];
foreach($regiones as $regionOb){
$regionesLabel[] = $regionOb->getNombre();
}
//Paginacion
$page = $request->query->getInt('page', 1);
$limit = 10;
$filters = [
'id' => $request->query->get('id'),
'organizacionName' => $request->query->get('organizacionName'),
'rut' => $request->query->get('rut'),
'racRegion' => $request->query->get('racRegion'),
'convocatoria' => $request->query->get('convocatoria'),
'evaluacion' => $request->query->get('evaluacion'),
'estado' => $request->query->get('estado'),
];
$postulaciones = $evaluacionService->getPostulacionesEnviadasByRegionPaginatedWithFiltersAdministrador(
$regionesLabel,
$userActual->isSuperAdmin(),
$page,
$limit,
$filters
);
return $this->render('evaluacion/administrador-menu-home.html.twig', [
'postulaciones'=>$postulaciones,
'filters'=>$filters,
'regiones'=> $regiones,
'convocatorias' => $convocatorias,
]);
}
// public function administradorHome(
// Request $request,
// EvaluacionService $evaluacionService,
// PostulacionService $postulacionService,
// UserRepository $userRepository
// ): Response
// {
// $userActual = $this->getUser();
// if (!$userActual){
// return $this->redirect($this->generateUrl('admin_login'));
// }
// // $hasAccess = in_array('ROLE_ADMIN', $userActual->getRoles());
// // if(!(in_array('ROLE_SUPERVISOR', $userActual->getRoles()))){
// // return $this->redirect('/admin/home');
// // }
// if (($userActual->getRegion()!==null)){
// $region = $userActual->getRegion()->getNombre();
// }else{
// $region = "-";
// }
// $postulaciones = $evaluacionService->getPostulacionesEnviadas();
// /*
// $evaluadoresRegion=0;
// $usersByRegion = $userRepository->findByRegion($userActual->getRegion()->getId());
// foreach($usersByRegion as $user){
// if (in_array("ROLE_EVALUADOR_IND", $user->getRoles())) {
// $evaluadoresRegion++;
// }
// }
// */
// return $this->render('evaluacion/supervisor-home.html.twig', [
// 'postulaciones'=>$postulaciones,
// 'region'=>$region,
// //'totalUserEvalInd'=>$evaluadoresRegion,
// ]);
// }
#[Route('/administrador/postulacion/ver/{id}', name: 'administrador_postulacion_ver')]
public function administradorPostulacionVer(
Request $request,
Int $id,
EvaluacionService $evaluacionService,
PostulacionRepository $postulacionRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
if(
!$this->isGranted('ROLE_SUPER_ADMIN') &&
!$this->isGranted('ROLE_ADMINISTRADOR_POS')
){
$this->addFlash('warning', 'Acceso denegado');
return $this->redirect($this->generateUrl('admin_home'));
}
// $hasAccess = in_array('ROLE_ADMIN', $userActual->getRoles());
// if(!(in_array('ROLE_SUPERVISOR', $userActual->getRoles()))){
// return $this->redirect('/admin/home');
// }
$postulacion = $evaluacionService->getPostulacionForAdmisibilidadEvaluar($id);
$form = $this->createForm(AdministracionPostulacionType::class, $postulacion);
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$dataFiles = $request->files->all();
$docCertificadoEvaluacion = $form->get('form_certificado_evaluacion')->getData();
if (isset($docCertificadoEvaluacion)) {
try {
$originalName=$docCertificadoEvaluacion->getClientOriginalName();
$newFilename = $originalName.'-'.uniqid().'.'.$docCertificadoEvaluacion->guessExtension();
$projectRoot = $this->getParameter('kernel.project_dir');
$dirToMove =$projectRoot.'/public/documentos/postulaciones/postulacion_'.$postulacion->getId();
if (!is_dir( $dirToMove ) ) {
mkdir($dirToMove, 0777, true);
}
$docCertificadoEvaluacion->move(
$dirToMove,
$newFilename
);
$docCertificadoEvaluacionSave = [
"path" => "/documentos/postulaciones/postulacion_" . $postulacion->getId() . "/" . $newFilename,
"new_filename" => $newFilename,
"original_name" => $originalName
];
$postulacion->setCertificadoEvaluacion($docCertificadoEvaluacionSave);
} catch (FileException $e) {
$postulacion->setCertificadoEvaluacion(null);
}
}
$postulacionRepository->save($postulacion, true);
$this->addFlash('success', 'Modificacion guardado exitosamente');
return $this->redirectToRoute('eval_administrador_postulacion_ver', ['id' => $id]);
} catch (\Exception $e) {
$this->addFlash('danger', 'Ocurrió un error al guardar el usuario' . $e->getMessage());
return $this->redirectToRoute('eval_administrador_postulacion_ver', ['id' => $id]);
}
}else{
foreach ($form->getErrors() as $error) {
$message[] = $error->getMessage();
$this->addFlash('danger', $error->getMessage());
}
}
}
return $this->renderForm('evaluacion/administrador-menu-postulacion-ver.html.twig', [
'postulacion'=>$postulacion,
'form' => $form,
]);
}
#[Route('/reporte/generar/{name}', name: 'reporte_generar')]
public function supervisorReporte(
Request $request,
String $name,
EvaluacionService $evaluacionService,
PostulacionRepository $postulacionRepository
): Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$projectRoot = $this->getParameter('kernel.project_dir');
$fileName = "export-".$name.".csv";
$dirReport =$projectRoot.'/public/documentos';
$headers = array();
$data =array();
if ($name=="general"){
$headers=array(
"Id",
"Usuario - Rut",
"Usuario- Nombre",
"Usuario - Apellidos",
"Organización - Rut ",
"Organización - Nombre",
"Organización - Region",
"Postulación - Convocatoria",
"Postulación - Fecha",
"Postulación - Email Notificación",
"Admisibilidad - Fecha",
"Admisibilidad - Por",
"Admisibilidad - ¿Es Admisible?",
"Admisibilidad - Observaciones",
"Evaluacion - Fecha",
"Evaluacion - Puntaje Final",
"Evaluacion - Justificación Final",
"Evaluacion - 1. Conformación de la organización de base comunitaria - PORCENTAJE AUTOGESTIÓN FINANCIERA - Nota",
"Evaluacion - 1. Conformación de la organización de base comunitaria - PORCENTAJE AUTOGESTIÓN FINANCIERA - Justificación",
"Evaluacion - 1. Conformación de la organización de base comunitaria - ASOCIATIVIDAD - Nota",
"Evaluacion - 1. Conformación de la organización de base comunitaria - ASOCIATIVIDAD - Justificación",
"Evaluacion - 2. Territorio - VINCULACIÓN TERRITORIAL - Nota",
"Evaluacion - 2. Territorio - VINCULACIÓN TERRITORIAL - Justificación",
"Evaluacion - 2. Territorio - PARTICIPACIÓN COMUNITARIA - Nota",
"Evaluacion - 2. Territorio - PARTICIPACIÓN COMUNITARIA - Justificación",
"Evaluacion - 3. Objetivos de la organización de base comunitaria - OBJETIVOS DE LA ORGANIZACION - Nota",
"Evaluacion - 3. Objetivos de la organización de base comunitaria - OBJETIVOS DE LA ORGANIZACION - Justificación",
"Evaluacion - 4. Practicas o iniciativas artisticas culturales - PRÁCTICAS O INICIATIVAS CULTURALES - Nota",
"Evaluacion - 4. Practicas o iniciativas artisticas culturales - PRÁCTICAS O INICIATIVAS CULTURALES - Justificación"
);
$postulaciones = $evaluacionService->getPostulacionesEnviadas();
foreach($postulaciones as $postulacion){
$admisibilidadFecha = ( $postulacion->getAdmisibilidadAt() != null) ? date_format($postulacion->getAdmisibilidadAt(),"d/m/Y H:i:s") : '-';
$admisibilidadBy = ( $postulacion->getAdmisibilidadby() != null) ? $postulacion->getAdmisibilidadBy()->getNombres() : '-';
$evalFecha = ($postulacion->getEvalNotaFinalAt() != null) ? date_format($postulacion->getEvalNotaFinalAt(),"d/m/Y H:i:s") : "-";
$evalNotaFinal = ($postulacion->getEvalNotaFinalAt() != null) ? number_format($postulacion->getEvalPuntajeFinal(),2, ',', '.') : "-";
$evalJustFinal = ($postulacion->getEvalNotaFinalAt() != null) ? $postulacion->getEvalJustFinal() : "-";
$data[]=array(
$postulacion->getId(),
$postulacion->getRut(),
$postulacion->getNombres(),
$postulacion->getApellidos(),
$postulacion->getOrganizacionRut(),
$postulacion->getOrganizacionName(),
$postulacion->getRacRegion(),
$postulacion->getConvocatoria(),
date_format($postulacion->getPostulatedAt(),"d/m/Y H:i:s"),
$postulacion->getEmail(),
$admisibilidadFecha,
$admisibilidadBy,
$postulacion->getAdmisibilidadIsAdmisibleState(),
$postulacion->getAdmisibilidadObservacionesPub(),
$evalFecha,
$evalNotaFinal,
$evalJustFinal,
$postulacion->getEvalNotaConformacionC1(),
$postulacion->getEvalJustConformacionC1(),
$postulacion->getEvalNotaConformacionC2(),
$postulacion->getEvalJustConformacionC2(),
$postulacion->getEvalNotaTerritorioC1(),
$postulacion->getEvalJustTerritorioC1(),
$postulacion->getEvalNotaTerritorioC2(),
$postulacion->getEvalJustTerritorioC2(),
$postulacion->getEvalNotaObjetivosC1(),
$postulacion->getEvalJustObjetivosC1(),
$postulacion->getEvalNotaPracticasC1(),
$postulacion->getEvalJustPracticasC1()
);
}
}
if ($name=="acta-evaluacion-regional"){
$headers=array(
"Id",
"Usuario - Rut",
"Usuario- Nombre",
"Usuario - Apellidos",
"Organización - Rut ",
"Organización - Nombre",
"Organización - Region",
"Postulación - Convocatoria",
"Postulación - Fecha",
"Postulación - Email Notificación",
"Admisibilidad - Fecha",
"Admisibilidad - Por",
"Admisibilidad - ¿Es Admisible?",
"Admisibilidad - Observaciones",
"Evaluacion - Estado",
"Evaluacion - Fecha",
"Evaluacion - Puntaje Final",
"Evaluacion - Justificación Final",
"Evaluacion - 1. Conformación de la organización de base comunitaria - PORCENTAJE AUTOGESTIÓN FINANCIERA - Nota",
"Evaluacion - 1. Conformación de la organización de base comunitaria - PORCENTAJE AUTOGESTIÓN FINANCIERA - Justificación",
"Evaluacion - 1. Conformación de la organización de base comunitaria - ASOCIATIVIDAD - Nota",
"Evaluacion - 1. Conformación de la organización de base comunitaria - ASOCIATIVIDAD - Justificación",
"Evaluacion - 2. Territorio - VINCULACIÓN TERRITORIAL - Nota",
"Evaluacion - 2. Territorio - VINCULACIÓN TERRITORIAL - Justificación",
"Evaluacion - 2. Territorio - PARTICIPACIÓN COMUNITARIA - Nota",
"Evaluacion - 2. Territorio - PARTICIPACIÓN COMUNITARIA - Justificación",
"Evaluacion - 3. Objetivos de la organización de base comunitaria - OBJETIVOS DE LA ORGANIZACION - Nota",
"Evaluacion - 3. Objetivos de la organización de base comunitaria - OBJETIVOS DE LA ORGANIZACION - Justificación",
"Evaluacion - 4. Practicas o iniciativas artisticas culturales - PRÁCTICAS O INICIATIVAS CULTURALES - Nota",
"Evaluacion - 4. Practicas o iniciativas artisticas culturales - PRÁCTICAS O INICIATIVAS CULTURALES - Justificación"
);
$userActual = $this->getUser();
//$postulacionesEvaluacionesRegion = $evaluacionService->getPostulacionAndEvaluacionByRegionToEvaluarColectivo($userActual->getRegion()->getNombre());
$postulacionesEvaluacionesRegion = $evaluacionService->getPostulacionesActaEvaluacionRegional($userActual->getRegion()->getNombre());
foreach($postulacionesEvaluacionesRegion as $postulacion){
if ($postulacion->getConvocatoria()){
if ($postulacion->getConvocatoria()->isAdmisibilidadActiva()){
$admisibilidadFecha = ( $postulacion->getAdmisibilidadAt() != null) ? date_format($postulacion->getAdmisibilidadAt(),"d/m/Y H:i:s") : '-';
$admisibilidadBy = ( $postulacion->getAdmisibilidadby() != null) ? $postulacion->getAdmisibilidadBy()->getNombres() : '-';
$evalFinalizada = ($postulacion->isEvalIsFinalizada()) ? "Finalizada" : "En Curso";
$evalFecha = ($postulacion->getEvalNotaFinalAt() != null) ? date_format($postulacion->getEvalNotaFinalAt(),"d/m/Y H:i:s") : "-";
$evalNotaFinal = ($postulacion->getEvalNotaFinalAt() != null) ? number_format($postulacion->getEvalPuntajeFinal(),2, ',', '.') : "-";
$evalJustFinal = ($postulacion->getEvalNotaFinalAt() != null) ? $postulacion->getEvalJustFinal() : "-";
$data[]=array(
$postulacion->getId(),
$postulacion->getRut(),
$postulacion->getNombres(),
$postulacion->getApellidos(),
$postulacion->getOrganizacionRut(),
$postulacion->getOrganizacionName(),
$postulacion->getRacRegion(),
$postulacion->getConvocatoria(),
date_format($postulacion->getPostulatedAt(),"d/m/Y H:i:s"),
$postulacion->getEmail(),
$admisibilidadFecha,
$admisibilidadBy,
$postulacion->getAdmisibilidadIsAdmisibleState(),
$postulacion->getAdmisibilidadObservacionesPub(),
$evalFinalizada,
$evalFecha,
$evalNotaFinal,
$evalJustFinal,
$postulacion->getEvalNotaConformacionC1(),
$postulacion->getEvalJustConformacionC1(),
$postulacion->getEvalNotaConformacionC2(),
$postulacion->getEvalJustConformacionC2(),
$postulacion->getEvalNotaTerritorioC1(),
$postulacion->getEvalJustTerritorioC1(),
$postulacion->getEvalNotaTerritorioC2(),
$postulacion->getEvalJustTerritorioC2(),
$postulacion->getEvalNotaObjetivosC1(),
$postulacion->getEvalJustObjetivosC1(),
$postulacion->getEvalNotaPracticasC1(),
$postulacion->getEvalJustPracticasC1()
);
}
}
}
}
$response = new StreamedResponse();
$response->headers->set('Cache-Control', 'no-cache');
$response->headers->set('Content-Type', 'application/force-download');
$response->headers->set('Content-Disposition', $response->headers->makeDisposition(
ResponseHeaderBag::DISPOSITION_ATTACHMENT,
"$name.csv"
));
$headers = $headers;
$lines = $data;
$response->setCallback(function () use ($headers, $lines) {
$handle = fopen('php://output', 'w+');
// Mandatory: Use bom + "Content-Type: application/force-download" => to allow to display special characters with excel
fwrite($handle, $bom = chr(hexdec('EF')).chr(hexdec('BB')).chr(hexdec('BF')));
// headers
fputcsv($handle, $headers, ';');
// data
foreach ($lines as $line) {
fputcsv($handle, $line, ';');
}
fclose($handle);
});
return $response;
/*
//$tmpFileName = (new Filesystem())->tempnam(sys_get_temp_dir(), 'sb_');
$tmpFileName =$dirReport."/".$fileName;
$tmpFile = fopen($tmpFileName, 'wb+');
if (!\is_resource($tmpFile)) {
throw new \RuntimeException('Unable to create a temporary file.');
}
foreach ($data as $line) {
fputcsv($tmpFile, $line, ';');
}
$response = $this->file($tmpFileName, $fileName);
$response->headers->set('Content-type', 'application/csv');
fclose($tmpFile);
return $response; // That's it! 😁
*/
/*
$postulaciones = $evaluacionService->getPostulacionesEnviadas();
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="FooBarFileName_' . date('Ymd') . '.csv"');
header("Pragma: no-cache");
header("Expires: 0");
$this->outputCSV($results);
*/
/*
$postulacion = $evaluacionService->getPostulacionForAdmisibilidadEvaluar($id);
return $this->renderForm('evaluacion/supervisor-postulacion-ver.html.twig', [
'postulacion'=>$postulacion,
]);
*/
}
/* --- Fin Supervisor --- */
/**
* @Route("/rac-puntos-eval-view/{id}", name="racPuntosEvalView")
*/
public function racPuntosEvalView(
Request $request,
Int $id,
EvaluacionService $evaluacionService,
ActividadComunitariaRepository $actividadComunitariaRepository,
ActividadTipoRepository $actividadTipoRepository,
ParticipacionComunitariaRepository $participacionComunitariaRepository
)
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$postulacion = $evaluacionService->getPostulacionById($id);
$form = $this->createForm(PostulacionType::class, $postulacion);
$actividadesComunitarias= $actividadComunitariaRepository->findAll(array(), array('id' => 'ASC'));
$actividadesTipo = $actividadTipoRepository->findAll(array(),array('nombre' => 'ASC'));
$participacionesComunitaria= $participacionComunitariaRepository->findAll(array(), array('id' => 'ASC'));
$actividadesTemporalidad = array();
$actividadesTemporalidad[]=array ("id"=>"enero","nombre"=>"Enero");
$actividadesTemporalidad[]=array ("id"=>"febrero","nombre"=>"Febrero");
$actividadesTemporalidad[]=array ("id"=>"marzo","nombre"=>"Marzo");
$actividadesTemporalidad[]=array ("id"=>"abril","nombre"=>"Abril");
$actividadesTemporalidad[]=array ("id"=>"mayo","nombre"=>"Mayo");
$actividadesTemporalidad[]=array ("id"=>"junio","nombre"=>"Junio");
$actividadesTemporalidad[]=array ("id"=>"julio","nombre"=>"Julio");
$actividadesTemporalidad[]=array ("id"=>"agosto","nombre"=>"Agosto");
$actividadesTemporalidad[]=array ("id"=>"septiembre","nombre"=>"Septiembre");
$actividadesTemporalidad[]=array ("id"=>"octubre","nombre"=>"Octubre");
$actividadesTemporalidad[]=array ("id"=>"noviembre","nombre"=>"Noviembre");
$actividadesTemporalidad[]=array ("id"=>"diciembre","nombre"=>"Diciembre");
return $this->renderForm(
//'evaluacion/rac-puntos-eval-view.html.twig',
'evaluacion/form-postulacion.html.twig',
[
'postulacion' => $postulacion,
'form' => $form,
'participacionesComunitaria'=>$participacionesComunitaria,
'actividadesComunitarias'=>$actividadesComunitarias,
'actividadesTipo'=>$actividadesTipo,
'actividadesTemporalidad'=>$actividadesTemporalidad,
'maxFileSize' => $_ENV['MAX_FILE_SIZE'] ?? 10
]);
}
/**
* @Route("/admin-postulacion-encabezado-view/{id}", name="adminPostulacionEncabezadoView")
*/
public function adminPostulacionEncabezadoView(
Request $request,
Int $id,
EvaluacionService $evaluacionService
)
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$postulacion = $evaluacionService->getPostulacionById($id);
return $this->renderForm(
//'evaluacion/rac-puntos-eval-view.html.twig',
'evaluacion/admin-postulacion-encabezado.html.twig',
[
'postulacion' => $postulacion,
]);
}
/**
* @Route("/admin-postulacion-pie-view/{id}", name="adminPostulacionPieView")
*/
public function adminPostulacionPieView(
Request $request,
Int $id,
ParametroRepository $parametroRepository,
EvaluacionService $evaluacionService
)
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$postulacion = $evaluacionService->getPostulacionById($id);
$form = $this->createForm(AdmisibilidadType::class, $postulacion);
$evaluacionesIndividuales = $evaluacionService->getEvaluacionesByPostulacionId($id);
$criteriosName = $postulacion->getCriterios();
$formCol = $this->createForm(EvaluacionColectivaType::class, $postulacion);
$puntajeParaEvaluarAPuntoDeCultura = $parametroRepository->findOneByNombre('PUNTAJE_EVALUACION');
$puntajeEvaluacion = (float) $puntajeParaEvaluarAPuntoDeCultura->getValor();
return $this->renderForm(
'evaluacion/admin-postulacion-pie.html.twig',
[
'postulacion' => $postulacion,
'form' => $form,
'evaluacionesIndividuales'=>$evaluacionesIndividuales,
'criteriosName' => $criteriosName,
'formCol' => $formCol,
'puntajeEvaluacion' => $puntajeEvaluacion,
]);
}
#[Route('/organizaciones_vinculo/all/{postulacion_id}', name: 'organizaciones_vinculo_all')]
public function organizaciones_vinculo_all(
Int $postulacion_id,
Request $request,
EvaluacionService $evaluacionService,
OrganizacionVinculoRepository $organizacionVinculoRepository
):Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
//$postulacion = $postulacionService->getPostulacionUsuarioSession($request);
$postulacion = $evaluacionService->getPostulacionById($postulacion_id);
//$allItemsOrganizacionVinculo= $organizacionVinculoRepository->findAll(array("postulacion_id"=>$postulacion->getId()), array('id' => 'ASC'));
$allItemsOrganizacionVinculo= $organizacionVinculoRepository->findBy(array("postulacion"=>$postulacion), array('id' => 'ASC'));
$organizacionesVinculoReturn =array();
foreach ($allItemsOrganizacionVinculo as $itemsOrganizacionVinculo){
$organizacionVinculo = new \stdClass;
$organizacionVinculo->id = $itemsOrganizacionVinculo->getId();
$organizacionVinculo->nombre = $itemsOrganizacionVinculo->getNombre();
$organizacionVinculo->procedencia = $itemsOrganizacionVinculo->getProcedencia();
$organizacionesVinculoReturn[]=$organizacionVinculo;
}
return $this->json(
data: ['status'=>'ok','data'=>$organizacionesVinculoReturn],
status: 200,
headers: ['Content-Type' => 'application/json;charset=UTF-8']
);
}
#[Route('/descripcion_actividad_organizacion/list/{postulacion_id}', name: 'descripcion_actividad_organizacion_list')]
public function descripcion_actividad_organizacion_list(
Request $request,
Int $postulacion_id,
EvaluacionService $evaluacionService,
DescripcionActividadOrganizacionRepository $descripcionActividadOrganizacionRepository,
ActividadTipoRepository $actividadTipoRepository
):Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
//$postulacion = $postulacionService->getPostulacionUsuarioSession($request);
$postulacion = $evaluacionService->getPostulacionById($postulacion_id);
$allItemsDescripcionActividadOrganizacion= $descripcionActividadOrganizacionRepository->findBy(array("postulacion"=>$postulacion), array('id' => 'ASC'));
$descripcionActividadOrganizacionReturn =array();
$descripcionActividadOrganizacionPermanenteReturn =array();
$descripcionActividadOrganizacionEventualReturn =array();
$disposition="ATTACHMENT";
$disposition="DISPOSITION_INLINE";
$relativePath = "documentos";
foreach ($allItemsDescripcionActividadOrganizacion as $item){
$itemsDescripcion = new \stdClass;
$itemsDescripcion->id = $item->getId();
$itemsDescripcion->postulacion_id = $item->getPostulacion()->getId();
$itemsDescripcion->nombre = $item->getNombre();
$itemsDescripcion->descripcion = $item->getDescripcion();
$itemsDescripcion->manera = $item->getManera();
//tipo
$tipoArray=array();
foreach($item->getTipo() as $itemTipo){
$tipoArray[]=array("id"=>$itemTipo->getId(),"nombre"=>$itemTipo->getNombre());
}
$itemsDescripcion->tipo = $tipoArray;
$itemsDescripcion->desde = $item->getDesde();
$itemsDescripcion->hasta = $item->getHasta();
$itemsDescripcion->is_actualidad = $item->isActualidad();
$itemsDescripcion->temporalidad = $item->getTemporalidad();
$itemsDescripcion->lugar = $item->getLugar();
$itemsDescripcion->lugar_descripcion = $item->getLugarDescripcion();
$itemsDescripcion->participacion_comunidad = $item->getParticipacionComunidad();
$itemsDescripcion->documentoDescripcion = $item->getDocumentoDescripcion();
$itemsDescripcion->documentoFileName = $item->getDocumentoFileName();
$itemsDescripcion->documentoFileNameOriginal = $item->getDocumentoFileNameOriginal();
//$itemsDescripcion->documentoRelativePathUrlDownload = $relativePath."/".$itemsDescripcion->documentoFileName."/postulaciones/postulacion_".$itemsDescripcion->postulacion_id."/".$disposition;
$itemsDescripcion->documentoRelativePathUrlDownload = $relativePath."/postulaciones/postulacion_".$itemsDescripcion->postulacion_id."/".$itemsDescripcion->documentoFileName;
$descripcionActividadOrganizacionReturn[]=$itemsDescripcion;
}
return $this->json(
data: [
'status'=>'ok',
'data'=>$descripcionActividadOrganizacionReturn],
status: 200,
headers: ['Content-Type' => 'application/json;charset=UTF-8']
);
}
#[Route('/documentos_fundamento/get/{postulacion_id}', name: 'documentos_fundamento_get')]
public function documentos_fundamento_get(
Request $request,
Int $postulacion_id,
EvaluacionService $evaluacionService,
DocumentoFundamentaDesarrollaActividadRepository $documentoFundamentaDesarrollaActividadRepository
):Response
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
//$postulacion = $postulacionService->getPostulacionUsuarioSession($request);
$postulacion = $evaluacionService->getPostulacionById($postulacion_id);
//$allItemsDocumentoFundamentaDesarrolla= $documentoFundamentaDesarrollaActividadRepository->findAll(array("postulacion_id"=>$postulacion->getId()), array('id' => 'ASC'));
$allItemsDocumentoFundamentaDesarrolla= $documentoFundamentaDesarrollaActividadRepository->findBy(array("postulacion"=>$postulacion), array('id' => 'ASC'));
$documentosFundamentaReturn =array();
$disposition="ATTACHMENT";
$disposition="DISPOSITION_INLINE";
$relativePath = "documento/get";
foreach ($allItemsDocumentoFundamentaDesarrolla as $itemDocumentoFundamentaDesarrolla){
$itemsDocumento = new \stdClass;
$itemsDocumento->id = $itemDocumentoFundamentaDesarrolla->getId();
$itemsDocumento->postulacion_id = $itemDocumentoFundamentaDesarrolla->getPostulacion()->getId();
$itemsDocumento->nombre = $itemDocumentoFundamentaDesarrolla->getNombre();
$itemsDocumento->descripcion = $itemDocumentoFundamentaDesarrolla->getDescripcion();
$itemsDocumento->fileName = $itemDocumentoFundamentaDesarrolla->getFileName();
$itemsDocumento->fileNameOriginal = $itemDocumentoFundamentaDesarrolla->getFileNameOriginal();
$itemsDocumento->relativePathUrlDownload = $relativePath."/".$itemsDocumento->fileName."/postulacion_".$itemsDocumento->postulacion_id."/".$disposition;
$documentosFundamentaReturn[]=$itemsDocumento;
}
return $this->json(
data: ['status'=>'ok','data'=>$documentosFundamentaReturn],
status: 200,
headers: ['Content-Type' => 'application/json;charset=UTF-8']
);
}
/**
* @Route("/admin-menu-admisibilidad-view", name="adminMenuAdmisibilidadView")
*/
public function adminMenuAdmisibilidadView(
Request $request,
AdminService $adminService
)
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$menuAdmin = $adminService->getMenuAdmin($userActual->getRoles(), 'eval_admisor_home');
return $this->renderForm(
'base_admin_menu.html.twig',
['menuAdmin' => $menuAdmin]
);
}
/**
* @Route("/admin-menu-individual-view", name="adminMenuIndividualView")
*/
public function adminMenuIndividualView(
Request $request,
AdminService $adminService
)
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$menuAdmin = $adminService->getMenuAdmin($userActual->getRoles(), 'eval_evaluador_ind_home');
return $this->renderForm(
'base_admin_menu.html.twig',
['menuAdmin' => $menuAdmin]
);
}
/**
* @Route("/admin-menu-colectiva-view", name="adminMenuColectivaView")
*/
public function adminMenuColectivaView(
Request $request,
AdminService $adminService
)
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$menuAdmin = $adminService->getMenuAdmin($userActual->getRoles(), 'eval_evaluador_col_home');
return $this->renderForm(
'base_admin_menu.html.twig',
['menuAdmin' => $menuAdmin]
);
}
/**
* @Route("/admin-menu-supervision-postulaciones-view", name="adminMenuSupervisionPostulacionesView")
*/
public function adminMenuSupervisionPostulacionesView(
Request $request,
AdminService $adminService
)
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$menuAdmin = $adminService->getMenuAdmin($userActual->getRoles(), 'eval_supervisor_home');
return $this->renderForm(
'base_admin_menu.html.twig',
['menuAdmin' => $menuAdmin]
);
}
/**
* @Route("/admin-menu-administracion-postulaciones-view", name="adminMenuAdmistracionPostulacionesView")
*/
public function adminMenuAdmistracionPostulacionesView(
Request $request,
AdminService $adminService
)
{
$userActual = $this->getUser();
if (!$userActual){
$this->addFlash('warning', 'Sesión Expirada!');
return $this->redirect($this->generateUrl('admin_login'));
}
if (!$userActual->isActivo()) {
$this->addFlash('warning', 'Usuario inactivo');
return $this->redirect($this->generateUrl('admin_login'));
}
$menuAdmin = $adminService->getMenuAdmin($userActual->getRoles(), 'eval_administrador_home');
return $this->renderForm(
'base_admin_menu.html.twig',
['menuAdmin' => $menuAdmin]
);
}
}