<?php
namespace App\Controller;
use App\Crud\Controller\crudPlainController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\ProcesoReclutamientoUnidad;
use Dompdf\Dompdf;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use App\Enum\TipoFuerzaEnum;
class ProcesoReclutamientoUnidadController extends crudPlainController
{
protected function indexLoadEntities($params)
{
if ($this->routeClassName == 'consolidadofuerza' && !isset($this->filterData['anno']))
{
return array();
}
else if ($this->routeClassName == 'consolidadofuerza' || $this->routeClassName == 'reporterechazos'
|| $this->routeClassName == 'registradosbase' || $this->routeClassName == 'registradoscentro')
{
return null;
}
else {
return parent::indexLoadEntities($params);
}
}
public function indexAction($rol, $routeClassName)
{
if ($routeClassName == 'reporteconsolidadofuerza')
{
$this->setInitialValues($rol, $routeClassName);
$paramsForFunctionInEntity = $this->comunParamsForFunctionsInEntity();
$paramsForFunctionInEntity['showIdInForm'] = $this->showIdInForm;
$this->indexPrepareFilterForm($paramsForFunctionInEntity);
if ($routeClassName == 'reporteconsolidadofuerza')
$this->entities = $this->getConsolidadoPorFuerza($routeClassName);
$this->session->set($routeClassName,$this->filterData);
$this->paginator = null;
$params = $this->indexParamsForTwig();
return $this->render($this->twigIndexName, $params);
}
else
return parent::indexAction ($rol, $routeClassName);
}
protected function indexParamsForTwig()
{
$params = parent::indexParamsForTwig();
if ($this->routeClassName=='reportecupolugar')
{
$unidades = $params['entities'];
$lugares = array();
foreach ($unidades as $unidad)
{
$centro = $unidad->getLugar();
$base = $this->em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')
->findOneBy(array('proceso'=>$unidad->getProceso()->getId(), 'lugar'=>$centro->getId()));
$base = $base->getBase();
if (isset($lugares[$base->getId()]))
{
$lugares[$base->getId()]['organicoMasculino'] += $unidad->getOrganicoMasculino();
$lugares[$base->getId()]['organicoFemenino'] += $unidad->getOrganicoFemenino();
$lugares[$base->getId()]['cupoMasculino'] += $unidad->getCupoMasculino();
$lugares[$base->getId()]['cupoFemenino'] += $unidad->getCupoFemenino();
$lugares[$base->getId()]['cantUnidades'] += 1;
}
else
{
$lugares[$base->getId()] = array(
'id'=>'base_'.$base->getId(),
'tipoLugar'=>'Base movilizazciĆ³n',
'nombre'=>$base->getNombre(),
'organicoMasculino' => $unidad->getOrganicoMasculino(),
'organicoFemenino' => $unidad->getOrganicoFemenino(),
'cupoMasculino' => $unidad->getCupoMasculino(),
'cupoFemenino' => $unidad->getCupoFemenino(),
'cantUnidades'=>1,
'hijos' => array()
);
}
if (isset($lugares[$base->getId()]['hijos'][$centro->getId()]))
{
$lugares[$base->getId()]['hijos'][$centro->getId()]['organicoMasculino'] += $unidad->getOrganicoMasculino();
$lugares[$base->getId()]['hijos'][$centro->getId()]['organicoFemenino'] += $unidad->getOrganicoFemenino();
$lugares[$base->getId()]['hijos'][$centro->getId()]['cupoMasculino'] += $unidad->getCupoMasculino();
$lugares[$base->getId()]['hijos'][$centro->getId()]['cupoFemenino'] += $unidad->getCupoFemenino();
$lugares[$base->getId()]['hijos'][$centro->getId()]['cantUnidades'] += 1;
}
else
{
$lugares[$base->getId()]['hijos'][$centro->getId()] = array(
'id'=>'centro_'.$centro->getId(),
'tipoLugar'=>'Centro movilizazciĆ³n',
'nombre'=>$centro->getNombre(),
'organicoMasculino' => $unidad->getOrganicoMasculino(),
'organicoFemenino' => $unidad->getOrganicoFemenino(),
'cupoMasculino' => $unidad->getCupoMasculino(),
'cupoFemenino' => $unidad->getCupoFemenino(),
'cantUnidades'=>1,
'parent'=>'base_'.$base->getId(),
'hijos' => array()
);
}
$lugares[$base->getId()]['hijos'][$centro->getId()]['hijos'][$unidad->getId()] = array(
'id'=>'unidad_'.$unidad->getId(),
'tipoLugar'=>'Unidad militar',
'nombre'=>$unidad->getNombreUnidad(),
'organicoMasculino' => $unidad->getOrganicoMasculino(),
'organicoFemenino' => $unidad->getOrganicoFemenino(),
'cupoMasculino' => $unidad->getCupoMasculino(),
'cupoFemenino' => $unidad->getCupoFemenino(),
'parent'=>'centro_'.$centro->getId(),
'hijos' => array(),
);
}
$params['treeNodes'] = $lugares;
return $params;
}
if ($this->routeClassName=='consolidadofuerza' || $this->routeClassName == 'reporterechazos'
|| $this->routeClassName == 'registradosbase' || $this->routeClassName == 'registradoscentro')
{
if ($this->routeClassName=='consolidadofuerza')
$this->entities = $this->getConsolidadoPorFuerza($this->routeClassName);
if ($this->routeClassName == 'reporterechazos') {
$resultados = $this->getRechazados($this->routeClassName);
$this->entities = $resultados['entities'];
$params['extra'] = $resultados['causas'];
}
if ($this->routeClassName == 'registradosbase' || $this->routeClassName == 'registradoscentro')
$this->entities = $this->getRegistrados($this->routeClassName);
$params['entities'] = $this->entities;
}
return $params;
}
protected function getConsolidadoPorFuerza($routeClassName)
{
$em = $this ->em;
$conn = $em->getConnection();
$addwhere = '';
$user = $this->getUser();
if ($routeClassName == 'reporteconsolidadofuerza') {
if (isset($this->filterData['proceso']))
{
$proceso = $this->filterData['proceso'];
if (is_array($proceso))
{
$proceso=implode(',',$proceso);
}
$addwhere = " AND pr.id in ( ".$proceso.')';
}
if (isset($this->filterData['centroMovilizacion']))
{
$centro = $this->filterData['centroMovilizacion'];
if (is_array($centro))
$centro=implode(',',$centro);
$addwhere = " AND prlb.lugar in ( ".$centro.')';
}
if (isset($this->filterData['baseMovilizacion']))
{
$base = $this->filterData['baseMovilizacion'];
if (is_array($base))
$base=implode(',',$base);
$addwhere = " AND prlb.base in ( ".$base.')';
}
if (isset($this->filterData['fuerza']))
$addwhere = " AND prul.fuerza = '".$this->filterData['fuerza']."'";
$query =
"SELECT
prul.fuerza,
pr.anno,
pr.llamada,
prlb.nombre_lugar AS centro,
sum(prul.cupo_masculino) AS cupomasculino,
sum(prul.cupo_femenino) AS cupofemenino,
sum(prul.registrado_masculino) AS totalregistromasculino,
sum(prul.registrado_femenino) AS totalregistrofemenino
FROM
proceso_reclutamiento_unidad_lugar prul
INNER JOIN
proceso_reclutamiento pr ON prul.proceso = pr.id
INNER JOIN
proceso_reclutamiento_lugar_base prlb on prlb.proceso = pr.id and prlb.lugar = prul.lugar
WHERE
(pr.id > 0) ".$addwhere."
GROUP BY
prul.fuerza, pr.anno, pr.llamada, prlb.nombre_lugar;";
$statement = $conn->prepare($query);
$datos = $statement->executeQuery()->fetchAllAssociative();
return $datos;
}
else if ($routeClassName == 'consolidadofuerza') {
if (isset($this->filterData['baseMovilizacion']))
{
$base = $this->filterData['baseMovilizacion'];
if (is_array($base))
$base=implode(',',$base);
$addwhere = " AND prlb.base in ( ".$base.')';
}
if (isset($this->filterData['centroMovilizacion']))
{
$centro = $this->filterData['centroMovilizacion'];
if (is_array($centro))
$centro=implode(',',$centro);
$addwhere .= " AND prlb.lugar in ( ".$centro.')';
}
if (isset($this->filterData['unidad']))
{
$unidad = $this->filterData['unidad'];
if (is_array($unidad))
$unidad=implode(',',$unidad);
$addwhere .= " AND prul.unidad in ( ".$unidad.')';
}
$proceso = $em->getRepository('App\\Entity\\ProcesoReclutamiento')->find($this->filterData['proceso']);
$query =
"SELECT
pr.anno,
pr.llamada,
prlb.lugar as id,
prlb.nombre_lugar AS centro_movilizacion,
prul.fuerza,
Sum(COALESCE(prul.registrado_masculino,0)) AS registro_masculino,
Sum(COALESCE(prul.registrado_femenino,0)) AS registro_femenino
FROM
proceso_reclutamiento_unidad_lugar prul
INNER JOIN
proceso_reclutamiento pr ON prul.proceso = pr.id
INNER JOIN
proceso_reclutamiento_lugar_base prlb ON prlb.proceso = pr.id and prlb.lugar=prul.lugar
WHERE
pr.id=".$proceso->getId()." ".$addwhere."
GROUP BY
pr.anno,
pr.llamada,
prlb.lugar,
prlb.nombre_lugar,
prul.fuerza
ORDER BY
prlb.nombre_lugar ASC";
$statement = $conn->prepare($query);
$datos = $statement->executeQuery()->fetchAllAssociative();
$resultados = array();
for ($i=0; $i<count($datos); $i++){
if ($datos[$i]['registro_masculino']>0) {
if (!isset($resultados[$datos[$i]['id'].'-M'])) {
$resultados[$datos[$i]['id'].'-M'] = array(
'centro'=>$datos[$i]['centro_movilizacion'],
'genero'=>'M',
'total'=>0,
'PRIMERA'=>array('TERRESTRE'=>0,
'NAVAL'=>0,
'AEREA'=>0),
'SEGUNDA'=>array('TERRESTRE'=>0,
'NAVAL'=>0,
'AEREA'=>0),
);
}
$resultados[$datos[$i]['id'].'-M'][$datos[$i]['llamada']][$datos[$i]['fuerza']] = $datos[$i]['registro_masculino'];
$resultados[$datos[$i]['id'].'-M']['total'] += $datos[$i]['registro_masculino'];
}
if ($datos[$i]['registro_femenino']>0) {
if (!isset($resultados[$datos[$i]['id'].'-F'])) {
$resultados[$datos[$i]['id'].'-F'] = array(
'centro'=>$datos[$i]['centro_movilizacion'],
'genero'=>'F',
'total'=>0,
'PRIMERA'=>array('TERRESTRE'=>0,
'NAVAL'=>0,
'AEREA'=>0),
'SEGUNDA'=>array('TERRESTRE'=>0,
'NAVAL'=>0,
'AEREA'=>0),
);
}
$resultados[$datos[$i]['id'].'-F'][$datos[$i]['llamada']][$datos[$i]['fuerza']] = $datos[$i]['registro_femenino'];
$resultados[$datos[$i]['id'].'-F']['total'] += $datos[$i]['registro_femenino'];
}
}
return $resultados;
}
return null;
}
protected function getRechazados($routeClassName)
{
$em = $this ->em;
$conn = $em->getConnection();
$addwhere = '';
$user = $this->getUser();
if (isset($this->filterData['baseMovilizacion']))
{
$base = $this->filterData['baseMovilizacion'];
if (is_array($base))
$base=implode(',',$base);
$addwhere = " AND prlb.base in ( ".$base.')';
}
if (isset($this->filterData['centroMovilizacion']))
{
$centro = $this->filterData['centroMovilizacion'];
if (is_array($centro))
$centro=implode(',',$centro);
$addwhere .= " AND prlb.lugar in ( ".$centro.')';
}
$query =
"SELECT
prlb.proceso,
prlb.lugar as item,
prlb.nombre_lugar as nombre,
Sum(COALESCE(prul.cupo_masculino,0)) AS cupo_masculino_total,
Sum(COALESCE(prul.cupo_femenino,0)) AS cupo_femenino_total,
Sum(COALESCE(prul.organico_masculino,0)) AS organico_masculino,
Sum(COALESCE(prul.organico_femenino,0)) AS organico_femenino,
Sum(COALESCE(prul.registrado_masculino,0)) AS registrados_masculinos_total,
Sum(COALESCE(prul.registrado_femenino,0)) AS registrados_femeninos_total,
prlb.registrado_masculino,
prlb.registrado_femenino
FROM
proceso_reclutamiento_lugar_base prlb
INNER JOIN
proceso_reclutamiento_unidad_lugar prul on prul.lugar = prlb.lugar and prul.proceso = prlb.proceso
WHERE
prlb.proceso = ".$this->filterData['proceso']." and prul.proceso= ".$this->filterData['proceso']." ".$addwhere."
GROUP BY
prlb.proceso,
prlb.lugar,
prlb.nombre_lugar,
prlb.registrado_masculino,
prlb.registrado_femenino
ORDER BY
prlb.lugar ASC;";
$statement = $conn->prepare($query);
$datos = $statement->executeQuery()->fetchAllAssociative();
$resultados = array();
$causas = array();
for ($i=0; $i<count($datos); $i++){
//if ($datos[$i]['registro_masculino']>0) {
if (!isset($resultados[$datos[$i]['item'].'-M'])) {
$resultados[$datos[$i]['item'].'-M'] = array(
'centro'=>$datos[$i]['nombre'],
'genero'=>'M',
'organico'=>0,
'cupo'=>0,
'registrados'=>0,
'no_idoneos'=>0,
'rechazos'=>array(),
);
}
$resultados[$datos[$i]['item'].'-M']['organico'] = $datos[$i]['organico_masculino'];
$resultados[$datos[$i]['item'].'-M']['cupo'] = $datos[$i]['cupo_masculino_total'];
// estoy usando registrado de centro
$resultados[$datos[$i]['item'].'-M']['registrados'] = $datos[$i]['registrado_masculino'];
//if ($datos[$i]['registro_femenino']>0) {
if (!isset($resultados[$datos[$i]['item'].'-F'])) {
$resultados[$datos[$i]['item'].'-F'] = array(
'centro'=>$datos[$i]['nombre'],
'genero'=>'F',
'organico'=>0,
'cupo'=>0,
'registrados'=>0,
'no_idoneos'=>0,
'rechazos'=>array(),
);
}
$resultados[$datos[$i]['item'].'-F']['organico'] = $datos[$i]['organico_femenino'];
$resultados[$datos[$i]['item'].'-F']['cupo'] = $datos[$i]['cupo_femenino_total'];
// estoy usando registrado de centro
$resultados[$datos[$i]['item'].'-F']['registrados'] = $datos[$i]['registrado_femenino'];
}
$query =
"SELECT
rp.centro_movilizacion,
COALESCE(rp.causa_rechazo, 'NO DEFINIDA') AS causa,
count(r.sexo = 'Masculino' or null) AS rechazos_masculinos,
count(r.sexo = 'Femenino' or null) AS rechazos_femeninos
FROM
recluta r
INNER JOIN
recluta_proceso rp ON rp.recluta = r.id
INNER JOIN
proceso_reclutamiento_lugar_base prlb ON rp.centro_movilizacion = prlb.lugar and prlb.proceso=rp.proceso
INNER JOIN
centro_movilizacion cm ON rp.centro_movilizacion = cm.id
WHERE
rp.proceso = ".$this->filterData['proceso']." AND
prlb.proceso = ".$this->filterData['proceso']." AND
rp.idoneo = false AND
rp.fecha_resultado IS NOT NULL ".$addwhere."
GROUP BY
rp.centro_movilizacion,
rp.causa_rechazo;";
$statement = $conn->prepare($query);
$datos = $statement->executeQuery()->fetchAllAssociative();
for ($i=0; $i<count($datos); $i++){
$resultados[$datos[$i]['centro_movilizacion'].'-M']['no_idoneos'] += $datos[$i]['rechazos_masculinos']?$datos[$i]['rechazos_masculinos']:0;
$resultados[$datos[$i]['centro_movilizacion'].'-F']['no_idoneos'] += $datos[$i]['rechazos_femeninos']?$datos[$i]['rechazos_femeninos']:0;
if(!isset($resultados[$datos[$i]['centro_movilizacion'].'-M']['rechazos'][$datos[$i]['causa']])){
$resultados[$datos[$i]['centro_movilizacion'].'-M']['rechazos'][$datos[$i]['causa']] = 0;
$resultados[$datos[$i]['centro_movilizacion'].'-F']['rechazos'][$datos[$i]['causa']] = 0;
}
$resultados[$datos[$i]['centro_movilizacion'].'-M']['rechazos'][$datos[$i]['causa']] += $datos[$i]['rechazos_masculinos'];
$resultados[$datos[$i]['centro_movilizacion'].'-F']['rechazos'][$datos[$i]['causa']] += $datos[$i]['rechazos_femeninos'];
if ( $datos[$i]['causa'] !== 'NO DEFINIDA')
$causas[$datos[$i]['causa']] = $datos[$i]['causa'];
}
return array('entities' => $resultados, 'causas' => $causas);
}
protected function getRegistradosPorCentro()
{
$em = $this ->em;
$conn = $em->getConnection();
$addwhere = '';
$inwhere = '';
$user = $this->getUser();
if (isset($this->filterData['baseMovilizacion']))
{
$base = $this->filterData['baseMovilizacion'];
if (is_array($base))
$base=implode(',',$base);
$addwhere = " AND prlb.base in ( ".$base.')';
$inwhere = " AND inprlb.base in ( ".$base.')';
}
if (isset($this->filterData['centroMovilizacion']))
{
$centro = $this->filterData['centroMovilizacion'];
if (is_array($centro))
$centro=implode(',',$centro);
$addwhere .= " AND prlb.lugar in ( ".$centro.')';
$inwhere = " AND inprlb.lugar in ( ".$centro.')';
}
// se puede cambiar los registrados para tomar los de la unidad en lugar de los del centro
// usando registrados_masculinos_total, registrados_femeninos_total
$query =
"SELECT
prlb.proceso,
prlb.lugar as item,
prlb.nombre_lugar as nombre,
Sum(COALESCE(prlb.cupo_masculino,0)) AS cupo_masculino_total,
Sum(COALESCE(prlb.cupo_femenino,0)) AS cupo_femenino_total,
Sum(COALESCE(prlb.organico_masculino,0)) AS organico_masculino,
Sum(COALESCE(prlb.organico_femenino,0)) AS organico_femenino,
Sum(COALESCE(prlb.registrado_masculino,0)) AS registrado_masculino,
Sum(COALESCE(prlb.registrado_femenino,0)) AS registrado_femenino,
idoneos_rechazos.idoneos_femeninos,
idoneos_rechazos.idoneos_masculinos,
idoneos_rechazos.rechazos_masculinos,
idoneos_rechazos.rechazos_femeninos
FROM
proceso_reclutamiento_lugar_base prlb
LEFT JOIN
(
SELECT recluta_proceso.centro_movilizacion,
Count((recluta_proceso.idoneo = true and recluta.sexo = 'Masculino') or null) AS idoneos_masculinos,
Count((recluta_proceso.idoneo = true and recluta.sexo = 'Femenino') or null) AS idoneos_femeninos,
Count((recluta_proceso.idoneo = false and recluta.sexo = 'Masculino') or null) AS rechazos_masculinos,
Count((recluta_proceso.idoneo = false and recluta.sexo = 'Femenino') or null) AS rechazos_femeninos
FROM recluta
INNER JOIN
recluta_proceso ON recluta_proceso.recluta = recluta.id
INNER JOIN
proceso_reclutamiento_lugar_base inprlb ON recluta_proceso.centro_movilizacion = inprlb.lugar AND recluta_proceso.proceso = inprlb.proceso
WHERE
recluta_proceso.proceso = ".$this->filterData['proceso']." AND
recluta_proceso.fecha_resultado IS NOT NULL ".$inwhere."
GROUP BY recluta_proceso.centro_movilizacion
)
as idoneos_rechazos ON idoneos_rechazos.centro_movilizacion = prlb.lugar
WHERE
prlb.proceso = ".$this->filterData['proceso'].$addwhere."
GROUP BY
prlb.proceso,
prlb.lugar,
prlb.nombre_lugar,
idoneos_rechazos.idoneos_femeninos,
idoneos_rechazos.idoneos_masculinos,
idoneos_rechazos.rechazos_masculinos,
idoneos_rechazos.rechazos_femeninos
ORDER BY
prlb.lugar ASC";
$statement = $conn->prepare($query);
$datos = $statement->executeQuery()->fetchAllAssociative();
return $datos;
}
protected function getRegistradosPorBase()
{
$em = $this ->em;
$conn = $em->getConnection();
$addwhere = '';
$inwhere = '';
$user = $this->getUser();
if (isset($this->filterData['baseMovilizacion']))
{
$base = $this->filterData['baseMovilizacion'];
if (is_array($base))
$base=implode(',',$base);
$addwhere = " AND prb.base in ( ".$base.')';
$inwhere = " AND inprlb.base in ( ".$base.')';
}
if (isset($this->filterData['centroMovilizacion']))
{
$centro = $this->filterData['centroMovilizacion'];
if (is_array($centro))
$centro=implode(',',$centro);
$addwhere .= " AND prlb.lugar in ( ".$centro.')';
$inwhere .= " AND inprlb.lugar in ( ".$centro.')';
}
// se puede cambiar los registrados para tomar los de la unidad en lugar de los del centro
// usando registrados_masculinos_total, registrados_femeninos_total
$query =
"SELECT
prb.base as item,
prb.nombre_base as nombre,
idoneos_rechazos.idoneos_femeninos,
idoneos_rechazos.idoneos_masculinos,
idoneos_rechazos.rechazos_masculinos,
idoneos_rechazos.rechazos_femeninos,
Sum(COALESCE(prlb.cupo_masculino,0)) AS cupo_masculino_total,
Sum(COALESCE(prlb.cupo_femenino,0)) AS cupo_femenino_total,
Sum(COALESCE(prlb.organico_masculino,0)) AS organico_masculino,
Sum(COALESCE(prlb.organico_femenino,0)) AS organico_femenino,
Sum(COALESCE(prlb.registrado_masculino,0)) AS registrado_masculino,
Sum(COALESCE(prlb.registrado_femenino,0)) AS registrado_femenino
FROM
proceso_reclutamiento_bases prb
INNER JOIN
proceso_reclutamiento_lugar_base as prlb ON prb.base = prlb.base and prb.proceso=prlb.proceso
LEFT JOIN (
SELECT inprlb.base,
Count((recluta_proceso.idoneo and recluta.sexo = 'Masculino') or null) AS idoneos_masculinos,
Count((recluta_proceso.idoneo = true and recluta.sexo = 'Femenino') or null) AS idoneos_femeninos,
Count((recluta_proceso.idoneo = false and recluta.sexo = 'Masculino') or null) AS rechazos_masculinos,
Count((recluta_proceso.idoneo = false and recluta.sexo = 'Femenino') or null) AS rechazos_femeninos
FROM recluta
INNER JOIN recluta_proceso ON recluta_proceso.recluta = recluta.id
INNER JOIN proceso_reclutamiento_lugar_base inprlb ON recluta_proceso.centro_movilizacion = inprlb.lugar AND recluta_proceso.proceso = inprlb.proceso
WHERE
recluta_proceso.proceso = ".$this->filterData['proceso'].$inwhere." AND
recluta_proceso.fecha_resultado is not NULL
GROUP BY inprlb.base
) as idoneos_rechazos ON idoneos_rechazos.base = prb.base
WHERE
prb.proceso = ".$this->filterData['proceso'].$addwhere."
GROUP BY
prb.base,
prb.nombre_base,
idoneos_rechazos.idoneos_femeninos,
idoneos_rechazos.idoneos_masculinos,
idoneos_rechazos.rechazos_masculinos,
idoneos_rechazos.rechazos_femeninos
ORDER BY
prb.base;";
$statement = $conn->prepare($query);
$datos = $statement->executeQuery()->fetchAllAssociative();
return $datos;
}
protected function getRegistrados($routeClassName)
{
if ($routeClassName == 'registradosbase')
$datos = $this->getRegistradosPorBase();
if ($routeClassName == 'registradoscentro')
$datos = $this->getRegistradosPorCentro();
$resultados = array();
$causas = array();
for ($i=0; $i<count($datos); $i++){
//if ($datos[$i]['registro_masculino']>0) {
if (!isset($resultados[$datos[$i]['item'].'-M'])) {
$resultados[$datos[$i]['item'].'-M'] = array(
'id' => $datos[$i]['item'],
'lugar'=>$datos[$i]['nombre'],
'genero'=>'M',
'organico'=>0,
'cupo'=>0,
'registrados'=>0,
'idoneos'=>0,
'no_idoneos'=>0,
'disponibles'=>0,
'porcentaje_registro'=>0,
'observaciones'=>'',
);
}
$resultados[$datos[$i]['item'].'-M']['organico'] = $datos[$i]['organico_masculino'];
$resultados[$datos[$i]['item'].'-M']['cupo'] = $datos[$i]['cupo_masculino_total'];
// estoy usando registrado de centro
$resultados[$datos[$i]['item'].'-M']['registrados'] = $datos[$i]['registrado_masculino'];
$resultados[$datos[$i]['item'].'-M']['disponibles'] = $datos[$i]['cupo_masculino_total'] - $datos[$i]['registrado_masculino'];
if($datos[$i]['cupo_masculino_total']>0)
$resultados[$datos[$i]['item'].'-M']['porcentaje_registro'] = number_format((($datos[$i]['registrado_masculino']/$datos[$i]['cupo_masculino_total'])*100),2).'%';
if ($resultados[$datos[$i]['item'].'-M']['disponibles'] > 0)
$resultados[$datos[$i]['item'].'-M']['observaciones'] = 'CUPO DISPONIBLE';
else{
if ($datos[$i]['cupo_masculino_total'] > 0)
$resultados[$datos[$i]['item'].'-M']['observaciones'] = 'CUPO LLENO';
}
$resultados[$datos[$i]['item'].'-M']['idoneos'] = $datos[$i]['idoneos_masculinos']?$datos[$i]['idoneos_masculinos']:0;
$resultados[$datos[$i]['item'].'-M']['no_idoneos'] = $datos[$i]['rechazos_masculinos']?$datos[$i]['rechazos_masculinos']:0;
//if ($datos[$i]['registro_femenino']>0) {
if (!isset($resultados[$datos[$i]['item'].'-F'])) {
$resultados[$datos[$i]['item'].'-F'] = array(
'id' => $datos[$i]['item'],
'lugar'=>$datos[$i]['nombre'],
'genero'=>'F',
'organico'=>0,
'cupo'=>0,
'registrados'=>0,
'idoneos'=>0,
'no_idoneos'=>0,
'disponibles'=>0,
'porcentaje_registro'=>0,
'observaciones'=>'',
);
}
$resultados[$datos[$i]['item'].'-F']['organico'] = $datos[$i]['organico_femenino'];
$resultados[$datos[$i]['item'].'-F']['cupo'] = $datos[$i]['cupo_femenino_total'];
// estoy usando registrado de centro
$resultados[$datos[$i]['item'].'-F']['registrados'] = $datos[$i]['registrado_femenino'];
$resultados[$datos[$i]['item'].'-F']['disponibles'] = $datos[$i]['cupo_femenino_total'] - $datos[$i]['registrado_femenino'];
if($datos[$i]['cupo_femenino_total']>0)
$resultados[$datos[$i]['item'].'-M']['porcentaje_registro'] = number_format(($datos[$i]['registrado_femenino']/$datos[$i]['cupo_femenino_total']*100),2).'%';
if ($resultados[$datos[$i]['item'].'-F']['disponibles'] > 0)
$resultados[$datos[$i]['item'].'-F']['observaciones'] = 'CUPO DISPONIBLE';
else{
if ($datos[$i]['cupo_femenino_total']> 0)
$resultados[$datos[$i]['item'].'-F']['observaciones'] = 'CUPO LLENO';
}
$resultados[$datos[$i]['item'].'-F']['idoneos'] = $datos[$i]['idoneos_femeninos']?$datos[$i]['idoneos_femeninos']:0;
$resultados[$datos[$i]['item'].'-F']['no_idoneos'] = $datos[$i]['rechazos_femeninos']?$datos[$i]['rechazos_femeninos']:0;
}
return $resultados;
}
public function exportarReportePDFAction($routeClassName)
{
$em = $this ->em;
$this->setInitialValues('all', $routeClassName);
$params = array(
'routeClassName'=>$routeClassName
);
$twig = '';
if ($routeClassName == 'consolidadofuerza') {
$this->entities = $this->getConsolidadoPorFuerza('consolidadofuerza');
$params['procesoReclutamiento'] = $em->getRepository('App\\Entity\\ProcesoReclutamiento')->find($this->filterData['proceso']);
$twig = 'ProcesoReclutamientoUnidad\\consolidado_fuerza_pdf.html.twig';
}
if ($routeClassName == 'reporterechazos') {
$resultados = $this->getRechazados($routeClassName);
$this->entities = $resultados['entities'];
$params['extra'] = $resultados['causas'];
$twig = 'ProcesoReclutamientoUnidad\\reporte_rechazos_pdf.html.twig';
}
if ($routeClassName == 'registradosbase' || $routeClassName == 'registradoscentro')
{
$this->entities = $this->getRegistrados($routeClassName);
$twig = 'ProcesoReclutamientoUnidad\\registrados_inner_pdf.html.twig';
}
//$params['procesoReclutamiento'] = $em->getRepository('App\\Entity\\ProcesoReclutamiento')->findOneBy(array('anno' => $anno));
$params['entities'] = $this->entities;
$this->routeClassName = $routeClassName;
// Create an instance of the class:
$html = $this->renderView($twig, $params);
$dompdf = new Dompdf();
$dompdf->setPaper('letter', 'landscape');
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream();
}
public function excelAction($rol, $routeClassName)
{
//$this->comunSetInitialValues($routeClassName);
if($routeClassName == 'registradosbase' || $routeClassName == 'registradoscentro')
$this->twigExcelName = 'App:ProcesoReclutamientoUnidad:registrados_inner_excel.html.twig';
if($routeClassName == 'reporterechazos')
$this->twigExcelName = 'App:ProcesoReclutamientoUnidad:reporte_rechazos_excel.html.twig';
if ($routeClassName == 'consolidadofuerza')
$this->twigExcelName = 'App:ProcesoReclutamientoUnidad:consolidado_fuerza_excel.html.twig';
return parent::excelAction($rol, $routeClassName);
}
protected function excelCreateParamsForTwig()
{
$params = parent::excelCreateParamsForTwig();
if ($this->routeClassName == 'reporterechazos')
{
foreach ($params['entities'] as $key=>$entity)
{
foreach ($params['extra'] as $extra)
{
if (isset($entity['rechazos'][$extra]))
{
$params['entities'][$key][$extra] = $entity['rechazos'][$extra];
}
else
{
$params['entities'][$key][$extra] = 0;
}
}
}
}
if ($this->routeClassName == 'consolidadofuerza' && isset($this->filterData['proceso']) && $this->filterData['proceso']) {
$em = $this ->em;
$params['procesoReclutamiento'] = $em->getRepository('App\\Entity\\ProcesoReclutamiento')->find($this->filterData['proceso']);
}
return $params;
}
public function loadUnidadesPorCentroInstruccionRegistradosAction($centro, $sexo)
{
$this->setUtilProperties();
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')
->findOneBy(array('activo'=>true));
$unidades = array();
if ($procesoActivo)
{
$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='.$centro)
->orderBy('unidad.nombre','ASC');
if ($sexo=='F')
{
$unidades->andWhere('u.registradoFemenino>0');
}
else
{
$unidades->andWhere('u.registradoMasculino>0');
}
$unidades=$unidades->getQuery()->getResult();
}
return $this->render('@crud/Common/comboreloaded.html.twig', array("entities"=>$unidades, 'value'=>-1));
}
public function loadUnidadesPorCentroInstruccionCupoAction($centro, $sexo)
{
$this->setUtilProperties();
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')
->findOneBy(array('activo'=>true));
$unidades = array();
if ($procesoActivo)
{
$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='.$centro);
if ($sexo=='F')
{
$unidades->andWhere('u.registradoFemenino<u.cupoFemenino')
->orderBy('u.cupoFemenino','ASC');
}
else
{
$unidades->andWhere('u.registradoMasculino<u.cupoMasculino')
->orderBy('u.cupoMasculino','ASC');
}
$unidades=$unidades->getQuery()->getResult();
if ($sexo=='F')
{
$getCupo = 'getCupoFemenino';
$getRegistrados = 'getRegistradoFemenino';
}
else
{
$getCupo = 'getCupoMasculino';
$getRegistrados = 'getRegistradoMasculino';
}
$preText = array();
foreach ($unidades as $unidad)
{
$capacidad = $unidad->$getCupo()-$unidad->$getRegistrados();
$preText[$unidad->getId()] = '('.$capacidad.') ';
}
}
return $this->render('@crud/Common/comboreloaded.html.twig', array("entities"=>$unidades, 'value'=>-1, 'preText'=>$preText));
}
public function loadInfoForRedistributionAction($unidadOrigen, $unidadDestino, $sexo)
{
$this->setUtilProperties();
$unidadOrigen = $this->em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')->find($unidadOrigen);
$unidadDestino = $this->em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')->find($unidadDestino);
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')
->findOneBy(array('activo'=>true));
$data = array('ok'=>true);
if ($procesoActivo && $unidadOrigen && $unidadDestino)
{
$unidadOrigen = $unidadOrigen->getUnidad();
if ($sexo=='F')
{
$sexo='Femenino';
$data['capacidad'] = $unidadDestino->getCupoFemenino()-$unidadDestino->getRegistradoFemenino();
}
else
{
$sexo='Masculino';
$data['capacidad'] = $unidadDestino->getCupoMasculino()-$unidadDestino->getRegistradoMasculino();
}
$reclutas = $this->em->getRepository('App\\Entity\\ReclutaProceso')
->createQueryBuilder('r')
->innerJoin('r.procesoReclutamiento', 'proceso')
->innerJoin('r.recluta', 'recluta')
->innerJoin('r.unidadMilitar', 'unidad')
->where('proceso.id='.$procesoActivo->getId())
->andWhere('unidad.id='.$unidadOrigen->getId())
->andWhere('r.idoneo=true')
->andWhere('r.fechaResultado is not null')
->andWhere("recluta.sexo='".$sexo."'")
->orderBy('recluta.apellidoPaterno, recluta.apellidoMaterno, recluta.nombres','ASC')
->getQuery()->getResult();
$data['reclutas'] = $this->renderView('@crud/Common/comboreloaded.html.twig', array("entities"=>$reclutas, 'value'=>-1, 'just_items'=>true, 'empty_value'=>true));
}
else
{
$data['ok']=false;
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function redistribuyeReclutasAction()
{
$this->setUtilProperties();
$data=$this->request->get('distribucion');
$unidadOrigen = $this->em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')->find($data['unidadOrigen']);
$unidadDestino = $this->em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')->find($data['unidadDestino']);
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')->findOneBy(array('activo'=>true));
if ($data['transferBy']=='S')
{
$data['reclutas'] = explode(',',$data['reclutas']);
foreach ($data['reclutas'] as $key => $recluta)
{
$data['reclutas'][$key] = $this->em->getRepository('App\\Entity\\ReclutaProceso')->find($recluta);
}
}
else
{
if ($data['sexo']=='F')
{
$data['sexo']='Femenino';
}
else
{
$data['sexo']='Masculino';
}
$data['reclutas'] = $this->em->getRepository('App\\Entity\\ReclutaProceso')
->createQueryBuilder('r')
->innerJoin('r.procesoReclutamiento', 'proceso')
->innerJoin('r.recluta', 'recluta')
->innerJoin('r.unidadMilitar', 'unidad')
->where('proceso.id='.$procesoActivo->getId())
->andWhere('unidad.id='.$unidadOrigen->getUnidad()->getId())
->andWhere('r.idoneo=true')
->andWhere('r.fechaResultado is not null')
->andWhere("recluta.sexo='".$data['sexo']."'")
->setMaxResults($data['cantidad'])
->getQuery()->getResult();
}
$data['message'] = '<ul>';
foreach ($data['reclutas'] as $recluta)
{
if ($recluta)
{
$this->em->getRepository('App\\Entity\\ReclutaProceso')->cambiaReclutaUnidad($recluta->getId(), $unidadDestino->getUnidad()->getId() );
$data['message'] .= '<li>'.$recluta->__toString().'</li>';
}
}
if ($data['message'] != '<ul>')
{
$data['message'] = '<p>RedistribuciĆ³n exitosa</p>'.
'<p>Unidad origen: '.$unidadOrigen->__toString().'</p>'.
'<p>Unidad Destino: '.$unidadDestino->__toString().'</p>'.
'<p>Los reclutas transferidos son:</p>'.$data['message'].'</ul>';
}
else
{
$data['message'] = '<p>No se encontraron reclutas para transferir</p>';
}
$data['ok']=true;
unset($data['sexo']);
unset($data['unidadOrigen']);
unset($data['unidadDestino']);
unset($data['transferBy']);
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
protected function excelGetFields()
{
if ($this->routeClassName == 'registradosbase' || $this->routeClassName == 'registradoscentro')
{
if ($this->routeClassName == 'registradosbase')
{
$labelLugar = $this->translator->trans('registradosbase.fields.base',[],'crud');
}
else
{
$labelLugar = $this->translator->trans('registradosbase.fields.centro',[],'crud');
}
$excelFields = [
'lugar' => [
'nombre' => 'lugar',
'label' => $labelLugar,
],
'organico' => [
'nombre' => 'organico',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.organico',[],'crud'),
],
'cupo' => [
'nombre' => 'cupo',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.cupo',[],'crud'),
],
'registrados' => [
'nombre' => 'registrados',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.registrados',[],'crud'),
],
'idoneos' => [
'nombre' => 'idoneos',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.idoneos',[],'crud'),
],
'no_idoneos' => [
'nombre' => 'no_idoneos',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.no_idoneos',[],'crud'),
],
'disponibles' => [
'nombre' => 'disponibles',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.disponibles',[],'crud'),
],
'porcentaje_registro' => [
'nombre' => 'porcentaje_registro',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.porcentajeRegistro',[],'crud'),
],
'genero' => [
'nombre' => 'genero',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.genero',[],'crud'),
],
'observaciones' => [
'nombre' => 'observaciones',
'label' => $this->translator->trans('reportesprocesoreclutamientounidad.fields.observaciones',[],'crud'),
],
];
return $excelFields;
}
else
if ($this->routeClassName == 'reporterechazos')
{
$excelFields = [
'centro' => [
'label'=>$this->translator->trans('reporterechazos.fields.centro',[],'crud'),
'nombre'=>'centro',
],
'genero' => [
'label'=>$this->translator->trans('reporterechazos.fields.genero',[],'crud'),
'nombre'=>'genero',
],
'organico' => [
'label'=>$this->translator->trans('reporterechazos.fields.organico',[],'crud'),
'nombre'=>'organico',
],
'cupo' => [
'label'=>$this->translator->trans('reporterechazos.fields.cupo',[],'crud'),
'nombre'=>'cupo',
],
'registrados' => [
'label'=>$this->translator->trans('reporterechazos.fields.registrados',[],'crud'),
'nombre'=>'registrados',
],
'BAJAVOLUNTARIA' => [
'label'=>'BAJAVOLUNTARIA',
'nombre'=>'BAJAVOLUNTARIA',
],
'LABORATORIO' => [
'label'=>'LABORATORIO',
'nombre'=>'LABORATORIO',
],
'MEDICA' => [
'label'=>'MEDICA',
'nombre'=>'MEDICA',
],
'PSICOLOGICA' => [
'label'=>'PSICOLOGICA',
'nombre'=>'PSICOLOGICA',
],
'VACUNACION' => [
'label'=>'VACUNACION',
'nombre'=>'VACUNACION',
],
'no_idoneos' => [
'label'=>$this->translator->trans('reporterechazos.fields.no_idoneos',[],'crud'),
'nombre'=>'no_idoneos',
],
];
return $excelFields;
}
else
{
return parent::excelGetFields();
}
}
protected function indexGetFields() {
$fields = parent::indexGetFields();
$bckFields = $fields;
if ($this->routeClassName == 'reporteconsolidadounidad') {
unset($fields['prioridad']);
unset($fields['cupoMasculino']);
unset($fields['cupoFemenino']);
unset($fields['unidad']);
unset($fields['nombreUnidad']);
unset($fields['lugar']);
unset($fields['registradoMasculino']);
unset($fields['registradoFemenino']);
unset($fields['organicoMasculino']);
unset($fields['organicoFemenino']);
$fields['lugar'] = $bckFields['lugar'];
$fields['nombreUnidad'] = $bckFields['nombreUnidad'];
$fields['organicoMasculino'] = $bckFields['organicoMasculino'];
$fields['registradoMasculino'] = $bckFields['registradoMasculino'];
$fields['organicoFemenino'] = $bckFields['organicoFemenino'];
$fields['registradoFemenino'] = $bckFields['registradoFemenino'];
}
else if ($this->routeClassName == 'registradoscentro' || $this->routeClassName == 'registradosbase') {
unset($fields['proceso']);
unset($fields['prioridad']);
unset($fields['cupoMasculino']);
unset($fields['cupoFemenino']);
unset($fields['organicoMasculino']);
unset($fields['organicoFemenino']);
unset($fields['fuerza']);
unset($fields['cupoFemenino']);
unset($fields['unidad']);
unset($fields['registradoMasculino']);
unset($fields['registradoFemenino']);
unset($fields['nombreUnidad']);
unset($fields['lugar']);
if ($this->routeClassName == 'registradoscentro')
$fields['centro'] = array('nombre'=>'centro',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.centro',
array(),
'crud'));
else
$fields['base'] = array('nombre'=>'base',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.base',
array(),
'crud'));
$fields['organico'] = array('nombre'=>'organico',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.organico',
array(),
'crud'));
$fields['cupo'] = array('nombre'=>'cupo',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.cupo',
array(),
'crud'));
$fields['registrados'] = array('nombre'=>'registrados',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.registrados',
array(),
'crud'));
$fields['idoneos'] = array('nombre'=>'idoneos',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.idoneos',
array(),
'crud'));
$fields['no_idoneos'] = array('nombre'=>'no_idoneos',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.no_idoneos',
array(),
'crud'));
$fields['disponibles'] = array('nombre'=>'disponibles',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.disponibles',
array(),
'crud'));
$fields['porcentaje_registro'] = array('nombre'=>'porcentaje_registro',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.porcentajeRegistro',
array(),
'crud'));
$fields['genero'] = array('nombre'=>'genero',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.genero',
array(),
'crud'));
$fields['observaciones'] = array('nombre'=>'observaciones',
'type'=>'string',
'label'=>$this->translator->trans(
$this->translatorBase.'.fields.observaciones',
array(),
'crud'));
}
else {
unset($fields['prioridad']);
unset($fields['organicoMasculino']);
unset($fields['organicoFemenino']);
unset($fields['cupoMasculino']);
unset($fields['registradoMasculino']);
unset($fields['cupoFemenino']);
unset($fields['registradoFemenino']);
unset($fields['nombreUnidad']);
unset($fields['lugar']);
unset($fields['fuerza']);
$fields['organicoMasculino'] = $bckFields['organicoMasculino'];
$fields['cupoMasculino'] = $bckFields['cupoMasculino'];
$fields['registradoMasculino'] = $bckFields['registradoMasculino'];
$fields['organicoFemenino'] = $bckFields['organicoFemenino'];
$fields['cupoFemenino'] = $bckFields['cupoFemenino'];
$fields['registradoFemenino'] = $bckFields['registradoFemenino'];
}
return $fields;
}
protected function getFormFilter()
{
$formulario = parent::getFormFilter();
$repo = $this->em->getRepository('App\\Entity\\ReclutaProceso');
$user = $this->getUser();
unset($formulario['prioridad']);
unset($formulario['cupoMasculino']);
unset($formulario['organicoMasculino']);
unset($formulario['registradoMasculino']);
unset($formulario['cupoFemenino']);
unset($formulario['organicoFemenino']);
unset($formulario['registradoFemenino']);
unset($formulario['lugar']);
unset($formulario['nombreUnidad']);
unset($formulario['organicoMasculino']);
unset($formulario['organicoFemenino']);
$formulario['proceso']['atributos']['multiple']=false;
$formulario['unidad']['atributos']['multiple']=false;
if ($this->routeClassName=='reportecupounidad' || $this->routeClassName=='reporteconsolidadofuerza'
|| $this->routeClassName=='reporteconsolidadounidad' || $this->routeClassName=='consolidadofuerza'
|| $this->routeClassName=='registradosbase' || $this->routeClassName=='registradoscentro'
|| $this->routeClassName=='reporterechazos')
{
array_unshift($formulario, array('nombre' =>'centroMovilizacion',
'tipo' => EntityType::class,
'type' => 'association',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.centro',
array(),
'crud').':',
'class' => 'App\\Entity\\CentroMovilizacion',
'placeholder' => $this->translator->trans('choice_value.empty_value',array(),'crud'),
'required' => false,
'multiple'=>false,
'attr'=>array('style'=>'width: 100%', 'class'=>'chosen-select'))));
array_unshift($formulario, array('nombre' =>'baseMovilizacion',
'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['0']['atributos']['query_builder'] = $repo->queryBasesPorProceso($user);
$formulario['1']['atributos']['query_builder'] = $repo->queryCentrosPorBase($user);
$formulario['unidad']['atributos']['query_builder'] = $repo->queryUnidadesPorCentro($user);
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_UNIDAD'))
{
$formulario[0]['atributos']['disabled'] = true;
$formulario[1]['atributos']['disabled'] = true;
$formulario['unidad']['atributos']['disabled'] = true;
}
if ($this->getUser()->isRoleAssigned('ROLE_COORDINADOR_CENTRO') || $this->getUser()->isRoleAssigned('ROLE_OPERADOR_CENTRO'))
{
$formulario[0]['atributos']['disabled'] = true;
$formulario[1]['atributos']['disabled'] = true;
}
if ($this->getUser()->isRoleAssigned('ROLE_COORDINADOR_BASE'))
{
$formulario[0]['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[1]['atributos']['query_builder'] = $queryBuilder;
$queryBuilder = $this->em->getRepository('App\\Entity\\UnidadMilitar')->createQueryBuilder('u')
->leftJoin('u.centroInstruccion', 'instr')
->where('instr.id='.$this->getUser()->getCentroInstruccion()->getId());
$formulario['unidad']['atributos']['query_builder'] = $queryBuilder;
unset($formulario[0]);
}*/
/*if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION') === true)
{
$queryBuilder = $this->em->getRepository('App\\Entity\\CentroMovilizacion')->createQueryBuilder('c')
->innerJoin('c.centrosInstruccion','instr')->where('instr.id='.$this->getUser()->getCentroInstruccion()->getId());
$formulario['0']['atributos']['query_builder'] = $queryBuilder;
$queryBuilder = $this->em->getRepository('App\\Entity\\UnidadMilitar')
->createQueryBuilder('unidad')
->innerJoin('unidad.centroInstruccion','instr')
->where('instr.id='.$this->getUser()->getCentroInstruccion()->getId())
->orderBy('unidad.nombre');
$formulario['unidad']['atributos']['query_builder'] = $queryBuilder;
}*/
}
$formulario['fuerza']=array('nombre' =>'fuerza',
'tipo' => "Symfony\Component\Form\Extension\Core\Type\ChoiceType",
'type' => 'string',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.fuerza',
array(),
'crud').':',
'choices' => array_flip(TipoFuerzaEnum::getReadables()),
'placeholder' => '--- Seleccione ---',
'required' => false,
'empty_data' => null,
'attr'=>array('style'=>'width: 100%', 'class'=>'chosen-select')));
if ($this->routeClassName == 'reporteconsolidadofuerza' || $this->routeClassName =='consolidadofuerza') {
unset($formulario['unidad']);
}
if ($this->routeClassName != 'reporteconsolidadofuerza' ) {
unset($formulario['fuerza']);
}
if ($this->routeClassName=='registradosbase' || $this->routeClassName=='registradoscentro'
|| $this->routeClassName=='reporterechazos')
{
unset($formulario['unidad']);
}
if ($this->routeClassName == 'consolidadofuerza')
{
//unset($formulario['proceso']);
//unset($formulario['unidad']);
/* $formulario['anno'] = array('nombre' =>'anno',
'tipo' => 'Symfony\Component\Form\Extension\Core\Type\ChoiceType',
'type' => 'string',
'atributos'=> array('label' => $this->translator->trans(
$this->translatorBase.'.fields.anno',
array(),
'crud').':',
'placeholder' => $this->translator->trans('choice_value.empty_value',array(),'crud'),
'required' => false,
'multiple'=>false,
'attr'=>array('style'=>'width: 100%', 'class'=>'chosen-select')));
$annos = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')->createQueryBuilder('p')
->orderBy('p.anno', 'DESC')
->getQuery()->getResult(); //->findAll();
foreach ($annos as $a)
{
$formulario['anno']['atributos']['choices'][$a->getAnno()]=$a->getAnno();
}*/
}
if (isset($formulario['proceso']))
{
$proceso = $formulario['proceso'];
unset($formulario['proceso']);
array_unshift($formulario, $proceso);
}
if ($this->routeClassName=='reportecupolugar')
{
unset($formulario['lugar']);
unset($formulario['unidad']);
unset($formulario['fuerza']);
}
return $formulario;
}
protected function setFiltros()
{
if (!isset($this->filterData['proceso']))
{
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')
->findOneBy(array('activo'=>true));
if ($procesoActivo)
{
$this->filterData['proceso']=$procesoActivo->getId();
}
}
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['baseMovilizacion']= $this->getUser()->getBaseMovilizacion()->getId();
}
if ($this->getUser()->isRoleAssigned('ROLE_OPERADOR_UNIDAD'))
{
$this->filterData['unidad']= $this->getUser()->getUnidadMilitar()->getId();
}
}
}