src/Repository/ReclutaProcesoRepository.php line 197

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Crud\Repository\crudRepository;
  4. /**
  5.  * App\Repository\ReclutaProcesoRepository
  6.  */
  7. class ReclutaProcesoRepository extends crudRepository
  8. {
  9.     function loadResults($params$filtros$order 'ASC')
  10.     {
  11.         $nombre = isset($filtros['reclutaNombre']) ? $filtros['reclutaNombre'] : null
  12.         $edad = isset($filtros['reclutaEdad']) ? $filtros['reclutaEdad'] : null
  13.         $identificacion = isset($filtros['identificacion']) ? $filtros['identificacion'] : (isset($filtros['reclutaIdentificacion']) ? $filtros['reclutaIdentificacion'] : null); 
  14.         $asignacionInicio = isset($filtros['asignacionInicio']) ? $filtros['asignacionInicio'] : null
  15.         
  16.         $base = isset($filtros['reclutaBase']) ? $filtros['reclutaBase'] : null
  17.         
  18.         if (is_array($base))
  19.             $baseimplode(','$base);
  20.         
  21.         $centro = isset($filtros['centroMovilizacion']) ? $filtros['centroMovilizacion'] : null
  22.         $unidad = isset($filtros['unidadMilitar']) ? $filtros['unidadMilitar'] : null
  23.         
  24.         $centroInstruccion= isset($filtros['reclutaCentroInstruccion']) ? $filtros['reclutaCentroInstruccion'] : null
  25.         $turno = isset($filtros['turno']) ? $filtros['turno'] : null
  26.         unset($filtros['reclutaBase']);
  27.         unset($filtros['reclutaNombre']);
  28.         unset($filtros['reclutaEdad']);
  29.         unset($filtros['reclutaIdentificacion']);
  30.         unset($filtros['asignacionInicio']);
  31.         unset($filtros['centroMovilizacion']);
  32.         if ($params['routeClassName']=='nominaunidadinicio')
  33.         {
  34.             unset($filtros['unidadMilitar']);
  35.         }
  36.         
  37.         $query parent::loadResults($params$filtros$order);
  38.         $query->innerJoin('entity.recluta','recluta')->addSelect('recluta');
  39.         
  40.         if ($nombre || $edad || $identificacion)
  41.         {
  42.             if ($nombre)
  43.                 $query->andWhere("upper(recluta.nombres) like '%" strtoupper($nombre) . "%' OR upper(recluta.apellidoMaterno) like '%" strtoupper($nombre) . "%' OR upper(recluta.apellidoPaterno) like '%" strtoupper($nombre) . "%'");
  44.             if ($identificacion)
  45.                 $query->andWhere("upper(recluta.identificacion) like '%" strtoupper($identificacion) . "%'");
  46.             if ($edad)
  47.                 $query->andWhere("recluta.edad = " $edad);
  48.         }
  49.         if ($base && (!$centro || $centro == 'not null') && (!$unidad || $unidad == 'not null'))
  50.         {
  51.             if (!$this->existsAlias($query'baseMovilizacion'))
  52.             {
  53.                 $query->innerJoin('entity.baseMovilizacion''base')->addSelect('base');
  54.             }
  55.             $query->andWhere('base.id in ('.$base.')');
  56.         }
  57.         
  58.         if ($centro && $centro != 'not null' && (!$unidad || $unidad == 'not null'))
  59.         {
  60.             if (!$this->existsAlias($query'centroMovilizacion'))
  61.             {
  62.                 $query->innerJoin('entity.centroMovilizacion''centroMovilizacion')->addSelect('centroMovilizacion');
  63.             }
  64.             $query->andWhere('centroMovilizacion.id in ('.$centro.')');
  65.         }
  66.         
  67.         if ($centroInstruccion)
  68.         {
  69.             if (!$this->existsAlias($query'unidadMilitar'))
  70.             {
  71.                 $query->innerJoin('entity.unidadMilitar''unidadMilitar')->addSelect('unidadMilitar');
  72.             }
  73.             $query->innerJoin('unidadMilitar.centroInstruccion''centroInstruccion');
  74.             
  75.             $query->andWhere('centroInstruccion.id in ('.$centroInstruccion.')');
  76.         }
  77.         
  78.         if ($asignacionInicio == 'true') {
  79.             if (!$this->existsAlias($query'procesoReclutamiento'))
  80.             {
  81.                 $query->innerJoin('entity.procesoReclutamiento''proceso');
  82.             }
  83.             $query->andWhere('entity.fechaAsignacion >= proceso.fechaAcuartelamiento')
  84.                   ->andWhere('entity.fechaAsignacion <= proceso.fechaFinDias')
  85.             ;
  86.         }
  87.         
  88.         if ((!$turno || $turno == 'not null') && $params['routeClassName'] != 'aspirantesencuesta' && $params['routeClassName'] != 'aspirantescursos' )
  89.         {
  90.             $query->andWhere('entity.turno is not null');
  91.         }
  92.         
  93.         if ($params['routeClassName'] == 'nominaacuartelados'
  94.         {
  95.             $query->orderBy('entity.centroMovilizacion ASC, entity.unidadMilitar ASC, recluta.nombres''ASC');
  96.         }
  97.         else if ($params['routeClassName']=='listaasignacionbase')
  98.         {
  99.             $query->orderBy('entity.centroMovilizacion ASC, entity.unidadMilitar''ASC');
  100.         }
  101.         else if ($params['routeClassName']=='reportebajas')
  102.         {
  103.             $query->andWhere('entity.idoneo = false')
  104.                     ->andWhere('entity.fechaResultado is not null')
  105.                     ->orderBy('entity.centroMovilizacion ASC, entity.unidadMilitar''ASC');
  106.         }
  107.         else if ($params['routeClassName']=='nominaunidadinicio')
  108.         {
  109.             $query->andWhere('entity.unidadMilitar = '.$unidad.' OR entity.unidadMilitarInicial = '.$unidad)
  110.                 ->orderBy('recluta.nombres''ASC');
  111.         }
  112.         else if ($params['routeClassName']=='certificadovacunacion')
  113.         {
  114.             $query->orderBy('recluta.nombres''ASC');
  115.         }
  116.         else
  117.         { 
  118.             $query->orderBy('entity.turno''ASC');
  119.         }
  120.         if (isset($filtros['pregunta']) && $filtros['pregunta'])
  121.         {
  122.             if ($filtros['pregunta']=='EstudioStr')
  123.             {
  124.                 $filtros['pregunta'] = 'Estudio';
  125.             }
  126.             $query->andWhere('entity.'.lcfirst($filtros['pregunta']).' is not null');
  127.         }
  128.         $query->orderBy('entity.id''DESC');
  129.         return $query;
  130.     }
  131.     
  132.     
  133.     public function getNotificacionesNoLeidas($idUsuario)
  134.     {
  135.         $query $this->createQueryBuilder('n')
  136.                         ->innerJoin('n.usuario','u')
  137.                         ->where('n.leida = FALSE')
  138.                         ->andwhere("u.id =".$idUsuario)
  139.                         ->orderBy('n.asunto ASC, n.fechaIngreso','DESC');
  140.         return $query->getQuery()->getResult();
  141.     }
  142.     
  143.     public function cambiaReclutaUnidad($reclutaProceso$unidadDestino)
  144.     {
  145.         $reclutaProceso $this->find($reclutaProceso);
  146.         $sexo $reclutaProceso->getRecluta()->getSexo();
  147.         $unidadOriginal $reclutaProceso->getUnidadMilitar();
  148.         $proceso $reclutaProceso->getProcesoReclutamiento();
  149.         $procesoUnidadOriginal $this->_em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')
  150.             ->findOneBy(array('proceso'=>$proceso->getId(), 'unidad'=>$unidadOriginal->getId()));
  151.         $unidadDestino $this->_em->getRepository('App\\Entity\\UnidadMilitar')->find($unidadDestino);
  152.         $procesoUnidadDestino $this->_em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')
  153.             ->findOneBy(array('proceso'=>$proceso->getId(), 'unidad'=>$unidadDestino->getId()));
  154.         
  155.         if (
  156.             ($sexo=='Masculino' && $procesoUnidadDestino->getCupoMasculino()<=$procesoUnidadDestino->getRegistradoMasculino())
  157.             ||
  158.             ($sexo=='Femenino' && $procesoUnidadDestino->getCupoFemenino()<=$procesoUnidadDestino->getRegistradoFemenino())
  159.             )
  160.         {
  161.             return false//$data = array('ok'=>false, 'error'=>'No hay cupo');
  162.         }
  163.         else
  164.         {
  165.             if ($sexo=='Masculino')
  166.             {
  167.                 $procesoUnidadOriginal->setRegistradoMasculino($procesoUnidadOriginal->getRegistradoMasculino()-1);
  168.                 $procesoUnidadDestino->setRegistradoMasculino($procesoUnidadDestino->getRegistradoMasculino()+1);
  169.             }
  170.             else
  171.             {
  172.                 $procesoUnidadOriginal->setRegistradoFemenino($procesoUnidadOriginal->getRegistradoFemenino()-1);
  173.                 $procesoUnidadDestino->setRegistradoFemenino($procesoUnidadDestino->getRegistradoFemenino()+1);
  174.             }
  175.             
  176.             $reclutaProceso->setUnidadMilitar($unidadDestino);
  177.             $this->_em->persist($reclutaProceso);
  178.             $this->_em->persist($procesoUnidadOriginal);
  179.             $this->_em->persist($procesoUnidadDestino);
  180.             $this->_em->flush();
  181.         }
  182.         return true;
  183.     }
  184.     
  185.     public function loadBasesPorProceso($user$proceso = -1)
  186.     {
  187.         $bases $this->queryBasesPorProceso($user$proceso);
  188.         $bases $bases->getQuery()->getResult();
  189.         return $bases;
  190.     }
  191.         
  192.     public function queryBasesPorProceso($user$proceso = -1)
  193.     {
  194.         $em $this->_em;
  195.      
  196.         if ($proceso == -1)
  197.         {
  198.             $proceso $em->getRepository('App\\Entity\\ProcesoReclutamiento')
  199.                     ->findOneBy(array('activo'=>true));
  200.             $proceso $proceso->getId();
  201.         }
  202.         
  203.         if ($user->isRoleAssigned('ROLE_OPERADOR_UNIDAD'))
  204.         {
  205.             $procesoReclutamientoUnidades $em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')
  206.                 ->createQueryBuilder('pru')
  207.                 ->select('pru_centro.id')
  208.                 ->innerJoin('pru.proceso''pru_proceso')
  209.                 ->innerJoin('pru.lugar''pru_centro')
  210.                 ->innerJoin('pru.unidad''pru_unidad')
  211.                 ->where('pru_proceso.id = '.$proceso)
  212.                 ->andWhere('pru_unidad.id = '.$user->getUnidadMilitar()->getId())
  213.                 ->getQuery()->getDql();
  214.             $procesoReclutamientoCentros $em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')
  215.                 ->createQueryBuilder('prc')
  216.                 ->select('prc_base.id')
  217.                 ->innerJoin('prc.proceso''prc_proceso')
  218.                 ->innerJoin('prc.base''prc_base')
  219.                 ->innerJoin('prc.lugar''prc_centro')
  220.                 ->where('prc_proceso.id = '.$proceso)
  221.                 ->andWhere('prc_centro.id in ('.$procesoReclutamientoUnidades.')')
  222.                 ->getQuery()->getDql();
  223.         }      
  224.         
  225.         if ($user->isRoleAssigned('ROLE_OPERADOR_CENTRO') || $user->isRoleAssigned('ROLE_COORDINADOR_CENTRO'
  226.             || $user->isRoleAssigned('ROLE_PSICOLOGO')/* || $user->isRoleAssigned('ROLE_PSICOLOGO_JEFE')*/ )
  227.         {
  228.             $procesoReclutamientoCentros $em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')
  229.                 ->createQueryBuilder('prc')
  230.                 ->select('prc_base.id')
  231.                 ->innerJoin('prc.proceso''prc_proceso')
  232.                 ->innerJoin('prc.base''prc_base')
  233.                 ->innerJoin('prc.lugar''prc_centro')
  234.                 ->where('prc_proceso.id = '.$proceso)
  235.                 ->andWhere('prc_centro.id = '.$user->getCentroMovilizacion()->getId())
  236.                 ->getQuery()->getDql();
  237.         }  
  238.         
  239.         
  240.         if ($user->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION'))
  241.         {
  242.             $procesoReclutamientoCentros $em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')
  243.                 ->createQueryBuilder('prc')
  244.                 ->select('prc_base.id')
  245.                 ->innerJoin('prc.proceso''prc_proceso')
  246.                 ->innerJoin('prc.base''prc_base')
  247.                 ->innerJoin('prc.lugar''prc_centro')
  248.                 ->innerJoin('prc_centro.centrosInstruccion','centrosInstruccion')
  249.                 ->where('prc_proceso.id = '.$proceso)
  250.                 ->andWhere('centrosInstruccion.id = '.$user->getCentroInstruccion()->getId())
  251.                 ->getQuery()->getDql();
  252.         }  
  253.         
  254.         
  255.         $procesoReclutamientoBases $em->getRepository('App\\Entity\\ProcesoReclutamientoBase')
  256.             ->createQueryBuilder('prb')
  257.             ->select('prb_base.id')
  258.             ->innerJoin('prb.proceso''prb_proceso')
  259.             ->innerJoin('prb.base''prb_base')
  260.             ->where('prb_proceso.id = :PROCESO');
  261.         
  262.         if ($user->isRoleAssigned('ROLE_OPERADOR_UNIDAD') || $user->isRoleAssigned('ROLE_OPERADOR_CENTRO') || 
  263.             $user->isRoleAssigned('ROLE_COORDINADOR_CENTRO') || $user->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION') ||
  264.             $user->isRoleAssigned('ROLE_PSICOLOGO')/* || $user->isRoleAssigned('ROLE_PSICOLOGO_JEFE')*/)
  265.         {
  266.             $procesoReclutamientoBases->andWhere('prb_base.id in ('.$procesoReclutamientoCentros.')');
  267.         }        
  268.         $procesoReclutamientoBases =  $procesoReclutamientoBases->getQuery()->getDql();
  269.         $bases $em->getRepository('App\\Entity\\BaseMovilizacion')
  270.             ->createQueryBuilder('b')
  271.             ->where('b.id in ('.$procesoReclutamientoBases.')')
  272.             ->setParameter('PROCESO'$proceso)
  273.             ->orderBy('b.nombre');
  274.         
  275.         if ($user->isRoleAssigned('ROLE_COORDINADOR_BASE'))
  276.         {
  277.             $bases->andWhere('b.id = '.$user->getBaseMovilizacion()->getId());
  278.         }
  279.         return $bases;
  280.     }
  281.         
  282.     public function loadCentrosPorBase($user$base=-1$proceso=-1)
  283.     {
  284.         $centros $this->queryCentrosPorBase($user$base$proceso);
  285.         $centros $centros->getQuery()->getResult();
  286.         return $centros;
  287.     }
  288.         
  289.     public function queryCentrosPorBase($user$base=-1$proceso=-1)
  290.     {
  291.         $em $this->_em;
  292.         
  293.         if ($proceso == -1)
  294.         {
  295.             $proceso $em->getRepository('App\\Entity\\ProcesoReclutamiento')
  296.                     ->findOneBy(array('activo'=>true));
  297.             $proceso $proceso->getId();
  298.         }
  299.         if ($user->isRoleAssigned('ROLE_OPERADOR_UNIDAD'))
  300.         {
  301.             $procesoReclutamientoUnidades $em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')
  302.                 ->createQueryBuilder('pru')
  303.                 ->select('pru_centro.id')
  304.                 ->innerJoin('pru.proceso''pru_proceso')
  305.                 ->innerJoin('pru.lugar''pru_centro')
  306.                 ->innerJoin('pru.unidad''pru_unidad')
  307.                 ->where('pru_proceso.id = '.$proceso)
  308.                 ->andWhere('pru_unidad.id = '.$user->getUnidadMilitar()->getId())
  309.                 ->getQuery()->getDql();
  310.         }        
  311.         
  312.         $procesoReclutamientoCentros $em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')
  313.             ->createQueryBuilder('prc')
  314.             ->select('prc_centro.id')
  315.             ->innerJoin('prc.proceso''prc_proceso')
  316.             ->innerJoin('prc.base''prc_base')
  317.             ->innerJoin('prc.lugar''prc_centro')
  318.             ->where('prc_proceso.id = '.$proceso);
  319.                  
  320.         
  321.         if ($base != -1)
  322.         {
  323.             $procesoReclutamientoCentros->andWhere('prc_base.id = '.$base);
  324.         }
  325.         
  326.         if ($user->isRoleAssigned('ROLE_COORDINADOR_BASE'))
  327.         {
  328.             $procesoReclutamientoCentros
  329.                 ->andWhere('prc_base.id = '.$user->getBaseMovilizacion()->getId());
  330.         }        
  331.         if ($user->isRoleAssigned('ROLE_OPERADOR_UNIDAD'))
  332.         {
  333.             $procesoReclutamientoCentros
  334.                 ->andWhere('prc_centro.id in ('.$procesoReclutamientoUnidades.')');
  335.         }
  336.         $procesoReclutamientoCentros $procesoReclutamientoCentros->getQuery()->getDql();
  337.         $centros $em->getRepository('App\\Entity\\CentroMovilizacion')
  338.             ->createQueryBuilder('c')
  339.             ->where('c.id in ('.$procesoReclutamientoCentros.')')
  340.             ->orderBy('c.nombre');
  341.         if ($user->isRoleAssigned('ROLE_OPERADOR_CENTRO') || $user->isRoleAssigned('ROLE_COORDINADOR_CENTRO') ||
  342.             $user->isRoleAssigned('ROLE_PSICOLOGO')/* || $user->isRoleAssigned('ROLE_PSICOLOGO_JEFE')*/ )
  343.         {
  344.             $centros
  345.                 ->andWhere('c.id = '.$user->getCentroMovilizacion()->getId());
  346.         }  
  347.         
  348.         if ($user->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION'))
  349.         {
  350.             
  351.                 $centros->innerJoin('c.centrosInstruccion','centrosInstruccion')
  352.                 ->andWhere('centrosInstruccion.id = '.$user->getCentroInstruccion()->getId());               
  353.         } 
  354.         
  355.         return $centros;
  356.     }
  357.         
  358.     public function loadUnidadesPorCentro($user$centro=-1$proceso=-1)
  359.     {
  360.         $unidades $this->queryUnidadesPorCentro($user$centro$proceso);
  361.         $unidades $unidades->getQuery()->getResult();
  362.         return $unidades;
  363.     }
  364.         
  365.     public function queryUnidadesPorCentro($user$centro=-1$proceso=-1)
  366.     {
  367.         $em $this->_em;
  368.         
  369.         if ($proceso == -1)
  370.         {
  371.             $proceso $em->getRepository('App\\Entity\\ProcesoReclutamiento')
  372.                     ->findOneBy(array('activo'=>true));
  373.             $proceso $proceso->getId();
  374.         }
  375.         
  376.         if ($user->isRoleAssigned('ROLE_COORDINADOR_BASE'))
  377.         {
  378.             $procesoReclutamientoCentro $em->getRepository('App\\Entity\\ProcesoReclutamientoCentro')
  379.                 ->createQueryBuilder('prc')
  380.                 ->innerJoin('prc.lugar''prc_centro')
  381.                 ->select('prc_centro.id')
  382.                 ->innerJoin('prc.proceso''prc_proceso')
  383.                 ->innerJoin('prc.base''prc_base')
  384.                 ->where('prc_proceso.id = '.$proceso)
  385.                 ->andWhere('prc_base.id = '.$user->getBaseMovilizacion()->getId())
  386.                 ->getQuery()->getDql();
  387.         }        
  388.         $procesoReclutamientoUnidades $em->getRepository('App\\Entity\\ProcesoReclutamientoUnidad')
  389.             ->createQueryBuilder('pru')
  390.             ->select('pru_unidad.id')
  391.             ->innerJoin('pru.proceso''pru_proceso')
  392.             ->innerJoin('pru.lugar''pru_centro')
  393.             ->innerJoin('pru.unidad''pru_unidad')
  394.             ->where('pru_proceso.id = '.$proceso);
  395.         if ($centro != -1)
  396.         {
  397.             $procesoReclutamientoUnidades->andWhere('pru_centro.id = '.$centro);
  398.         }
  399.         if ($user->isRoleAssigned('ROLE_COORDINADOR_BASE'))
  400.         {
  401.             $procesoReclutamientoUnidades->andWhere('pru_centro.id in ('.$procesoReclutamientoCentro.')');
  402.         }        
  403.         if ($user->isRoleAssigned('ROLE_OPERADOR_CENTRO') || $user->isRoleAssigned('ROLE_COORDINADOR_CENTRO'))
  404.         {
  405.             $procesoReclutamientoUnidades->andWhere('pru_centro.id = '.$user->getCentroMovilizacion()->getId());
  406.         }
  407.         $procesoReclutamientoUnidades $procesoReclutamientoUnidades->getQuery()->getDql();
  408.             
  409.         $unidades $em->getRepository('App\\Entity\\UnidadMilitar')
  410.             ->createQueryBuilder('u')
  411.             ->where('u.id in ('.$procesoReclutamientoUnidades.')')
  412.             ->orderBy('u.nombre');
  413.         if ($user->isRoleAssigned('ROLE_OPERADOR_UNIDAD') && $user->getUnidadMIlitar())
  414.         {
  415.            $unidades->andWhere('u.id = '.$user->getUnidadMIlitar()->getId());
  416.         }
  417.         
  418.         if ($user->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION') && $user->getUnidadMIlitar())
  419.         {
  420.            $unidades->innerJoin('u.centroInstruccion','instr')
  421.                         ->where('instr.id='.$user->getCentroInstruccion()->getId());
  422.         }
  423.         
  424.         
  425.          
  426.                  
  427.         
  428.         return $unidades;
  429.     }
  430.       
  431. }