<?php
namespace App\Controller;
use App\Crud\Controller\crudPlainController;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use \Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\ReclutaProceso;
use App\Enum\VolverPresentarseEnum;
use Endroid\QrCode\Builder\BuilderRegistryInterface;
use Endroid\QrCodeBundle\Response\QrCodeResponse;
use App\Enum\CausaNoIdoneoEnum;
use Symfony\Contracts\Translation\TranslatorInterface;
use Dompdf\Dompdf;
use Dompdf\Options;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Symfony\Component\HttpFoundation\StreamedResponse;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;
/**
* ReclutaProcesoController controller.
*
*/
class ReclutaProcesoController extends crudPlainController
{
public function imprimirFichaProcesoAction($idReclutaProceso)
{
$em = $this ->em;
$proceso = $em->getRepository('App\\Entity\\ReclutaProceso')->find($idReclutaProceso);
if (!$proceso)
throw new \RuntimeException($this->translator->trans(
'error.instance_not_found',
array('%classname%' => $this->routeClassName.'/'.$this->className,
'%id%' => $id),
'crud'));
$this->setInitialValues('all', 'reclutaproceso');
$paramsForTwigShow = $this->showCreateParamsForTwig($proceso);
$paramsForTwigShow['tab']=-1;
if ($proceso->getIdoneo())
{
$html = $this->renderView("ReclutaProceso/show_pdf_gral.html.twig", ['entity'=>$proceso]);
}
else
{
$html = $this->renderView("ReclutaProceso/show_pdf_noidoneo.html.twig", $paramsForTwigShow);
}
$options = new Options();
$options->setIsRemoteEnabled(true);
$dompdf = new Dompdf();
$dompdf->setOptions($options);
$dompdf->setPaper('letter', 'portrait');
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream();
/*
// Create an instance of the class:
$pdfparam = [
'mode' => '',
'format' => 'letter',
'default_font_size' => 0,
'default_font' => '',
'margin_left' => 10,
'margin_right' => 10,
'margin_top' => 5,
'margin_bottom' => 5,
'margin_header' => 9,
'margin_footer' => 9,
'orientation' => 'P',
'setAutoBottomMargin' => 'stretch',
'setAutoTopMargin' => 'stretch',];
$mpdf = new \Mpdf\Mpdf($pdfparam);
$dompdf = new Dompdf();
$dompdf->setPaper('letter', 'portrait');
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream();
$mpdf->SetAutoPageBreak(true, $mpdf->bMargin);
//$mpdf->SetTitle('FICHA DE INSCRIPCION');
$mpdf->SetHTMLHeader();
if ($proceso->getIdoneo())
{
$mpdf->SetHTMLFooter($this->renderView("ReclutaProceso/show_pdf_footer.html.twig", $paramsForTwigShow));
// datos del recluta y del proceso
$html = $this->renderView("ReclutaProceso/show_pdf_gral.html.twig", $paramsForTwigShow);
$mpdf->WriteHTML($html);
// test psicologico
$mpdf->AddPage();
//$preguntas = $em->getRepository('App\\Entity\\ReclutaProcesoPregunta')->findBy(array('reclutaProceso'=>$idReclutaProceso));
//$html = $this->renderView("App:ReclutaProcesoPregunta:table_pdf.html.twig", array('entities'=>$preguntas));
$html = $this->renderView("ReclutaProceso/show_pdf_test.html.twig", $paramsForTwigShow);
$mpdf->WriteHTML($html);
// examen medico
$mpdf->AddPage();
$html = $this->renderView("ReclutaProceso/show_pdf_emed.html.twig", $paramsForTwigShow);
$mpdf->WriteHTML($html);
}
else
{
$html = $this->renderView("ReclutaProceso/show_pdf_noidoneo.html.twig", $paramsForTwigShow);
$mpdf->WriteHTML($html);
}
// Output a PDF file directly to the browser
$mpdf->Output(); */
}
public function crearCodigoQRAction($idReclutaProceso, BuilderRegistryInterface $builderRegistry)
{
$em = $this ->em;
$proceso = $em->getRepository('App\\Entity\\ReclutaProceso')->find($idReclutaProceso);
if (!$proceso)
throw new \RuntimeException($this->translator->trans(
'error.instance_not_found',
array('%classname%' => $this->routeClassName.'/'.$this->className,
'%id%' => $id),
'crud'));
$recluta = $proceso->getRecluta();
$data = 'ASPIRANTE: '.$recluta->getId().'\n';
$data .= 'PROCESO: '.$proceso->getProcesoReclutamiento().'\n';
$data .= 'CENTRO: '.$proceso->getCentroMovilizacion().'\n';
$data .= 'TURNO: '.$proceso->getTurno().'\n';
$data .= 'INDENTIFICACION: '.$recluta->getIdentificacion().'\n';
$data .= 'NOMBRES: '.$recluta->getNombreCompleto().'\n';
$data .= 'FECHAREGISTRO: '.$proceso->getFechaRegistro()->format('d/m/Y H:i:s').'\n';
$builder = $builderRegistry->getBuilder('default');
return new QrCodeResponse($builder->data($data)->build()); }
public function cambiarUnidadAction()
{
$em= $this->em;
$bases = $em->getRepository('App\\Entity\\BaseMovilizacion')->findBy(array(), array('nombre'=>'ASC'));
$params=array('bases'=>$bases);
return $this->render('ReclutaProceso/cambiaUnidad.html.twig',$params);
}
public function limpiarResultadoAction()
{
return $this->render('ReclutaProceso/limpiaResultado.html.twig');
}
public function bajaVoluntariaAction()
{
return $this->render('ReclutaProceso/bajaVoluntaria.html.twig');
}
public function doCambiarUnidadAction( $reclutaProceso, $unidad)
{
$em = $this ->em;
if ($em->getRepository('App\\Entity\\ReclutaProceso')->cambiaReclutaUnidad($reclutaProceso, $unidad))
{
$data = array('ok'=>true);
}
else
{
$data = array('ok'=>false, 'error'=>'No hay cupo');
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function doBajaVoluntariaAction( $reclutaProceso)
{
$em = $this->em;
$reclutaProceso = $em->getRepository('App\\Entity\\ReclutaProceso')->find($reclutaProceso);
if ($reclutaProceso)
{
$sexo = $reclutaProceso->getRecluta()->getSexo();
$unidadOriginal = $reclutaProceso->getUnidadMilitar();
$proceso = $reclutaProceso->getProcesoReclutamiento();
$procesoUnidadOriginal = $em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')
->findOneBy(array('proceso'=>$proceso->getId(), 'unidad'=>$unidadOriginal->getId()));
if ($sexo=='Masculino')
{
$procesoUnidadOriginal->setRegistradoMasculino($procesoUnidadOriginal->getRegistradoMasculino()-1);
}
else
{
$procesoUnidadOriginal->setRegistradoFemenino($procesoUnidadOriginal->getRegistradoFemenino()-1);
}
$reclutaProceso->setUnidadMilitarInicial($reclutaProceso->getUnidadMilitar());
$reclutaProceso->setUnidadMilitar(null);
$reclutaProceso->setIdoneo(false);
$reclutaProceso->setCausaRechazo(CausaNoIdoneoEnum::BAJAVOLUNTARIA);
$reclutaProceso->setVolverPresentarse(VolverPresentarseEnum::PROXIMO);
$reclutaProceso->setFechaBaja(new \DateTime());
$em->persist($reclutaProceso);
$em->persist($procesoUnidadOriginal);
$em->flush();
$data = array('ok'=>true);
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function doLimpiarResultadoAction( $reclutaProceso)
{
$em = $this ->em;
$reclutaProceso = $em->getRepository('App\\Entity\\ReclutaProceso')->find($reclutaProceso);
if ($reclutaProceso)
{
if ($reclutaProceso->getIdoneo()) //Hay que desasignarlo
{
$sexo = $reclutaProceso->getRecluta()->getSexo();
$unidadOriginal = $reclutaProceso->getUnidadMilitar();
$proceso = $reclutaProceso->getProcesoReclutamiento();
$procesoUnidadOriginal = $em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')
->findOneBy(array('proceso'=>$proceso->getId(), 'unidad'=>$unidadOriginal->getId()));
if ($sexo=='Masculino')
{
$procesoUnidadOriginal->setRegistradoMasculino($procesoUnidadOriginal->getRegistradoMasculino()-1);
}
else
{
$procesoUnidadOriginal->setRegistradoFemenino($procesoUnidadOriginal->getRegistradoFemenino()-1);
}
$em->persist($procesoUnidadOriginal);
$reclutaProceso->setUnidadMilitar(null);
}
else
{
$reclutaProceso->setCausaRechazo(null);
}
$reclutaProceso->setVolverPresentarse(null);
$reclutaProceso->setIdoneo(true);
$reclutaProceso->setFechaResultado(null);
$em->persist($reclutaProceso);
$em->flush();
$data = array('ok'=>true);
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function buscarReclutaAsignadoAction( $cedula)
{
$user = $this->getUser();
$em = $this ->em;
$repo = $em->getRepository('App\\Entity\\ReclutaProceso');
$data=array('ok'=>true);
$procesoActivo = $em->getRepository('App\\Entity\\ProcesoReclutamiento')
->findOneBy(array('activo'=>true));
if ($procesoActivo)
{
$recluta = $repo
->createQueryBuilder('r')
->innerJoin('r.recluta','recluta')
->innerJoin('r.procesoReclutamiento','proceso')
->where('proceso.id='.$procesoActivo->getId())
->andWhere("recluta.identificacion='".$cedula."'")
->andWhere('r.unidadMilitar is not null')
->getQuery()->getOneOrNullResult();
if (!$recluta)
{
$data['ok']=false;
$data['error']='Con la cédula indicada no hay un recluta asignado a una unidad en el proceso activo';
}
else
{
if ($user->isRoleAssigned('ROLE_OPERADOR_UNIDAD') &&
$recluta->getUnidadMilitar()->getId()!=$user->getUnidadMilitar()->getId())
{
$data['ok']=false;
$data['error']='Con la cédula indicada no hay un recluta asignado a esta unidad en el proceso activo';
}
else
{
if (($user->isRoleAssigned('ROLE_OPERADOR_CENTRO') || $user->isRoleAssigned('ROLE_COORDINADOR_CENTRO')) &&
$recluta->getCentroMovilizacion()->getId()!=$user->getCentroMovilizacion()->getId())
{
$data['ok']=false;
$data['error']='Con la cédula indicada no hay un recluta asignado a una unidad d este centro de movilización';
}
else
{
if ($user->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION'))
{
// habilitar luego
/* $centro = $recluta->getCentroMovilizacion();
if (!$centro->getCentrosInstruccion()->contains($user->getCentroInstruccion()))
{
$data['ok']=false;
$data['error']='Con la cédula indicada no hay un recluta con resultado establecido';
}*/
}
}
}
}
}
else
{
$data['ok']=false;
$data['error']='No hay un proceso activo';
}
if ($data['ok'])
{
$data['recluta'] = $recluta->getId();
$data['reclutaNombre'] = $recluta->getRecluta()->getApellidoPaterno().' '.$recluta->getRecluta()->getApellidoMaterno().' '.$recluta->getRecluta()->getNombres();
$data['reclutaIdentificacion'] = $recluta->getRecluta()->getIdentificacion();
$data['reclutaFoto'] = $recluta->getRecluta()->getFoto() ? $recluta->getRecluta()->getFoto()->getUrl(): '';
$data['reclutaSexo'] = $recluta->getRecluta()->getSexo();
$unidad = $recluta->getUnidadMilitar();
$data['unidad'] = $unidad->getId();
$centro = $recluta->getCentroMovilizacion();
$base = $recluta->getBaseMovilizacion();
$centros = $repo->loadCentrosPorBase($user, $base->getId(), $procesoActivo->getId());
$unidades = $repo->loadUnidadesPorCentro($user, $centro->getId());
$data['asignado'] = $base->getNombre().' / '.$centro->getNombre().' / '.$unidad->getNombre();
$data['base'] = $base->getId();
$html='';
foreach ($centros as $item)
{
if ($centro->getId()==$item->getId())
$html .= '<option value="'.$item->getId().'" selected="true">'.$item->__toString().'</option>';
else
$html .= '<option value="'.$item->getId().'">'.$item->__toString().'</option>';
}
$data['centros'] = $html;
$html='';
foreach ($unidades as $item)
{
if ($unidad->getId()==$item->getId())
$html .= '<option value="'.$item->getId().'" selected="true">'.$item->__toString().'</option>';
else
$html .= '<option value="'.$item->getId().'">'.$item->__toString().'</option>';
}
$data['unidades'] = $html;
$data['asignado'] = $base->getNombre().' / '.$centro->getNombre().' / '.$unidad->getNombre();
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function buscarReclutaConResultadoAction( $cedula)
{
$em = $this ->em;
$data=array('ok'=>true);
$procesoActivo = $em->getRepository('App\\Entity\\ProcesoReclutamiento')
->findOneBy(array('activo'=>true));
if ($procesoActivo)
{
$recluta = $em->getRepository('App\\Entity\\ReclutaProceso')
->createQueryBuilder('r')
->innerJoin('r.recluta','recluta')
->innerJoin('r.procesoReclutamiento','proceso')
->where('proceso.id='.$procesoActivo->getId())
->andWhere("recluta.identificacion='".$cedula."'")
->andWhere('r.fechaResultado is not null')
->andWhere('r.turno is not null')
->getQuery()->getOneOrNullResult();
if (!$recluta)
{
$data['ok']=false;
$data['error']='Con la cédula indicada no hay un recluta con resultado establecido';
}
else
{
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_UNIDAD') &&
$recluta->getUnidadMilitar()->getId()!=$this->getUser()->getUnidadMilitar()->getId())
{
$data['ok']=false;
$data['error']='Con la cédula indicada no hay un recluta con resultado establecido';
}
else
{
if (($this->getUser()->isRoleAssigned('ROLE_OPERADOR_CENTRO') || $this->getUser()->isRoleAssigned('ROLE_COORDINADOR_CENTRO')) &&
$recluta->getCentroMovilizacion()->getId()!=$this->getUser()->getCentroMovilizacion()->getId())
{
$data['ok']=false;
$data['error']='Con la cédula indicada no hay un recluta con resultado establecido';
}
else
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION'))
{
/*$centro = $recluta->getCentroMovilizacion();
if (!$centro->getCentrosInstruccion()->contains($this->getUser()->getCentroInstruccion()))
{
$data['ok']=false;
$data['error']='Con la cédula indicada no hay un recluta con resultado establecido';
}*/
}
}
}
}
else
{
$data['ok']=false;
$data['error']='No hay un proceso activo';
}
if ($data['ok'])
{
$data['recluta'] = $recluta->getId();
$data['reclutaNombre'] = $recluta->getRecluta()->getApellidoPaterno().' '.$recluta->getRecluta()->getApellidoMaterno().' '.$recluta->getRecluta()->getNombres();
$data['reclutaIdentificacion'] = $recluta->getRecluta()->getIdentificacion();
$data['reclutaFoto'] = $recluta->getRecluta()->getFoto() ? $recluta->getRecluta()->getFoto()->getUrl(): '';
$data['reclutaSexo'] = $recluta->getRecluta()->getSexo();
if ($recluta->getIdoneo())
{
$unidad = $recluta->getUnidadMilitar();
$data['unidad'] = $unidad->getId();
$centro = $recluta->getCentroMovilizacion();
$base = $recluta->getBaseMovilizacion();
$data['asignado'] = 'ASIGNADO A '.$base->getNombre().' / '.$centro->getNombre().' / '.$unidad->getNombre();
}
else
$data['asignado'] = 'NO IDÓNEO / '.$recluta->getCausaRechazoTexto();
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function loadBasesPorProcesoAction($proceso = -1)
{
$em = $this ->em;
$user = $this->getUser();
$repo = $em->getRepository('App\\Entity\\ReclutaProceso');
$bases = $repo->loadBasesPorProceso($user, $proceso);
return $this->render('@crud/Common/comboreloaded.html.twig', array("entities"=>$bases));
}
public function loadCentrosPorBaseAction($base, $proceso=-1)
{
$em = $this ->em;
$user = $this->getUser();
$repo = $em->getRepository('App\\Entity\\ReclutaProceso');
$centros = $repo->loadCentrosPorBase($user, $base, $proceso);
return $this->render('@crud/Common/comboreloaded.html.twig', array("entities"=>$centros));
}
public function loadUnidadesPorCentroAction($centro, $proceso=-1)
{
$em = $this ->em;
$user = $this->getUser();
$repo = $em->getRepository('App\\Entity\\ReclutaProceso');
$unidades = $repo->loadUnidadesPorCentro($user, $centro, $proceso);
return $this->render('@crud/Common/comboreloaded.html.twig', array("entities"=>$unidades));
}
protected function indexLoadEntities($params)
{
if ($this->routeClassName == 'noidoneos')
$this->logger->info('*********RESULTADO consulta noidoneos');
if (!$this->filtrosOk())
{
return array();
}
else
{
// if ($this->routeClassName == 'listaaspirantes' && isset($this->filterData['cedula']))
return parent::indexLoadEntities($params);
}
}
protected function indexParamsForTwig()
{
$params = parent::indexParamsForTwig();
$params['totalBajas'] =null;
if (!$this->filtrosOk())
{
if ($this->routeClassName=='reporteasignacionunidad' || $this->routeClassName=='listaasignacionunidad'
|| $this->routeClassName=='nominaunidadinicio')
{
$params['filtrosOk']='Debe indicar una Unidad Militar en los filtros';
}
else if ($this->routeClassName=='reporteasignacioncentroinstruccion')
{
$params['filtrosOk']='Debe indicar un Centro de Instrucción en los filtros';
}
else if ($this->routeClassName=='nominaacuartelados' || $this->routeClassName=='reportebajas'
|| $this->routeClassName=='listaasignacionbase')
{
$params['filtrosOk']='Debe indicar Base de Movilización, Centro de Movilización o Unidad Militar en los filtros';
}
else
{
$params['filtrosOk']='Debe indicar un Centro de Movilización en los filtros';
}
}
else
{
if ($this->routeClassName=='listaasignacionunidad' || $this->routeClassName=='nominaunidadinicio') {
$params['totales'] = $this->getTotalesAsignadosPorUnidad($this->filterData, $this->routeClassName);
}
if ($this->routeClassName=='nominaacuartelados')
{
$params['entities'] = $this->organizaResultadosNomina();
}
if ($this->routeClassName=='reportebajas')
{
$resultados = $this->organizaResultadosBajas();
$params['entities'] = $resultados['resultados'];
$params['totalBajas'] = $resultados['total'];
}
}
return $params;
}
protected function organizaResultadosBajas()
{
$datos = $this->entities;
$resultados = array();
$totales = 0;
for($i=0; $i<count($datos); $i++)
{
$centro = $datos[$i]->getCentroMovilizacion();
$unidad = $datos[$i]->getUnidadMilitar();
if (!isset($resultados[$centro->getId()]))
{
$resultados[$centro->getId()] = array(
'id' => 'centro_'.$centro->getId(),
'nombre' => $centro->getNombre(),
'total' => 0,
'reclutas' => array()
);
}
$resultados[$centro->getId()]['reclutas'][$i] = array(
'id' => 'recluta_'.$datos[$i]->getId(),
'orden' => $i+1,
'datos' => $datos[$i]
);
$resultados[$centro->getId()]['total'] += 1;
$totales++;
}
return array('resultados' => $resultados, 'total'=>$totales);
}
protected function organizaResultadosNomina()
{
$datos = $this->entities;
$resultados = array();
for($i=0; $i<count($datos); $i++)
{
$centro = $datos[$i]->getCentroMovilizacion();
$unidad = $datos[$i]->getUnidadMilitar();
if($centro && $unidad){
if (!isset($resultados[$centro->getId()]))
{
$resultados[$centro->getId()] = array(
'id' => 'centro_'.$centro->getId(),
'nombre' => $centro->getNombre(),
'jefe' => $centro->getJefe(),
'unidades' => array()
);
}
if (!isset($resultados[$centro->getId()]['unidades'][$unidad->getId()]))
{
$resultados[$centro->getId()]['unidades'][$unidad->getId()] = array(
'id' => 'unidad_'.$unidad->getId(),
'nombre' => $unidad->getNombre(),
'reclutas' => array()
);
}
$resultados[$centro->getId()]['unidades'][$unidad->getId()]['reclutas'][$i] = array(
'id' => 'recluta_'.$datos[$i]->getId(),
'orden' => $i+1,
'datos' => $datos[$i]
);
}
}
return $resultados;
}
protected function organizaResultadosNominaBase()
{
$datos = $this->entities;
$resultados = array();
for($i=0; $i<count($datos); $i++)
{
$unidad = $datos[$i]->getUnidadMilitar();
if (!isset($resultados[$unidad->getId()]))
{
$resultados[$unidad->getId()] = array(
'id' => 'um_'.$unidad->getId(),
'reclutas' => array()
);
}
$resultados[$unidad->getId()]['reclutas'][$i] = array(
'orden' => $i,
'datos' => $datos[$i]);
}
return $resultados;
}
protected function filtrosOk()
{
return
(
(
$this->routeClassName=='reporteasignacionunidad' ||
$this->routeClassName=='listaasignacionunidad' ||
$this->routeClassName=='nominaunidadinicio'
)
&&
isset($this->filterData['unidadMilitar']) &&
$this->filterData['unidadMilitar']!='not null'
)
||
(
$this->routeClassName=='centroreclutaproceso' &&
$this->getUser()->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION')
)
||
(
(
$this->routeClassName=='nominaacuartelados' ||
$this->routeClassName == 'reportebajas' ||
$this->routeClassName == 'listaasignacionbase'
)
&&
(
isset($this->filterData['reclutaBase']) ||
(
isset($this->filterData['centroMovilizacion']) &&
$this->filterData['centroMovilizacion']!= 'not null'
)
||
(
isset($this->filterData['unidadMilitar']) &&
$this->filterData['unidadMilitar']!='not null'
)
)
)
||
(
$this->routeClassName!='reporteasignacioncentroinstruccion' &&
$this->routeClassName!='reporteasignacionunidad' &&
$this->routeClassName!='listaasignacionunidad' &&
$this->routeClassName!='nominaacuartelados' &&
$this->routeClassName!='listaasignacionbase' &&
$this->routeClassName!='reportebajas' &&
$this->routeClassName!='nominaunidadinicio' &&
isset($this->filterData['centroMovilizacion']) ||
(
($this->routeClassName=='listaaspirantes' || $this->routeClassName=='noidoneos')
)
||
(
$this->routeClassName=='reporteasignacioncentroinstruccion' &&
isset($this->filterData['reclutaCentroInstruccion'])
)
);
}
protected function getTotalesAsignadosPorUnidad( $filters, $routeClassName )
{
$addInner = '';
$addWhere = '';
if ($routeClassName == 'listaasignacionunidad')
$addWhere = ' AND rp.unidad_militar = '.$filters['unidadMilitar'];
else if ($routeClassName == 'nominaunidadinicio')
$addWhere = ' AND (rp.unidad_militar = '.$filters['unidadMilitar'].' OR rp.unidad_militar_inicial = '.$filters['unidadMilitar'].')';
if (isset($filters['asignacionInicio']) && $filters['asignacionInicio'] == 'true')
{
$addInner = ' INNER JOIN proceso_reclutamiento pr ON rp.proceso = pr.id';
$addWhere .= ' AND rp.fecha_asignacion >= pr.fecha_acuartelamiento AND rp.fecha_asignacion <= pr.fecha_fin_dias';
}
$totalSQL =
"SELECT
r.sexo,
count(rp.id) as cantidad
FROM
recluta_proceso rp
INNER JOIN
recluta r ON rp.recluta = r.id ".
$addInner."
WHERE
rp.proceso = ".$filters['procesoReclutamiento'].
$addWhere."
GROUP BY
r.sexo;";
$conn = $this->em->getConnection();
$statement = $conn->prepare($totalSQL);
$datos = $statement->executeQuery()->fetchAllAssociative();
$totales['Hombres'] = 0;
$totales['Mujeres'] = 0;
for ($i=0; $i<count($datos); $i++){
if ($datos[$i]['sexo'] == 'Masculino')
$totales['Hombres'] = $datos[$i]['cantidad'];
if ($datos[$i]['sexo'] == 'Femenino')
$totales['Mujeres'] = $datos[$i]['cantidad'];
}
return $totales;
}
public function exportarReportePDFAction($routeClassName)
{
$em = $this ->em;
$pdfTwig = '';
$this->setInitialValues('all', $routeClassName);
$procesoReclutamiento = $em->getRepository('App\\Entity\\ProcesoReclutamiento')->find($this->filterData['procesoReclutamiento']);
$params = array();
$this->routeClassName = $routeClassName;
$params['procesoReclutamiento'] = $procesoReclutamiento;
$filtros = $this->filterData;
$params['routeClassName'] = $routeClassName;
if ($routeClassName == 'listaasignacionunidad' || $routeClassName == 'nominaunidadinicio')
{
$qb = $em->getRepository('App\\Entity\\ReclutaProceso')->createQueryBuilder('e')
->innerJoin('e.recluta','recluta')->addSelect('recluta')
->where('e.procesoReclutamiento = '.$filtros['procesoReclutamiento'])
->orderBy('recluta.nombres', 'ASC');
if (isset($filtros['asignacionInicio']) && $filtros['asignacionInicio'] == 'true') {
$params['fechaFin'] = $procesoReclutamiento->getfechaFinDias();
$qb->andWhere("e.fechaAsignacion >= :FECHA_INI")
->andWhere("e.fechaAsignacion <= :FECHA_FIN")
->setParameter('FECHA_INI', $procesoReclutamiento->getfechaAcuartelamiento())
->setParameter('FECHA_INI', $procesoReclutamiento->getfechaFinDias())
;
}
if (isset($filtros['unidadMilitar']) && $filtros['unidadMilitar'] != 'not null')
{
if ($routeClassName == 'nominaunidadinicio')
$qb->andWhere('e.unidadMilitar = '.$filtros['unidadMilitar'].' OR e.unidadMilitarInicial = '.$filtros['unidadMilitar']);
else
$qb->andWhere('e.unidadMilitar = '.$filtros['unidadMilitar']);
}
else if (isset($filtros['centroMovilizacion']) && $filtros['centroMovilizacion'] && $filtros['centroMovilizacion'] != 'not null') {
$qb->andWhere('e.centroMovilizacion = '.$filtros['centroMovilizacion'])
->andWhere('e.unidadMilitar IS NOT NULL');
}
else if (isset($filtros['reclutaBase']))
{
$qb->andWhere('e.base = '.$filtros['reclutaBase'])
->andWhere('e.unidadMilitar IS NOT NULL');
}
$this->entities = $qb->getQuery()->getResult();
$pdfTwig = "ReclutaProceso/reporte_pdf_inner.html.twig";
$params['unidadMilitar'] = $em->getRepository('App\\Entity\\UnidadMilitar')->find($filtros['unidadMilitar']);
$centro = $em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')->findOneBy(array('proceso' => $procesoReclutamiento->getId(), 'unidad'=> $filtros['unidadMilitar']));
$params['centroMovilizacion'] = $centro->getLugar();
$params['centroProceso'] = $em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')->findOneBy(array('proceso' => $procesoReclutamiento->getId(), 'lugar'=> $params['centroMovilizacion']->getId()));
$params['totales'] = $this->getTotalesAsignadosPorUnidad($this->filterData, $routeClassName);
}
if ($routeClassName == 'listaasignacionbase')
{
$qb = $em->getRepository('App\\Entity\\ReclutaProceso')->createQueryBuilder('e')
->innerJoin('e.recluta','recluta')->addSelect('recluta')
//->innerJoin('e.unidadMilitar','unidad')
->where('e.procesoReclutamiento = '.$filtros['procesoReclutamiento'])
->orderBy('e.centroMovilizacion ASC, e.unidadMilitar', 'ASC');
if (isset($filtros['unidadMilitar']) && $filtros['unidadMilitar'] != 'not null')
$qb->andWhere('e.unidadMilitar = '.$filtros['unidadMilitar']);
else if (isset($filtros['centroMovilizacion']) && $filtros['centroMovilizacion'] &&
$filtros['centroMovilizacion'] != 'not null') {
$qb->andWhere('e.centroMovilizacion = '.$filtros['centroMovilizacion'])
->andWhere('e.unidadMilitar IS NOT NULL');
}
else if (isset($filtros['reclutaBase']))
{
$qb->andWhere('e.baseMovilizacion = '.$filtros['reclutaBase']);
}
$this->entities = $qb->getQuery()->getResult();
$this->entities = $this->organizaResultadosNominaBase();
$pdfTwig = "ReclutaProceso/nominabase_pdf_inner.html.twig";
if (isset($filtros['unidadMilitar']) && $filtros['unidadMilitar'] != 'not null') {
$params['unidadMilitar'] = $em->getRepository('App\\Entity\\UnidadMilitar')->find($filtros['unidadMilitar']);
$centro = $em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')->findOneBy(array('proceso' => $procesoReclutamiento->getId(), 'unidad'=> $filtros['unidadMilitar']));
$params['centroMovilizacion'] = $centro->getLugar();
$params['centroProceso'] = $em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')->findOneBy(array('proceso' => $procesoReclutamiento->getId(), 'lugar'=> $params['centroMovilizacion']->getId()));
}
}
if ($routeClassName == 'reportebajas')
{
$pdfTwig = "ReclutaProceso/reporte_bajas_pdf.html.twig";
$qb = $em->getRepository('App\\Entity\\ReclutaProceso')->createQueryBuilder('e')
->innerJoin('e.recluta','recluta')->addSelect('recluta')
->where('e.procesoReclutamiento = '.$filtros['procesoReclutamiento'])
->andWhere('e.idoneo = false')
->andWhere('e.fechaResultado is not null ')
->orderBy('e.centroMovilizacion ASC, e.unidadMilitar', 'ASC');
if (isset($filtros['unidadMilitar']) && $filtros['unidadMilitar'])
$qb->andWhere('e.unidadMilitar = '.$filtros['unidadMilitar']);
else if (isset($filtros['centroMovilizacion']) && $filtros['centroMovilizacion'] &&
$filtros['centroMovilizacion'] != 'not null') {
$qb->andWhere('e.centroMovilizacion = '.$filtros['centroMovilizacion']);
}
else if (isset($filtros['reclutaBase']))
{
$qb->andWhere('e.base = '.$filtros['reclutaBase'])
->andWhere('e.centroMovilizacion is not null');
}
$this->entities = $qb->getQuery()->getResult();
$resultados = $this->organizaResultadosBajas();
$this->entities = $resultados['resultados'];
$params['totalBajas'] = $resultados['total'];
}
if ($routeClassName == 'nominaacuartelados')
{
$pdfTwig = "ReclutaProceso/reporte_nomina_pdf.html.twig";
$paramsForFunctionInEntity = $this->comunParamsForFunctionsInEntity();
$paramsForFunctionInEntity['showIdInForm'] = $this->showIdInForm;
$this->indexPrepareFilterForm($paramsForFunctionInEntity);
$paramsForFunctionInEntity['filterForm']= $this->formularioFiltro;
$this->entities = $this->indexLoadEntities($paramsForFunctionInEntity);
$this->entities = $this->organizaResultadosNomina();
}
$params['entities'] = $this->entities;
$options = new Options();
$options->setIsRemoteEnabled(true);
$dompdf = new Dompdf();
$dompdf->setOptions($options);
$dompdf->setPaper('letter', 'portrait');
// Create an instance of the class:
$pdfparam = [
'mode' => '',
'format' => 'letter',
'default_font_size' => 0,
'default_font' => '',
'margin_left' => 10,
'margin_right' => 10,
'margin_top' => 5,
'margin_bottom' => 5,
'margin_header' => 9,
'margin_footer' => 9,
'orientation' => 'P',
'setAutoBottomMargin' => 'stretch',
'setAutoTopMargin' => 'stretch',];
// $mpdf = new \Mpdf\Mpdf($pdfparam);
// esta es otra forma de hacerlo donde el pdf sale completo
//ini_set("pcre.backtrack_limit", "5000000");
//$html = $this->renderView($pdfTwig, $params);
//$mpdf->WriteHTML($html);
// $mpdf->SetAutoPageBreak(true, $mpdf->bMargin);
// $mpdf->SetHTMLHeader();
if ($routeClassName == 'nominaacuartelados' || $routeClassName == 'listaasignacionbase')
{
$html = $this->renderView($pdfTwig, $params);
$dompdf->loadHtml($html);
/* $params['entities']= array();
foreach ($this->entities as $centro)
{
$params['entities'][0] = $centro;
$centroId = str_replace('centro_','',$centro['id']);
$params['centro'] = $this->em->getRepository('App\\Entity\\CentroMovilizacion')->find($centroId);
// $mpdf->WriteHTML($html);
// $mpdf->AddPage();
}
*/
}
else {
$html = $this->renderView($pdfTwig, $params);
$dompdf->loadHtml($html);
// $mpdf->WriteHTML($html);
}
// Output a PDF file directly to the browser
// $mpdf->Output();
$dompdf->render();
$dompdf->stream();
die();
}
public function excelAction($rol, $routeClassName)
{
if($routeClassName == 'listaasignacionunidad')
$this->twigExcelName = 'App:ReclutaProceso:reporte_excel_inner.html.twig';
if($routeClassName == 'listaasignacionbase')
$this->twigExcelName = 'App:ReclutaProceso:nominabase_excel_inner.html.twig';
if($routeClassName == 'reportebajas')
$this->twigExcelName = 'App:ReclutaProceso:reporte_bajas_excel.html.twig';
if($routeClassName == 'nominaacuartelados')
$this->twigExcelName = 'App:ReclutaProceso:reporte_nomina_excel.html.twig';
return parent::excelAction($rol, $routeClassName);
}
protected function excelCreateParamsForTwig()
{
$params = parent::excelCreateParamsForTwig();
$em = $this ->em;
if ($this->routeClassName=='listaasignacionunidad' || $this->routeClassName=='nominaacuartelados'
|| $this->routeClassName=='reportebajas' || $this->routeClassName=='listaasignacionbase'
|| $this->routeClassName=='nominaunidadinicio')
{
$em = $this ->em;
$procesoReclutamiento = $em->getRepository('App\\Entity\\ProcesoReclutamiento')->find($this->filterData['procesoReclutamiento']);
$params['procesoReclutamiento'] = $procesoReclutamiento;
}
if ($this->routeClassName == 'listaasignacionunidad') {
$params['unidadMilitar'] = $em->getRepository('App\\Entity\\UnidadMilitar')->find($this->filterData['unidadMilitar']);
$centro = $em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')->findOneBy(array('proceso' => $procesoReclutamiento->getId(), 'unidad'=> $this->filterData['unidadMilitar']));
$params['centroMovilizacion'] = $centro->getLugar();
$params['centroProceso'] = $em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')->findOneBy(array('proceso' => $this->filterData['procesoReclutamiento'], 'lugar'=> $params['centroMovilizacion']->getId()));
}
return $params;
}
public function redistribuirReclutasAction()
{
$this->setUtilProperties();
$params = array();
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')
->findOneBy(array('activo'=>true));
if ($procesoActivo)
{
$params['proceso']=$procesoActivo;
$centros = $this->em->getRepository('App\\Entity\\CentroInstruccion')->findAll();
$user = $this->getUser();
if ($user->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION'))
{
// habilitar luego $params['centroUsuario']=$user->getCentroInstruccion()->getId();
}
$params['centros']=$centros;
$unidades = $this->em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')
->createQueryBuilder('u')
->innerJoin('u.proceso', 'proceso')
->innerJoin('u.unidad', 'unidad')
->innerJoin('unidad.centroInstruccion', 'centro')
->where('proceso.id='.$procesoActivo->getId())
->andWhere('centro.id=14')
->orderBy('unidad.nombre','ASC')
->getQuery()->getResult();
$params['unidades']=$unidades;
}
return $this->render('ReclutaProceso/redistribuyeUnidad.html.twig',$params);
}
public function cargarNominaPDFAction($proceso, $unidad)
{
$this->filterData['procesoReclutamiento'] = $proceso;
$this->filterData['unidadMilitar'] = $unidad;
//$this->filterData['asignacionInicio'] = 'false';
$this->session->set('listaasignacionunidad',$this->filterData);
//$this->exportarReportePDFAction('listaasignacionunidad');
$data = array('ok'=>true);
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
protected function getFormFilter()
{
$formulario = parent::getFormFilter();
$repo = $this->em->getRepository('App\\Entity\\ReclutaProceso');
$user = $this->getUser();
unset($formulario['fechaRegistro_WWdesdeWW']);
unset($formulario['fechaRegistro_WWhastaWW']);
unset($formulario['paisResidencia']);
unset($formulario['lugarResidencia']);
unset($formulario['callePrincipalResidencia']);
unset($formulario['calleSecundariaResidencia']);
unset($formulario['numeroCasa']);
unset($formulario['referencias']);
unset($formulario['geometria']);
unset($formulario['fechaConsultaAntecedentes_WWdesdeWW']);
unset($formulario['fechaConsultaAntecedentes_WWhastaWW']);
unset($formulario['resultadosAntecedentes']);
unset($formulario['fechaConsultaEstudios_WWdesdeWW']);
unset($formulario['fechaConsultaEstudios_WWhastaWW']);
unset($formulario['resultadosEstudios']);
unset($formulario['fechaResultado_WWdesdeWW']);
unset($formulario['fechaAsignacion_WWdesdeWW']);
unset($formulario['fechaAsignacion_WWhastaWW']);
unset($formulario['observaciones']);
unset($formulario['volverPresentarse']);
unset($formulario['intentos']);
unset($formulario['fechaIntento1_WWdesdeWW']);
unset($formulario['fechaIntento2_WWdesdeWW']);
unset($formulario['fechaIntento3_WWdesdeWW']);
unset($formulario['fechaIntento1_WWhastaWW']);
unset($formulario['fechaIntento2_WWhastaWW']);
unset($formulario['fechaIntento3_WWhastaWW']);
unset($formulario['id']);
$formulario['procesoReclutamiento']['atributos']['multiple']=false;
$formulario['centroMovilizacion']['atributos']['multiple']=false;
$formulario['reclutaBase']= array('nombre' =>'reclutaBase',
'tipo' => EntityType::class,
'type' => 'association',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.base',
array(),
'crud').':',
'class' => 'App\\Entity\\BaseMovilizacion',
'placeholder' => $this->translator->trans('choice_value.empty_value',array(),'crud'),
'required' => false,
'multiple'=>false,
'attr'=>array('style'=>'width: 100%', 'class'=>'chosen-select')));
$formulario['reclutaBase']['atributos']['query_builder'] = $repo->queryBasesPorProceso($user);
$formulario['centroMovilizacion']['atributos']['query_builder'] = $repo->queryCentrosPorBase($user);
$formulario['unidadMilitar']['atributos']['query_builder'] = $repo->queryUnidadesPorCentro($user);
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_UNIDAD'))
{
$formulario['reclutaBase']['atributos']['disabled'] = true;
$formulario['centroMovilizacion']['atributos']['disabled'] = true;
$formulario['unidadMilitar']['atributos']['disabled'] = true;
}
if ($this->getUser()->isRoleAssigned('ROLE_COORDINADOR_CENTRO') ||
$this->getUser()->isRoleAssigned('ROLE_OPERADOR_CENTRO') /*||
$this->getUser()->isRoleAssigned('ROLE_PSICOLOGO') ||
$this->getUser()->isRoleAssigned('ROLE_PSICOLOGO_JEFE')*/ )
{
$formulario['reclutaBase']['atributos']['disabled'] = true;
$formulario['centroMovilizacion']['atributos']['disabled'] = true;
}
if ($this->getUser()->isRoleAssigned('ROLE_COORDINADOR_BASE'))
{
$formulario['reclutaBase']['atributos']['disabled'] = true;
}
/* if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION'))
{
$queryBuilder = $this->em->getRepository('App\\Entity\\CentroMovilizacion')->createQueryBuilder('c')
->innerJoin('c.centrosInstruccion','instr')->where('instr.id='.$this->getUser()->getCentroInstruccion()->getId());
$formulario['centroMovilizacion']['atributos']['query_builder'] = $queryBuilder;
$queryBuilder = $this->em->getRepository('App\\Entity\\UnidadMilitar')->createQueryBuilder('u')
->leftJoin('u.centroInstruccion', 'centro')
->where('centro.id='.$this->getUser()->getCentroInstruccion()->getId());
$formulario['unidadMilitar']['atributos']['query_builder'] = $queryBuilder;
}
*/
$newFormulario = array();
$newFormulario['procesoReclutamiento'] = $formulario['procesoReclutamiento'];
if (!$this->getUser()->isRoleAssigned('ROLE_OPERADOR_UNIDAD') /*&& !$this->getUser()->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION')*/)
{
$newFormulario['reclutaBase'] = $formulario['reclutaBase'];
}
$newFormulario['centroMovilizacion'] = $formulario['centroMovilizacion'];
/* $newFormulario['base'] = $formulario['reclutaBase'];
$newFormulario['centro'] = $formulario['centroMovilizacion'];
$newFormulario['unidad'] = $formulario['unidadMilitar'];
*/
/*if ($this->routeClassName == '')
{
unset($newFormulario['procesoReclutamiento']);
}
else */
if (strpos($this->routeClassName, 'reporteasignacion') === false &&
$this->routeClassName != 'listaasignacionunidad' &&
$this->routeClassName != 'nominaunidadinicio' &&
$this->routeClassName != 'listaasignacionbase' &&
$this->routeClassName != 'reportebajas' &&
$this->routeClassName != 'nominaacuartelados')
{
if ($this->routeClassName=='aspirantescursos')
{
$newFormulario['unidadMilitar'] = $formulario['unidadMilitar'];
$newFormulario['idoneo'] = $formulario['idoneo'];
$newFormulario['cursos'] = $formulario['cursos'];
$newFormulario['cursos']['atributos']['required'] = true;
}
if ($this->routeClassName=='aspirantesencuesta')
{
$newFormulario['unidadMilitar'] = $formulario['unidadMilitar'];
$newFormulario['idoneo'] = $formulario['idoneo'];
$newFormulario['pregunta'] = [
'nombre' => 'pregunta',
'tipo' => 'Symfony\Component\Form\Extension\Core\Type\ChoiceType',
'type' => 'custom',
'atributos' => [
'label' => 'Pregunta',
'choices' => array_flip(
array(
'TallaUniforme' => 'Tallas de los uniformes Jaguar M1',
'TallaJockey' => 'Tallas de los jockey Jaguar',
'TallaCalzado' => 'Tallas del clazado (botas)',
'TallaCamiseta' => 'Tallas de las camisetas (caqui)',
'EstudioStr' => 'Nivel de estudio',
)
),
'attr' => ['style' => 'width: 100%'],
'placeholder' => $this->translator->trans('choice_value.empty_value',array(),'crud'),
'empty_data' => null,
],
];
}
if ($this->routeClassName=='listaaspirantes')
{
$newFormulario['turno'] = $formulario['turno'];
$newFormulario['turno']['atributos']['disabled']=true;
$newFormulario['fechaResultado_WWhastaWW'] = $formulario['fechaResultado_WWhastaWW'];
$newFormulario['fechaResultado_WWhastaWW']['nombre']='fechaResultado';
$newFormulario['fechaResultado_WWhastaWW']['atributos']['disabled']=true;
}
if ($this->routeClassName=='noidoneos')
{
$newFormulario['idoneo'] = $formulario['idoneo'];
$newFormulario['idoneo']['atributos']['disabled']=true;
$newFormulario['causaRechazo'] = $formulario['causaRechazo'];
$newFormulario['causaRechazo']['tipo']="Symfony\Component\Form\Extension\Core\Type\ChoiceType";
$newFormulario['causaRechazo']['atributos']['choices'] = array_flip(CausaNoIdoneoEnum::getReadables());
$newFormulario['causaRechazo']['atributos']['placeholder'] = '--- Seleccione ---';
$newFormulario['causaRechazo']['atributos']['empty_data'] = null;
}
/* $proceso = $formulario['procesoReclutamiento'];
$centro = $formulario['centroMovilizacion'];
unset($formulario['procesoReclutamiento']);
unset($formulario['centroMovilizacion']);
*/
// para incluir campo identificacion y edad del recluta
unset($formulario['recluta']);
$newFormulario['reclutaNombre']=array('nombre' =>'reclutaNombre',
'tipo' => null,
'type' => 'string',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud').':',
'required' => false,
'attr'=>array('style'=>'width: 100%')));
$newFormulario['reclutaIdentificacion']=array('nombre' =>'reclutaIdentificacion',
'tipo' => null,
'type' => 'string',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaIdentificacion',
array(),
'crud').':',
'required' => false,
'attr'=>array('style'=>'width: 100%')));
if ($this->routeClassName!='aspirantesencuesta' && $this->routeClassName!='aspirantescursos')
{
$newFormulario['reclutaEdad']=array('nombre' =>'reclutaEdad',
'tipo' => null,
'type' => 'string',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaEdad',
array(),
'crud').':',
'required' => false,
'attr'=>array('style'=>'width: 100%')));
$newFormulario['reclutaEdad']['atributos']['attr']['class'] = 'spinbox-input';
$newFormulario['reclutaEdad']['atributos']['attr']['full_width'] = true;
}
if ($this->routeClassName!='noidoneos' && $this->routeClassName!='aspirantesencuesta' && $this->routeClassName!='aspirantescursos')
{
$newFormulario['scanQR']=array('nombre' =>'scanQR',
'tipo' => null,
'type' => 'string',
'atributos'=> array('label' => 'Scanear QR:',
'required' => false,
'attr'=>array('style'=>'width: 100%')));
}
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION'))
{
$newFormulario['reclutaBase']=array('nombre' =>'reclutaCentroInstruccion',
'tipo' => EntityType::class,
'type' => 'custom',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.centroInstruccion',
array(),
'crud').':',
'class' => 'App\\Entity\\CentroInstruccion',
'placeholder' => $this->translator->trans('choice_value.empty_value',array(),'crud'),
'required' => false,
'multiple'=>false,
// 'disabled'=>true,
'attr'=>array('style'=>'width: 100%', 'class'=>'chosen-select')));
}
if ($this->routeClassName=='certificadovacunacion')
{
$newFormulario['certificadoVacunacionOk'] = $formulario['certificadoVacunacionOk'];
$newFormulario['certificadoVacunacionOk']['atributos']['choices']['Pendiente'] = 'null';
}
}
else
{
unset($formulario['recluta']);
unset($formulario['turno']);
$newFormulario['unidadMilitar'] = $formulario['unidadMilitar'];
$newFormulario['unidadMilitar']['atributos']['multiple']=false;
if ($this->routeClassName == 'reportebajas')
{
unset($newFormulario['unidadMilitar']);
}
if ($this->routeClassName=='listaasignacionunidad' || $this->routeClassName=='nominaunidadinicio')
{
$newFormulario['asignacionInicio']=array('nombre'=>'asignacionInicio',
'tipo' => 'Symfony\Component\Form\Extension\Core\Type\ChoiceType',
'type' => 'boolean',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.asignacionInicio',
array(),
'crud').':',
'required' => false,
'placeholder' => $this->translator->trans('choice_value.empty_value',array(),'crud'),
'empty_data' => null,
'choices' => array_flip(array('true'=>$this->translator->trans('choice_value.yes', array(), 'crud'),
'false'=>$this->translator->trans('choice_value.no', array(), 'crud'))),
'attr'=>array('style'=>'width: 100%')));
}
if ($this->routeClassName == 'reporteasignacioncentro' ||
$this->routeClassName == 'reporteasignacioncentroinstruccion')
{
$newFormulario['unidadMilitar']['atributos']['disabled']=true;
}
if ($this->routeClassName == 'reporteasignacioncentroinstruccion')
{
$newFormulario['reclutaBase']=array('nombre' =>'reclutaCentroInstruccion',
'tipo' => EntityType::class,
'type' => 'custom',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.centroInstruccion',
array(),
'crud').':',
'class' => 'App\\Entity\\CentroInstruccion',
'placeholder' => $this->translator->trans('choice_value.empty_value',array(),'crud'),
'required' => false,
'multiple'=>false,
'attr'=>array('style'=>'width: 100%', 'class'=>'chosen-select')));
}
}
return $newFormulario;
}
protected function indexGetFields()
{
$fields = parent::indexGetFields();
$bckFields = $fields;
unset($fields['recluta']);
//unset($fields['causaRechazo']);
unset($fields['fechaRegistro']);
//unset($fields['procesoReclutamiento']);
unset($fields['paisResidencia']);
unset($fields['lugarResidencia']);
unset($fields['callePrincipalResidencia']);
unset($fields['calleSecundariaResidencia']);
unset($fields['numeroCasa']);
unset($fields['referencias']);
unset($fields['geometria']);
unset($fields['fechaConsultaAntecedentes']);
unset($fields['resultadosAntecedentes']);
unset($fields['fechaConsultaEstudios']);
unset($fields['resultadosEstudios']);
unset($fields['fechaBaja']);
//unset($fields['fechaResultado']);
//unset($fields['unidadMilitar']);
//unset($fields['fechaAsignacion']);
unset($fields['observaciones']);
unset($fields['volverPresentarse']);
//unset($fields['centroMovilizacion']);
unset($fields['intentos']);
unset($fields['fechaIntento1']);
unset($fields['fechaIntento2']);
unset($fields['fechaIntento3']);
unset($fields['id']);
unset($fields['unidadMilitarInicial']);
unset($fields['certificadoVacunacionOk']);
unset($fields['tallaUniforme']);
unset($fields['tallaJockey']);
unset($fields['tallaCalzado']);
unset($fields['tallaCamiseta']);
unset($fields['estudio']);
// para incluir campo identificacion y edad del recluta
if ($this->routeClassName != 'aspirantesencuesta' && $this->routeClassName != 'aspirantescursos')
{
unset($fields['idoneo']);
}
if ($this->routeClassName == 'listaasignacionunidad' || $this->routeClassName == 'nominaunidadinicio')
{
unset($fields['causaRechazo']);
unset($fields['turno']);
unset($fields['centroMovilizacion']);
$fechaResultado = $fields['fechaResultado'];
unset($fields['fechaResultado']);
unset($fields['idoneo']);
$UM = $fields['unidadMilitar'];
unset($fields['unidadMilitar']);
//$fechaAsignacion = $fields['fechaAsignacion'];
unset($fields['fechaAsignacion']);
unset($fields['fechaBaja']);
$fields['reclutaIdentificacion'] = array('nombre'=>'reclutaIdentificacion',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaIdentificacion',
array(),
'crud'));
$fields['reclutaNombre'] = array('nombre'=>'reclutaNombre',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud'));
$fields['reclutaSexo'] = array('nombre'=>'reclutaSexo',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaSexo',
array(),
'crud'));
//$fields['fechaAsignacion'] = $fechaAsignacion;
$fields['fechaResultado'] = $fechaResultado;
if ($this->routeClassName == 'nominaunidadinicio') {
$fields['unidadAsignada'] = array('nombre'=>'unidadAsignada',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.unidadAsignada',
array(), 'crud'));
$fields['bajaVoluntaria'] = array('nombre'=>'bajaVoluntaria',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.bajaVoluntaria',
array(), 'crud'));
}
else
$fields['unidadMilitar'] = $UM;
}
else if ($this->routeClassName == 'listaasignacionbase')
{
unset($fields['causaRechazo']);
unset($fields['fechaResultado']);
unset($fields['turno']);
$CM = $fields['centroMovilizacion'];
unset($fields['centroMovilizacion']);
$UM = $fields['unidadMilitar'];
unset($fields['unidadMilitar']);
//$fechaAsignacion = $fields['fechaAsignacion'];
unset($fields['fechaAsignacion']);
$fields['fuerza'] = array('nombre'=>'fuerza',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.fuerza',
array(),
'crud'));
$fields['baseMovilizacion'] = array('nombre'=>'baseMovilizacion',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.baseMovilizacion',
array(),
'crud'));
$fields['centroMovilizacion'] = $CM;
$fields['unidadMilitar'] = $UM;
$fields['centroInstruccion'] = array('nombre'=>'centroInstruccion',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.centroInstruccion',
array(),
'crud'));
$fields['reclutaNombre'] = array('nombre'=>'reclutaNombre',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud'));
$fields['reclutaIdentificacion'] = array('nombre'=>'reclutaIdentificacion',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaIdentificacion',
array(),
'crud'));
$fields['reclutaSexo'] = array('nombre'=>'reclutaSexo',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaSexo',
array(),
'crud'));
//$fields['fechaAsignacion'] = $fechaAsignacion;
}
else if ($this->routeClassName == 'nominaacuartelados')
{
unset($fields['turno']);
unset($fields['causaRechazo']);
unset($fields['fechaAsignacion']);
unset($fields['fechaResultado']);
$fields['reclutaIdentificacion'] = array('nombre'=>'reclutaIdentificacion',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaIdentificacion',
array(),
'crud'));
$fields['reclutaNombre'] = array('nombre'=>'reclutaNombre',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud'));
$fields['reclutaFechaNacimiento'] = array('nombre'=>'reclutaFechaNacimiento',
'tipo'=>'date',
'type'=>'date',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaFechaNacimiento',
array(),
'crud'));
$fields['reclutaSexo'] = array('nombre'=>'reclutaSexo',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaSexo',
array(),
'crud'));
}
else if ($this->routeClassName == 'reportebajas')
{
unset($fields['turno']);
unset($fields['fechaAsignacion']);
$fields['reclutaIdentificacion'] = array('nombre'=>'reclutaIdentificacion',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaIdentificacion',
array(),
'crud'));
$fields['reclutaNombre'] = array('nombre'=>'reclutaNombre',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud'));
}
else if ($this->routeClassName == 'reporteasignacion')
{
unset($fields['procesoReclutamiento']);
unset($fields['unidadMilitar']);
//unset($fields['fechaAsignacion']);
unset($fields['causaRechazo']);
unset($fields['fechaResultado']);
$fields['reclutaNombre'] = array('nombre'=>'reclutaNombre',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud'));
$fields['reclutaIdentificacion'] = array('nombre'=>'reclutaIdentificacion',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaIdentificacion',
array(),
'crud'));
$fields['reclutaEdad'] = array('nombre'=>'reclutaEdad',
'type'=>'integer',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaEdad',
array(),
'crud'));
$fields['fechaRegistro'] = $bckFields['fechaRegistro'];
$fields['certificadoVacunacionOk'] = $bckFields['certificadoVacunacionOk'];
if ($this->routeClassName!='listaaspirantes')
{
if (!$this->getUser()->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION'))
unset($fields['centroMovilizacion']);
$fields['idoneo'] = $bckFields['idoneo'];
$fields['causaRechazoTexto'] = array('nombre'=>'causaRechazoTexto',
'type'=>'integer',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.causaRechazoTexto',
array(),
'crud'));
$fields['fechaResultado'] = $bckFields['fechaResultado'];
}
}
else if ($this->routeClassName == 'aspirantesencuesta')
{
$fields['reclutaIdentificacion'] = array('nombre'=>'reclutaIdentificacion',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaIdentificacion',
array(),
'crud'));
$fields['reclutaNombre'] = array('nombre'=>'reclutaNombre',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud'));
if (isset($this->filterData['pregunta']) && $this->filterData['pregunta'])
{
$preguntas = [
'TallaUniforme' => 'Tallas de los uniformes Jaguar M1',
'TallaJockey' => 'Tallas de los jockey Jaguar',
'TallaCalzado' => 'Tallas del clazado (botas)',
'TallaCamiseta' => 'Tallas de las camisetas (caqui)',
'EstudioStr' => 'Nivel de estudio',
];
$fields[$this->filterData['pregunta']] = [
'nombre'=>$this->filterData['pregunta'],
'type'=>'string',
'label'=> $preguntas[$this->filterData['pregunta']]
];
unset($fields['fechaResultado']);
unset($fields['fechaAsignacion']);
unset($fields['turno']);
}
}
else if ($this->routeClassName == 'aspirantescursos')
{
$fields['cursos'] = array('nombre'=>'cursosStr',
'type' => 'string',
'label' => 'Cursos');
unset($fields['fechaResultado']);
unset($fields['fechaAsignacion']);
unset($fields['turno']);
}
else
{
unset($fields['turno']);
//unset($fields['fechaAsignacion']);
unset($fields['causaRechazo']);
unset($fields['fechaResultado']);
if ($this->routeClassName == 'reporteasignacioncentro'){
// unset($fields['unidadMilitar']);
}
elseif ($this->routeClassName == 'reporteasignacionunidad') {
//unset($fields['centroMovilizacion']);
}
$fields['centroInstruccion'] = array('nombre'=>'centroInstruccion',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.centroInstruccion',
array(),
'crud'));
$fields['reclutaNombre'] = array('nombre'=>'reclutaNombre',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud'));
$fields['reclutaIdentificacion'] = array('nombre'=>'reclutaIdentificacion',
'type' => 'string',
'label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaIdentificacion',
array(),
'crud'));
}
if ($this->routeClassName=='certificadovacunacion')
{
$fields['turno']['nombre'] = 'centroMovilizacion';
$fields['turno']['label'] = 'Centro Acuartelamiento';
$fields['reclutaNombre']['label'] = 'Aspirante';
unset($fields['fechaResultado']);
unset($fields['idoneo']);
unset($fields['causaRechazoTexto']);
}
return $fields;
}
protected function getFormulario($entity)
{
$formulario = parent::getFormulario($entity);
unset($formulario['turno']);
unset($formulario['fechaRegistro']);
unset($formulario['paisResidencia']);
unset($formulario['lugarResidencia']);
unset($formulario['callePrincipalResidencia']);
unset($formulario['calleSecundariaResidencia']);
unset($formulario['numeroCasa']);
unset($formulario['referencias']);
unset($formulario['geometria']);
unset($formulario['fechaConsultaAntecedentes']);
unset($formulario['resultadosAntecedentes']);
unset($formulario['fechaConsultaEstudios']);
unset($formulario['resultadosEstudios']);
unset($formulario['unidadMilitar']);
unset($formulario['fechaAsignacion']);
unset($formulario['volverPresentarse']);
unset($formulario['intentos']);
unset($formulario['fechaIntento1']);
unset($formulario['fechaIntento2']);
unset($formulario['fechaIntento3']);
unset($formulario['centroMovilizacion']);
unset($formulario['recluta']);
// Para cambiar el oreden en que se presentan
$proceso = $formulario['procesoReclutamiento'];
$fechaRes = $formulario['fechaResultado'];
$idoneo = $formulario['idoneo'];
$causa = $formulario['causaRechazo'];
$obs = $formulario['observaciones'];
unset($formulario['procesoReclutamiento']);
unset($formulario['observaciones']);
unset($formulario['fechaResultado']);
unset($formulario['idoneo']);
unset($formulario['causaRechazo']);
/* $formulario['reclutaNombre']=array('nombre' =>'reclutaNombre',
'tipo' => null,
'type' => 'string',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.reclutaNombre',
array(),
'crud').':',
'required' => true,
'attr'=>array('style'=>'width: 100%')));
$formulario['reclutaNombre']['atributos']['disabled'] = true;
$formulario['procesoTexto']=array('nombre' =>'procesoTexto',
'tipo' => null,
'type' => 'string',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.procesoTexto',
array(),
'crud').':',
'required' => true,
'attr'=>array('style'=>'width: 100%')));
$formulario['procesoTexto']['atributos']['disabled'] = true;
*/
$formulario['fechaResultado'] = $fechaRes;
$formulario['idoneo'] = $idoneo;
$formulario['causaRechazo'] = $causa;
$formulario['causaRechazo']['tipo']="Symfony\Component\Form\Extension\Core\Type\ChoiceType";
$formulario['causaRechazo']['atributos']['choices'] = array_flip(CausaNoIdoneoEnum::getReadables());
$formulario['causaRechazo']['atributos']['placeholder'] = '--- Seleccione ---';
$formulario['causaRechazo']['atributos']['empty_data'] = null;
$formulario['observaciones'] = $obs;
//$formulario['causaRechazo']['atributos']['attr']['containerclass'] = 'full-row';
//$formulario['observaciones']['atributos']['attr']['containerclass'] = 'full-row';
return $formulario;
}
protected function showGetFields($entity = null)
{
$fields = parent::showGetFields($entity);
$queryBuilder = $this->em->getRepository('App\\Entity\\Recluta')->createQueryBuilder('c')
->where('c.id='.$entity->getRecluta()->getId());
$fields['recluta']['atributos']['query_builder'] = $queryBuilder;
$newFields['recluta'] =$fields['recluta'];
$newFields['paisResidencia'] = $fields['paisResidencia'];
$newFields['callePrincipalResidencia'] = $fields['callePrincipalResidencia'];
$newFields['region'] = array('nombre'=>'region',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.region',
array(),
'crud'));
$newFields['calleSecundariaResidencia'] = $fields['calleSecundariaResidencia'];
$newFields['provincia'] = array('nombre'=>'provincia',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.provincia',
array(),
'crud'));
$newFields['numeroCasa'] = $fields['numeroCasa'];
$newFields['canton'] = array('nombre'=>'canton',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.canton',
array(),
'crud'));
$newFields['referencias'] = $fields['referencias'];
$newFields['lugarResidencia'] = $fields['lugarResidencia'];
//$newFields['centroMovilizacion'] = $fields['centroMovilizacion'];
// antecedentes
// nivel de intruccion
// encuesta psicologica
// $newFields['idoneo'] = $fields['idoneo'];
/*
$newFields['nombreCompleto'] = array('nombre'=>'nombreCompleto',
'type'=>'string',
'label'=>$this->translator->trans(
$this->routeClassName.'.fields.nombrecompleto',
array(),
'crud'));
$newFields['imagen'] = array('nombre' => 'imagen',
'type' => 'string',
'label' => $this->translator->trans(
$this->routeClassName.'.fields.foto',
array(),
'crud'));
*/
return $newFields;
}
protected function setFiltros()
{
if (!isset($this->filterData['procesoReclutamiento']))
{
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')
->findOneBy(array('activo'=>true));
if ($procesoActivo)
{
$this->filterData['procesoReclutamiento']=$procesoActivo->getId();
}
}
if ($this->routeClassName=='listaaspirantes' || $this->routeClassName=='certificadovacunacion')
{
$this->filterData['turno']= 'not null';
$this->filterData['fechaResultado']= 'null';
if (!isset($this->filterData['centroMovilizacion']) && isset($this->filterData['reclutaBase']))
{
$this->filterData['centroMovilizacion'] = 'not null';
}
$user = $this->getUser();
if ($user->getCentroMovilizacion() && !$this->getUser()->isRoleAssigned('ROLE_PSICOLOGO_JEFE'))
{
$this->filterData['centroMovilizacion'] = $user->getCentroMovilizacion()->getId();
}
}
if ($this->routeClassName=='certificadovacunacion' && !isset($this->filterData['certificadoVacunacionOk']))
{
$this->filterData['certificadoVacunacionOk'] = 'null';
}
if ($this->routeClassName=='listaasignacionbase')
{
if (!isset($this->filterData['unidadMilitar']))
{
$this->filterData['unidadMilitar'] = 'not null';
}
}
if ($this->routeClassName=='nominaacuartelados')
{
if (!isset($this->filterData['centroMovilizacion']))
{
$this->filterData['centroMovilizacion'] = 'not null';
}
if (!isset($this->filterData['unidadMilitar']))
{
$this->filterData['unidadMilitar']= 'not null';
}
}
if ($this->routeClassName=='reportebajas')
{
if (!isset($this->filterData['centroMovilizacion']))
{
$this->filterData['centroMovilizacion'] = 'not null';
}
}
if ($this->routeClassName=='noidoneos')
{
$this->filterData['idoneo']= 'false';
if (!isset($this->filterData['centroMovilizacion']) && isset($this->filterData['reclutaBase']))
{
$this->filterData['centroMovilizacion'] = 'not null';
}
}
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_CENTRO') || $this->getUser()->isRoleAssigned('ROLE_COORDINADOR_CENTRO'))
{
$this->filterData['centroMovilizacion']= $this->getUser()->getCentroMovilizacion()->getId();
}
if ($this->getUser()->isRoleAssigned('ROLE_COORDINADOR_BASE'))
{
$this->filterData['reclutaBase']= $this->getUser()->getBaseMovilizacion()->getId();
}
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_UNIDAD'))
{
$this->filterData['unidadMilitar']= $this->getUser()->getUnidadMilitar()->getId();
}
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION') && $this->routeClassName=='centroreclutaproceso')
{
$this->filterData['reclutaCentroInstruccion']= $this->getUser()->getCentroInstruccion()->getId();
}
if (strpos($this->routeClassName, 'reporteasignacion') !== false ||
$this->routeClassName=='listaasignacionunidad')
{
if (!isset($this->filterData['unidadMilitar']))
{
$this->filterData['unidadMilitar']='not null';
}
}
}
public function showRespuestasAction($id)
{
$params = $this->getTestResultsData($id);
return $this->render('ReclutaProceso/testPreguntasShowBody.html.twig', $params);
}
protected function fillExcelDataTest($params, $row, $sheet)
{
$user = $this->getUser();
$recluta = $params['entity']->getRecluta();
$sheet->setCellValue('A'.$row, 'Datos personales')->mergeCells('A1:B1');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->getStyle('A'.$row)->getFont()->setSize(16);
$row++;
$sheet->setCellValue('A'.$row, 'Cédula');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, $recluta->getIdentificacion());
$row++;
$sheet->setCellValue('A'.$row, 'Nombres');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, $recluta->getNombreCompleto());
$row++;
$sheet->setCellValue('A'.$row, 'Género');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, $recluta->getSexo());
$row++;
$sheet->setCellValue('A'.$row, 'Estado civil');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, $recluta->getEstadoCivil());
$row++;
$sheet->setCellValue('A'.$row, 'Teléfono');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, $recluta->getTelefono());
$row++;
$sheet->setCellValue('A'.$row, 'Teléfono para emergencias');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, $recluta->getTelefonoEmergencias());
$row++;
$sheet->setCellValue('A'.$row, 'Correo electrónico');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, $recluta->getEmail());
$row++;
$sheet->setCellValue('A'.$row, 'Estatura (cm)');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, $recluta->getEstatura());
$row = $row+2;
$sheet->setCellValue('A'.$row, 'Resultado del test psicológico')->mergeCells('A11:B11');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->getStyle('A'.$row)->getFont()->setSize(16);
$row++;
$sheet->setCellValue('A'.$row, 'Tipo');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, 'Nombre');
$sheet->getStyle('B'.$row)->getFont()->setBold(true);
$sheet->setCellValue('C'.$row, 'Valor');
$sheet->getStyle('C'.$row)->getFont()->setBold(true);
$sheet->setCellValue('D'.$row, 'Riesgo Bajo');
$sheet->getStyle('D'.$row)->getFont()->setBold(true);
$sheet->setCellValue('E'.$row, 'Riesgo Medio');
$sheet->getStyle('E'.$row)->getFont()->setBold(true);
$sheet->setCellValue('F'.$row, 'Riesgo Alto');
$sheet->getStyle('F'.$row)->getFont()->setBold(true);
if ($user->isRoleAssigned('ROLE_PSICOLOGO_JEFE'))
{
$sheet->setCellValue('G'.$row, 'Tipo Pregunta');
$sheet->getStyle('G'.$row)->getFont()->setBold(true);
}
$row++;
foreach ($params['preguntas'] as $sistemaId => $sistema)
{
$indent = '';
$sheet->setCellValue('A'.$row, $indent.'SISTEMA');
$sheet->setCellValue('B'.$row, $sistema['nombre']);
$row++;
if (isset($sistema['ejes']))
{
foreach ($sistema['ejes'] as $ejeId => $eje)
{
$indent = ' ';
$sheet->setCellValue('A'.$row, $indent.'EJE');
$sheet->setCellValue('B'.$row, $eje['nombre']);
$row++;
if (isset($eje['criterios']))
{
foreach ($eje['criterios'] as $criterioId => $criterio)
{
$indent = ' ';
$sheet->setCellValue('A'.$row, $indent.'CRITERIO');
$sheet->setCellValue('B'.$row, $criterio['criterio']->getNombre());
$sheet->setCellValue('C'.$row, $criterio['suma']);
$sheet->setCellValue('D'.$row, $criterio['criterio']->getRiesgoBajoDesde().' a '.$criterio['criterio']->getRiesgoBajoHasta());
if ($criterio['suma']<$criterio['criterio']->getRiesgoMedioDesde())
{
$sheet->getStyle('D'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_GREEN);
}
$sheet->setCellValue('E'.$row, $criterio['criterio']->getRiesgoMedioDesde().' a '.$criterio['criterio']->getRiesgoMedioHasta());
if ($criterio['suma']>=$criterio['criterio']->getRiesgoMedioDesde() && $criterio['suma']<=$criterio['criterio']->getRiesgoMedioHasta())
{
$sheet->getStyle('E'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_YELLOW);
}
$sheet->setCellValue('F'.$row, $criterio['criterio']->getRiesgoAltoDesde().' a '.$criterio['criterio']->getRiesgoAltoHasta());
if ($criterio['suma']>$criterio['criterio']->getRiesgoMedioHasta())
{
$sheet->getStyle('F'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_RED);
}
$row++;
if (isset($criterio['preguntas']) && $user->isRoleAssigned('ROLE_PSICOLOGO_JEFE'))
{
$indent = ' ';
foreach ($criterio['preguntas'] as $pregunta)
{
$sheet->setCellValue('A'.$row, $indent.'PREGUNTA');
$sheet->setCellValue('B'.$row, $pregunta['pregunta']->getNombre());
$sheet->setCellValue('C'.$row, $pregunta['txt']);
if ($pregunta['pregunta']->getTipo()=='directo')
{
$sheet->setCellValue('G'.$row, 'Directa');
}
else
{
$sheet->setCellValue('G'.$row, 'Inversa');
}
$row++;
}
}
}
}
}
}
}
$row++;
$sheet->setCellValue('A'.$row, 'Sistema');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->setCellValue('B'.$row, 'Preguntas');
$sheet->getStyle('B'.$row)->getFont()->setBold(true);
$sheet->setCellValue('C'.$row, 'Porciento');
$sheet->getStyle('C'.$row)->getFont()->setBold(true);
$sheet->setCellValue('D'.$row, 'Puntuación Respuestas');
$sheet->getStyle('D'.$row)->getFont()->setBold(true);
$sheet->setCellValue('E'.$row, 'Resultado (%)');
$sheet->getStyle('E'.$row)->getFont()->setBold(true);
$row++;
foreach ($params['preguntas'] as $sistemaId => $sistema)
{
$sheet->setCellValue('A'.$row, $sistema['nombre']);
$sheet->setCellValue('B'.$row, $sistema['cant_preguntas']);
$sheet->setCellValue('C'.$row, $sistema['porciento']);
$sheet->setCellValue('D'.$row, $sistema['suma_respuestas']);
$sheet->setCellValue('E'.$row, $sistema['resultado']);
$row++;
}
$sheet->setCellValue('E'.$row, $params['total']);
$sheet->getStyle('E'.$row)->getFont()->setBold(true);
if ($params['total']<=60)
{
$sheet->setCellValue('D'.$row, 'Riesgo bajo');
$sheet->getStyle('D'.$row)->getFont()->setBold(true);
$sheet->getStyle('D'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_GREEN);
$sheet->getStyle('E'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_GREEN);
}
elseif ($params['total']<=80)
{
$sheet->setCellValue('D'.$row, 'Riesgo Medio');
$sheet->getStyle('D'.$row)->getFont()->setBold(true);
$sheet->getStyle('D'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_YELLOW);
$sheet->getStyle('E'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_YELLOW);
}
else
{
$sheet->setCellValue('D'.$row, 'Riesgo Alto');
$sheet->getStyle('D'.$row)->getFont()->setBold(true);
$sheet->getStyle('D'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_RED);
$sheet->getStyle('E'.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_RED);
}
return $row++;
}
public function showExcelRespuestasAction($id)
{
$user = $this->getUser();
$params = $this->getTestResultsData($id);
$spreadSheet = new Spreadsheet();
$sheet = $spreadSheet->getActiveSheet();
$this->fillExcelDataTest($params, 1, $sheet);
$contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
$xlsxWriter = new Xlsx($spreadSheet);
$fileName = 'ww.xlsx';
$response = new StreamedResponse();
$response->headers->set('Content-Type', $contentType);
$response->headers->set('Content-Disposition', 'attachment;filename="'.$fileName.'"');
$response->setPrivate();
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->setCallback(function() use ($xlsxWriter) {
$xlsxWriter->save('php://output');
});
return $response;
}
protected function getTestResultsData($id)
{
$reclutaProceso = $this->em->getRepository('App\\Entity\\ReclutaProceso')->find($id);
$params = ['entity' => $reclutaProceso, 'preguntas'=>[]];
$respuestas = $this->em->getRepository('App\\Entity\\TestReclutaProcesoPregunta')
->createQueryBuilder('rcp')
->innerJoin('rcp.reclutaProceso', 'reclutaProceso')
->innerJoin('rcp.pregunta', 'pregunta')->addSelect('pregunta')
->innerJoin('pregunta.criterio', 'criterio')->addSelect('criterio')
->innerJoin('criterio.eje', 'eje')->addSelect('eje')
->innerJoin('eje.sistema', 'sistema')->addSelect('sistema')
->where('reclutaProceso.id=:ID')
->setParameter('ID', $id)
->getQuery()->getResult();
$textos = [
1 => 'De acuerdo',
2 => 'Ni de acuerdo ni en desacuerdo',
3 => 'En desacuerdo',
];
foreach ($respuestas as $respuesta)
{
$pregunta = $respuesta->getPregunta();
$criterio = $pregunta->getCriterio();
$eje = $criterio->getEje();
$sistema = $eje->getSistema();
$valor = $respuesta->getRespuesta();
$txt = $textos[$valor];
if ($pregunta->getTipo() == 'directo')
{
if ($valor==1)
{
$valor=3;
}
else
if ($valor==3)
{
$valor=1;
}
}
if (!isset($params['preguntas'][$sistema->getId()]['cant_preguntas']))
{
$params['preguntas'][$sistema->getId()]['cant_preguntas'] = 0;
}
if (!isset($params['preguntas'][$sistema->getId()]['suma_respuestas']))
{
$params['preguntas'][$sistema->getId()]['suma_respuestas'] = 0;
}
$params['preguntas'][$sistema->getId()]['ejes'][$eje->getId()]['criterios'][$criterio->getId()]['preguntas'][] = ['pregunta'=>$pregunta, 'respuesta'=>$respuesta, 'valor'=>$valor, 'txt'=>$txt];
$params['preguntas'][$sistema->getId()]['ejes'][$eje->getId()]['criterios'][$criterio->getId()]['criterio'] = $criterio;
if (!isset($params['preguntas'][$sistema->getId()]['ejes'][$eje->getId()]['criterios'][$criterio->getId()]['suma']))
{
$params['preguntas'][$sistema->getId()]['ejes'][$eje->getId()]['criterios'][$criterio->getId()]['suma'] = 0;
}
$params['preguntas'][$sistema->getId()]['nombre'] = $sistema->getNombre();
$params['preguntas'][$sistema->getId()]['cant_preguntas'] += 1;
$params['preguntas'][$sistema->getId()]['suma_respuestas'] += $valor;
$params['preguntas'][$sistema->getId()]['ejes'][$eje->getId()]['criterios'][$criterio->getId()]['suma'] += $valor;
$params['preguntas'][$sistema->getId()]['ejes'][$eje->getId()]['nombre'] = $eje->getNombre();
}
$total =0;
foreach ($params['preguntas'] as $sistemaId => $datos)
{
$params['preguntas'][$sistemaId]['porciento'] = number_format($params['preguntas'][$sistemaId]['cant_preguntas']*100/count($respuestas),7);
$params['preguntas'][$sistemaId]['resultado'] = number_format($params['preguntas'][$sistemaId]['suma_respuestas']*$params['preguntas'][$sistemaId]['porciento']/($params['preguntas'][$sistemaId]['cant_preguntas']*3),2);
$total += $params['preguntas'][$sistemaId]['suma_respuestas']*$params['preguntas'][$sistemaId]['porciento']/($params['preguntas'][$sistemaId]['cant_preguntas']*3);
}
$params['total'] = number_format($total,2);
return $params;
}
public function exportExcelTestsQuestionsAction($rol, $routeClassName)
{
$this->setInitialValues($rol, $routeClassName);
$this->accion = 'INDEX';
if (!$this->allowActionExecution())
{
return $this->render('@crud\\accesDenied.html.twig');
}
if (!$this->inline)
{
$paramsForFunctionInEntity = $this->comunParamsForFunctionsInEntity();
$paramsForFunctionInEntity['showIdInForm'] = $this->showIdInForm;
$this->indexPrepareFilterForm($paramsForFunctionInEntity);
$paramsForFunctionInEntity['filterForm']= $this->formularioFiltro;
$this->entities = $this->indexLoadEntities($paramsForFunctionInEntity);
}
$params = $this->indexParamsForTwig($this->em);
if (!empty($this->entities))
{
$proceso = $params['entities'][0]->getProcesoReclutamiento();
$spreadSheet = new Spreadsheet();
$sheet = $spreadSheet->getActiveSheet();
$sheet->setCellValue('A1', 'Reporte Tests Psicológicos')->mergeCells('A1:F1');
$sheet->getStyle('A1')->getFont()->setBold(true);
$sheet->getStyle('A1')->getFont()->setSize(16);
$sheet->setCellValue('A2', $proceso->__toString())->mergeCells('A2:F2');
$sheet->getStyle('A2')->getFont()->setBold(true);
$sheet->getStyle('A2')->getFont()->setSize(16);
$row = 7;
$first = true;
$centro='ReporteTest';
foreach ($this->entities as $reclutaProceso)
{
$data = $this->getTestResultsData($reclutaProceso->getId());
if ($first)
{
$sheet->setCellValue('A'.$row, 'Identificación');
$sheet->getStyle('A'.$row)->getFont()->setBold(true);
$sheet->getStyle('A'.$row)->getFont();
$sheet->setCellValue('B'.$row, 'Nombre');
$sheet->getStyle('B'.$row)->getFont()->setBold(true);
$sheet->getStyle('B'.$row)->getFont();
$sheet->setCellValue('C'.$row, 'Centro movilización');
$sheet->getStyle('C'.$row)->getFont()->setBold(true);
$sheet->getStyle('C'.$row)->getFont();
$sheet->setCellValue('D'.$row, 'Fecha registro');
$sheet->getStyle('D'.$row)->getFont()->setBold(true);
$sheet->getStyle('D'.$row)->getFont();
$colSistema = 'E';
$colEje = 'E';
$colCriterio = 'E';
$colPregunta = 'D'; //Se deja una columna atrás
// E4 -> sistema
// E5 -> eje
// E6 ->criterio
foreach ($data['preguntas'] as $sistemaId => $sistema)
{
foreach ($sistema['ejes'] as $ejeId => $eje)
{
foreach ($eje['criterios'] as $criterioId => $criterio)
{
foreach ($criterio['preguntas'] as $pregunta)
{
$colPregunta++;
$sheet->setCellValue($colPregunta.$row, $pregunta['pregunta']->getNombre());
$sheet->getStyle($colPregunta.$row)->getFont()->setBold(true);
}
$colPregunta++;
$sheet->setCellValue($colPregunta.$row, 'Total Criterio');
$sheet->getStyle($colPregunta.$row)->getFont()->setBold(true);
$sheet->setCellValue($colCriterio.($row-1), $criterio['criterio']->getNombre())->mergeCells($colCriterio.($row-1).':'.$colPregunta.($row-1));
$sheet->getStyle($colCriterio.($row-1))->getFont()->setBold(true);
$sheet->getStyle($colCriterio.($row-1))->getFont();
$colCriterio = $colPregunta;
$colMerge = $colCriterio;
$colCriterio++;
}
$sheet->setCellValue($colEje.($row-2), $eje['nombre'])->mergeCells($colEje.($row-2).':'.$colMerge.($row-2));
$sheet->getStyle($colEje.($row-2))->getFont()->setBold(true);
$sheet->getStyle($colEje.($row-2))->getFont();
$colEje = $colPregunta;
$colMerge = $colEje;
$colEje++;
}
$sheet->setCellValue($colSistema.($row-3), $sistema['nombre'])->mergeCells($colSistema.($row-3).':'.$colMerge.($row-3));
$sheet->getStyle($colSistema.($row-3))->getFont()->setBold(true);
$sheet->getStyle($colSistema.($row-3))->getFont();
$colSistema = $colPregunta;
$colSistema++;
}
$first = false;
$row=8;
}
$recluta = $reclutaProceso->getRecluta();
$sheet->setCellValue('A'.$row, $recluta->getIdentificacion());
$sheet->setCellValue('B'.$row, $recluta->getNombreCompleto());
$sheet->setCellValue('C'.$row, $reclutaProceso->getCentroMovilizacion()->__toString());
$sheet->setCellValue('D'.$row, $reclutaProceso->getFechaRegistro()->format('Y-m-d'));
$centro=$reclutaProceso->getCentroMovilizacion()->__toString();
$colCriterio = 'E';
$colPregunta = 'D'; //Se deja una columna atrás
foreach ($data['preguntas'] as $sistemaId => $sistema)
{
foreach ($sistema['ejes'] as $ejeId => $eje)
{
foreach ($eje['criterios'] as $criterioId => $criterio)
{
foreach ($criterio['preguntas'] as $pregunta)
{
$colPregunta++;
/*if ($pregunta['txt'] == 'Ni de acuerdo ni en desacuerdo')
{
$pregunta['txt'] = '';
}*/
$sheet->setCellValue($colPregunta.$row, /*$pregunta['txt'].' ('.*/$pregunta['valor']/*.')'*/);
}
$colPregunta++;
$colCriterio = $colPregunta;
$sheet->setCellValue($colCriterio.$row, $criterio['suma']);
if ($criterio['suma']<$criterio['criterio']->getRiesgoMedioDesde())
{
$sheet->getStyle($colCriterio.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_GREEN);
}
if ($criterio['suma']>=$criterio['criterio']->getRiesgoMedioDesde() && $criterio['suma']<=$criterio['criterio']->getRiesgoMedioHasta())
{
$sheet->getStyle($colCriterio.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_YELLOW);
}
if ($criterio['suma']>$criterio['criterio']->getRiesgoMedioHasta())
{
$sheet->getStyle($colCriterio.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_RED);
}
}
}
}
$row++;
}
$row++;
}
$contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
$xlsxWriter = new Xlsx($spreadSheet);
$fileName = $centro.'.xlsx';
$response = new StreamedResponse();
$response->headers->set('Content-Type', $contentType);
$response->headers->set('Content-Disposition', 'attachment;filename="'.$fileName.'"');
$response->setPrivate();
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->setCallback(function() use ($xlsxWriter) {
$xlsxWriter->save('php://output');
});
return $response;
}
public function exportExcelTestsAction($rol, $routeClassName)
{
$this->setInitialValues($rol, $routeClassName);
$this->accion = 'INDEX';
if (!$this->allowActionExecution())
{
return $this->render('@crud\\accesDenied.html.twig');
}
if (!$this->inline)
{
$paramsForFunctionInEntity = $this->comunParamsForFunctionsInEntity();
$paramsForFunctionInEntity['showIdInForm'] = $this->showIdInForm;
$this->indexPrepareFilterForm($paramsForFunctionInEntity);
$paramsForFunctionInEntity['filterForm']= $this->formularioFiltro;
$this->entities = $this->indexLoadEntities($paramsForFunctionInEntity);
}
$params = $this->indexParamsForTwig($this->em);
if (!empty($this->entities))
{
$proceso = $params['entities'][0]->getProcesoReclutamiento();
$spreadSheet = new Spreadsheet();
$sheet = $spreadSheet->getActiveSheet();
$sheet->setCellValue('A1', 'Reporte cruzado Tests Psicológicos')->mergeCells('A1:F1');
$sheet->getStyle('A1')->getFont()->setBold(true);
$sheet->getStyle('A1')->getFont()->setSize(16);
$sheet->setCellValue('A2', $proceso->__toString())->mergeCells('A2:F2');
$sheet->getStyle('A2')->getFont()->setBold(true);
$sheet->getStyle('A2')->getFont()->setSize(16);
$first = true;
foreach ($this->entities as $reclutaProceso)
{
$data = $this->getTestResultsData($reclutaProceso->getId());
if ($first)
{
$sheet->setCellValue('A6', 'Identificación');
$sheet->getStyle('A6')->getFont()->setBold(true);
$sheet->getStyle('A6')->getFont();
$sheet->setCellValue('B6', 'Nombre');
$sheet->getStyle('B6')->getFont()->setBold(true);
$sheet->getStyle('B6')->getFont();
$sheet->setCellValue('C6', 'Centro movilización');
$sheet->getStyle('C6')->getFont()->setBold(true);
$sheet->getStyle('C6')->getFont();
$sheet->setCellValue('D6', 'Fecha registro');
$sheet->getStyle('D6')->getFont()->setBold(true);
$sheet->getStyle('D6')->getFont();
$colSistema = 'E';
$colEje = 'E';
$colCriterio = 'D'; //Se deja una columna atrás
// E4 -> sistema
// E5 -> eje
// E6 ->criterio
foreach ($data['preguntas'] as $sistemaId => $sistema)
{
foreach ($sistema['ejes'] as $ejeId => $eje)
{
foreach ($eje['criterios'] as $criterioId => $criterio)
{
$colCriterio++;
$sheet->setCellValue($colCriterio.'6', $criterio['criterio']->getNombre());
$sheet->getStyle($colCriterio.'6')->getFont()->setBold(true);
$sheet->getStyle($colCriterio.'6')->getFont();
}
$sheet->setCellValue($colEje.'5', $eje['nombre'])->mergeCells($colEje.'5:'.$colCriterio.'5');
$sheet->getStyle($colEje.'5')->getFont()->setBold(true);
$sheet->getStyle($colEje.'5')->getFont();
$colEje = $colCriterio;
$colEje++;
}
$sheet->setCellValue($colSistema.'4', $sistema['nombre'])->mergeCells($colSistema.'4:'.$colCriterio.'4');
$sheet->getStyle($colSistema.'4')->getFont()->setBold(true);
$sheet->getStyle($colSistema.'4')->getFont();
$colSistema = $colCriterio;
$colSistema++;
}
$first = false;
$row = 7;
}
$recluta = $reclutaProceso->getRecluta();
$sheet->setCellValue('A'.$row, $recluta->getIdentificacion());
$sheet->setCellValue('B'.$row, $recluta->getNombreCompleto());
$sheet->setCellValue('C'.$row, $reclutaProceso->getCentroMovilizacion()->__toString());
$sheet->setCellValue('D'.$row, $reclutaProceso->getFechaRegistro()->format('Y-m-d'));
$colCriterio = 'D'; //Se deja una columna atrás
foreach ($data['preguntas'] as $sistemaId => $sistema)
{
foreach ($sistema['ejes'] as $ejeId => $eje)
{
foreach ($eje['criterios'] as $criterioId => $criterio)
{
$colCriterio++;
$sheet->setCellValue($colCriterio.$row, $criterio['suma']);
if ($criterio['suma']<$criterio['criterio']->getRiesgoMedioDesde())
{
$sheet->getStyle($colCriterio.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_GREEN);
}
if ($criterio['suma']>=$criterio['criterio']->getRiesgoMedioDesde() && $criterio['suma']<=$criterio['criterio']->getRiesgoMedioHasta())
{
$sheet->getStyle($colCriterio.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_YELLOW);
}
if ($criterio['suma']>$criterio['criterio']->getRiesgoMedioHasta())
{
$sheet->getStyle($colCriterio.$row)->getFill()
->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB(Color::COLOR_RED);
}
}
}
}
$row++;
}
}
$contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
$xlsxWriter = new Xlsx($spreadSheet);
$fileName = 'ww.xlsx';
$response = new StreamedResponse();
$response->headers->set('Content-Type', $contentType);
$response->headers->set('Content-Disposition', 'attachment;filename="'.$fileName.'"');
$response->setPrivate();
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->setCallback(function() use ($xlsxWriter) {
$xlsxWriter->save('php://output');
});
return $response;
}
/* public function exportExcelTestsQuestionsAction($rol, $routeClassName)
{
$this->setInitialValues($rol, $routeClassName);
$this->accion = 'INDEX';
if (!$this->allowActionExecution())
{
return $this->render('@crud\\accesDenied.html.twig');
}
if (!$this->inline)
{
$paramsForFunctionInEntity = $this->comunParamsForFunctionsInEntity();
$paramsForFunctionInEntity['showIdInForm'] = $this->showIdInForm;
$this->indexPrepareFilterForm($paramsForFunctionInEntity);
$paramsForFunctionInEntity['filterForm']= $this->formularioFiltro;
$this->entities = $this->indexLoadEntities($paramsForFunctionInEntity);
}
$params = $this->indexParamsForTwig($this->em);
if (!empty($this->entities))
{
$proceso = $params['entities'][0]->getProcesoReclutamiento();
$spreadSheet = new Spreadsheet();
$sheet = $spreadSheet->getActiveSheet();
$sheet->setCellValue('A1', 'Reporte Tests Psicológicos')->mergeCells('A1:F1');
$sheet->getStyle('A1')->getFont()->setBold(true);
$sheet->getStyle('A1')->getFont()->setSize(16);
$sheet->setCellValue('A2', $proceso->__toString())->mergeCells('A2:F2');
$sheet->getStyle('A2')->getFont()->setBold(true);
$sheet->getStyle('A2')->getFont()->setSize(16);
$row=1;
foreach ($this->entities as $reclutaProceso)
{
$data = $this->getTestResultsData($reclutaProceso->getId());
$row = $this->fillExcelDataTest($data, $row, $sheet);
$row++;
}
}
$contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
$xlsxWriter = new Xlsx($spreadSheet);
$fileName = 'ww.xlsx';
$response = new StreamedResponse();
$response->headers->set('Content-Type', $contentType);
$response->headers->set('Content-Disposition', 'attachment;filename="'.$fileName.'"');
$response->setPrivate();
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->setCallback(function() use ($xlsxWriter) {
$xlsxWriter->save('php://output');
});
return $response;
}
*/
public function getTestElementsAction($proceso, $editable)
{
$params = [
'preguntas' => [],
'maxSistema' => 0,
'maxEje' => 0,
'maxCriterio' => 0,
'maxPregunta' => 0,
];
$sistemas = $this->em->getRepository('App\\Entity\\TestSistema')
->createQueryBuilder('s')
->innerJoin('s.proceso', 'proceso')
->where('proceso.id = '.$proceso)
->getQuery()->getResult();
foreach ($sistemas as $sistema)
{
if ($sistema->getId()>$params['maxSistema'])
{
$params['maxSistema'] = $sistema->getId();
}
$params['preguntas'][$sistema->getId()]['nombre'] = $sistema->getNombre();
$ejes = $this->em->getRepository('App\\Entity\\TestEje')
->createQueryBuilder('e')
->innerJoin('e.sistema', 'sistema')
->where('sistema.id = '.$sistema->getId())
->getQuery()->getResult();
foreach ($ejes as $eje)
{
if ($eje->getId()>$params['maxEje'])
{
$params['maxEje'] = $eje->getId();
}
$params['preguntas'][$sistema->getId()]['ejes'][$eje->getId()]['nombre'] = $eje->getNombre();
$criterios = $this->em->getRepository('App\\Entity\\TestCriterio')
->createQueryBuilder('c')
->innerJoin('c.eje', 'eje')
->where('eje.id = '.$eje->getId())
->getQuery()->getResult();
foreach ($criterios as $criterio)
{
if ($criterio->getId()>$params['maxCriterio'])
{
$params['maxCriterio'] = $criterio->getId();
}
$params['preguntas'][$sistema->getId()]['ejes'][$eje->getId()]['criterios'][$criterio->getId()]['criterio'] = $criterio;
}
}
}
if ($editable=='YES')
{
return $this->render('ProcesoReclutamiento/testPreguntas.html.twig', $params);
}
else
{
return $this->render('ProcesoReclutamiento/testPreguntasShowBody.html.twig', $params);
}
}
}