src/Repository/IncidenciaRepository.php line 324

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Incidencia;
  4. use App\Entity\Proceso;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use  App\Utils\CustomPaginator;
  8. use DateInterval;
  9. /**
  10.  * @method Incidencia|null find($id, $lockMode = null, $lockVersion = null)
  11.  * @method Incidencia|null findOneBy(array $criteria, array $orderBy = null)
  12.  * @method Incidencia[]    findAll()
  13.  * @method Incidencia[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  14.  */
  15. class IncidenciaRepository extends ServiceEntityRepository
  16. {
  17.     public function __construct(ManagerRegistry $registry)
  18.     {
  19.         parent::__construct($registryIncidencia::class);
  20.     }
  21.     // /**
  22.     //  * @return Incidencia[] Returns an array of Incidencia objects
  23.     //  */
  24.     /*
  25.     public function findByExampleField($value)
  26.     {
  27.         return $this->createQueryBuilder('i')
  28.             ->andWhere('i.exampleField = :val')
  29.             ->setParameter('val', $value)
  30.             ->orderBy('i.id', 'ASC')
  31.             ->setMaxResults(10)
  32.             ->getQuery()
  33.             ->getResult()
  34.         ;
  35.     }
  36.     */
  37.     /*
  38.     public function findOneBySomeField($value): ?Incidencia
  39.     {
  40.         return $this->createQueryBuilder('i')
  41.             ->andWhere('i.exampleField = :val')
  42.             ->setParameter('val', $value)
  43.             ->getQuery()
  44.             ->getOneOrNullResult()
  45.         ;
  46.     }
  47.     */
  48.     public function getIncidenciaByUsuarioFase($operario$fase)
  49.     {
  50.         $parameters = array();
  51.         $query $this->createQueryBuilder('incidencia')
  52.             ->leftJoin('incidencia.inciOperario''operario')
  53.             ->leftJoin('incidencia.inciFase''fase');
  54.         $query->andWhere('(
  55.             operario.id = :where1 and
  56.             fase.id = :where2 and
  57.             incidencia.inciSolucionada = false
  58.         )');
  59.         $parameters[':where1'] = $operario;
  60.         $parameters[':where2'] = $fase;
  61.         if (!empty($parameters)) {
  62.             $query->setParameters($parameters);
  63.         }
  64.         $results $query->getQuery()->getOneOrNullResult();
  65.         return $results;
  66.     }
  67.     public function getAllIncidencias($data$currentPage 1$limit 12$sort$order$solucionada null)
  68.     {
  69.         $parameters = array();
  70.         $query $this->createQueryBuilder('Incidencia')
  71.             ->leftJoin("Incidencia.inciFase""Fase")
  72.             ->leftJoin("Fase.Proceso""Proceso")
  73.             ->leftJoin("Incidencia.inciOperario""Operario");
  74.         if (isset($data['value']) && $data['value'] != "") {
  75.             $query->andWhere('(
  76.                 Incidencia.inciMotivo like :where1 or
  77.                 Operario.username like :where1 or
  78.                 Fase.ProcesoBloqFasNombre like :where1
  79.             )');
  80.             $parameters[':where1'] = "%" $data['value'] . "%";
  81.         }
  82.         if ($solucionada != null) {
  83.             $query->andWhere(
  84.                 'Incidencia.inciSolucionada = :where3'
  85.             );
  86.             $parameters[':where3'] = $solucionada;
  87.         }
  88.         if (isset($data['fase']) && '' != $data['fase']) {
  89.             $query->andWhere('(
  90.                 Fase.ProcesoBloqFasNombre like :fase
  91.             )');
  92.             $parameters[':fase'] = '%' $data['fase'] . '%';
  93.         }
  94.         if (isset($data['motivo']) && '' != $data['motivo']) {
  95.             $query->andWhere('(
  96.                 Incidencia.inciMotivo like :motivo
  97.             )');
  98.             $parameters[':motivo'] = '%' $data['motivo'] . '%';
  99.         }
  100.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  101.             $query->andWhere('(
  102.                 Proceso.ProcNombre like :proyecto
  103.             )');
  104.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  105.         }
  106.         if (isset($data['operario']) && '' != $data['operario']) {
  107.             $query->andWhere('(
  108.                 Operario.UsuarioNombre like :operario
  109.             )');
  110.             $parameters[':operario'] = '%' $data['operario'] . '%';
  111.         }
  112.         if (isset($data['solucionada']) && null !== $data['solucionada']) {
  113.             $query->andWhere(
  114.                 'Incidencia.inciSolucionada = :solucionada'
  115.             );
  116.             $parameters[':solucionada'] = ($data['solucionada'] == false true);
  117.         }
  118.         if (!empty($parameters)) {
  119.             $query->setParameters($parameters);
  120.         }
  121.         $query->addOrderBy($sort$order);
  122.         $query->getQuery();
  123.         $paginator  = new CustomPaginator($query);
  124.         $result     $paginator->paginate($currentPage$limit);
  125.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  126.             $result $paginator->paginate(1$limit);
  127.         }
  128.         return $result;
  129.     }
  130.     public function getAllIncidenciasSchneider($data$currentPage 1$limit 12$sort$order$solucionada null)
  131.     {
  132.         $parameters = array();
  133.         $query $this->createQueryBuilder('Incidencia')
  134.             ->leftJoin("Incidencia.inciFase""Fase")
  135.             ->leftJoin("Fase.Proceso""Proceso")
  136.             ->leftJoin("Incidencia.inciOperario""Operario")
  137.             ->andWhere('Proceso.ProcesoSchneider = true');
  138.         if (isset($data['value']) && $data['value'] != "") {
  139.             $query->andWhere('(
  140.                 Incidencia.inciMotivo like :where1 or
  141.                 Operario.username like :where1 or
  142.                 Fase.ProcesoBloqFasNombre like :where1
  143.             )');
  144.             $parameters[':where1'] = "%" $data['value'] . "%";
  145.         }
  146.         $query->andWhere(
  147.             'Incidencia.inciSolucionada = :solucionada'
  148.         );
  149.         $parameters[':solucionada'] = $solucionada;
  150.         if (isset($data['fase']) && '' != $data['fase']) {
  151.             $query->andWhere('(
  152.                 Fase.ProcesoBloqFasNombre like :fase
  153.             )');
  154.             $parameters[':fase'] = '%' $data['fase'] . '%';
  155.         }
  156.         if (isset($data['motivo']) && '' != $data['motivo']) {
  157.             $query->andWhere('(
  158.                 Incidencia.inciMotivo like :motivo
  159.             )');
  160.             $parameters[':motivo'] = '%' $data['motivo'] . '%';
  161.         }
  162.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  163.             $query->andWhere('(
  164.                 Proceso.ProcNombre like :proyecto
  165.             )');
  166.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  167.         }
  168.         if (isset($data['operario']) && '' != $data['operario']) {
  169.             $query->andWhere('(
  170.                 Operario.UsuarioNombre like :operario
  171.             )');
  172.             $parameters[':operario'] = '%' $data['operario'] . '%';
  173.         }
  174.         if (isset($data['solucionada']) && null !== $data['solucionada']) {
  175.             $query->andWhere(
  176.                 'Incidencia.inciSolucionada = :solucionada'
  177.             );
  178.             $parameters[':solucionada'] = ($data['solucionada'] == false true);
  179.         }
  180.         if (!empty($parameters)) {
  181.             $query->setParameters($parameters);
  182.         }
  183.         $query->addOrderBy($sort$order);
  184.         $query->getQuery();
  185.         $paginator  = new CustomPaginator($query);
  186.         $result     $paginator->paginate($currentPage$limit);
  187.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  188.             $result $paginator->paginate(1$limit);
  189.         }
  190.         return $result;
  191.     }
  192.     public function getAllActivoProyecto($data$currentPage 1$limit 12$sort$order$solucionada false)
  193.     {
  194.         $parameters = array();
  195.         $query $this->createQueryBuilder('Incidencia')
  196.             ->leftJoin("Incidencia.inciFase""Fase")
  197.             ->leftJoin("Fase.Proceso""Proceso")
  198.             ->leftJoin("Incidencia.inciOperario""Operario")
  199.             ->andWhere('Proceso.ProcesoSchneider = false or
  200.             Proceso.ProcesoSchneider is null
  201.             ');
  202.         if (isset($data['value']) && $data['value'] != "") {
  203.             $query->andWhere('(
  204.                 Incidencia.inciMotivo like :where1 or
  205.                 Operario.username like :where1 or
  206.                 Fase.ProcesoBloqFasNombre like :where1
  207.             )');
  208.             $parameters[':where1'] = "%" $data['value'] . "%";
  209.         }
  210.         $query->andWhere(
  211.             'Incidencia.inciSolucionada = :solucionada'
  212.         );
  213.         $parameters[':solucionada'] = $solucionada;
  214.         if (isset($data['fase']) && '' != $data['fase']) {
  215.             $query->andWhere('(
  216.                 Fase.ProcesoBloqFasNombre like :fase
  217.             )');
  218.             $parameters[':fase'] = '%' $data['fase'] . '%';
  219.         }
  220.         if (isset($data['motivo']) && '' != $data['motivo']) {
  221.             $query->andWhere('(
  222.                 Incidencia.inciMotivo like :motivo
  223.             )');
  224.             $parameters[':motivo'] = '%' $data['motivo'] . '%';
  225.         }
  226.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  227.             $query->andWhere('(
  228.                 Proceso.ProcNombre like :proyecto
  229.             )');
  230.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  231.         }
  232.         if (isset($data['operario']) && '' != $data['operario']) {
  233.             $query->andWhere('(
  234.                 Operario.UsuarioNombre like :operario
  235.             )');
  236.             $parameters[':operario'] = '%' $data['operario'] . '%';
  237.         }
  238.         if (isset($data['solucionada']) && null !== $data['solucionada']) {
  239.             $query->andWhere(
  240.                 'Incidencia.inciSolucionada = :solucionada'
  241.             );
  242.             $parameters[':solucionada'] = ($data['solucionada'] == false true);
  243.         }
  244.         if (!empty($parameters)) {
  245.             $query->setParameters($parameters);
  246.         }
  247.         $query->addOrderBy($sort$order);
  248.         $query->getQuery();
  249.         $paginator  = new CustomPaginator($query);
  250.         $result     $paginator->paginate($currentPage$limit);
  251.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  252.             $result $paginator->paginate(1$limit);
  253.         }
  254.         return $result;
  255.     }
  256.     public function getAllIncidenciasByPersona($data$currentPage 1$limit 12$sort$order$solucionada null$usuario_id)
  257.     {
  258.         $parameters = array();
  259.         $query $this->createQueryBuilder('Incidencia')
  260.             ->leftJoin("Incidencia.inciFase""Fase")
  261.             ->leftJoin("Fase.Proceso""Proceso")
  262.             ->leftJoin("Incidencia.inciOperario""Operario")
  263.             ->andWhere('Operario.id = :usuario_id');
  264.         $parameters[':usuario_id'] = $usuario_id;
  265.         if (isset($data['value']) && $data['value'] != "") {
  266.             $query->andWhere('(
  267.                 Incidencia.inciMotivo like :where1 or
  268.                 Operario.username like :where1 or
  269.                 Fase.ProcesoBloqFasNombre like :where1
  270.             )');
  271.             $parameters[':where1'] = "%" $data['value'] . "%";
  272.         }
  273.         if ($solucionada != null) {
  274.             $query->andWhere(
  275.                 'Incidencia.inciSolucionada = :where3'
  276.             );
  277.             $parameters[':where3'] = $solucionada;
  278.         }
  279.         if (isset($data['fase']) && '' != $data['fase']) {
  280.             $query->andWhere('(
  281.                 Fase.ProcesoBloqFasNombre like :fase
  282.             )');
  283.             $parameters[':fase'] = '%' $data['fase'] . '%';
  284.         }
  285.         if (isset($data['motivo']) && '' != $data['motivo']) {
  286.             $query->andWhere('(
  287.                 Incidencia.inciMotivo like :motivo
  288.             )');
  289.             $parameters[':motivo'] = '%' $data['motivo'] . '%';
  290.         }
  291.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  292.             $query->andWhere('(
  293.                 Proceso.ProcNombre like :proyecto
  294.             )');
  295.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  296.         }
  297.         if (isset($data['operario']) && '' != $data['operario']) {
  298.             $query->andWhere('(
  299.                 Operario.UsuarioNombre like :operario
  300.             )');
  301.             $parameters[':operario'] = '%' $data['operario'] . '%';
  302.         }
  303.         if (isset($data['solucionada']) && null !== $data['solucionada']) {
  304.             $query->andWhere(
  305.                 'Incidencia.inciSolucionada = :solucionada'
  306.             );
  307.             $parameters[':solucionada'] = ($data['solucionada'] == false true);
  308.         }
  309.         if (!empty($parameters)) {
  310.             $query->setParameters($parameters);
  311.         }
  312.         $query->addOrderBy($sort$order);
  313.         $query->getQuery();
  314.         $paginator  = new CustomPaginator($query);
  315.         $result     $paginator->paginate($currentPage$limit);
  316.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  317.             $result $paginator->paginate(1$limit);
  318.         }
  319.         return $result;
  320.     }
  321.     public function getAllIncidenciasProyecto($data$currentPage 1$limit 12$sort$orderProceso $proceso)
  322.     {
  323.         $parameters = array();
  324.         $query $this->createQueryBuilder('incidencia')
  325.             ->leftJoin('incidencia.inciFase''fase')
  326.             ->leftJoin('fase.Proceso''proceso')
  327.             ->andWhere('proceso = :proceso');
  328.         $parameters[':proceso'] = $proceso;
  329.         if (isset($data['value']) && $data['value'] != "") {
  330.             $query->andWhere('(
  331.                 incidencia.inciMotivo 
  332.             )');
  333.             $parameters[':where1'] = "%" $data['value'] . "%";
  334.         }
  335.         if (!empty($parameters)) {
  336.             $query->setParameters($parameters);
  337.         }
  338.         $query->addOrderBy($sort$order);
  339.         $query->getQuery();
  340.         $paginator  = new CustomPaginator($query);
  341.         $result     $paginator->paginate($currentPage$limit);
  342.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  343.             $result $paginator->paginate(1$limit);
  344.         }
  345.         return $result;
  346.     }
  347.     public function getAllActivas()
  348.     {
  349.         $parameters = [];
  350.         $query $this->createQueryBuilder('incidencia');
  351.         $query
  352.             ->select('count(incidencia.id)')
  353.             ->andWhere('(
  354.                 incidencia.inciSolucionada = 0
  355.         )');
  356.         if (!empty($parameters)) {
  357.             $query->setParameters($parameters);
  358.         }
  359.         $resultado $query->getQuery()->getOneOrNullResult();
  360.         $total 0;
  361.         if ($resultado) {
  362.             $total $resultado[1];
  363.         }
  364.         return $total;
  365.     }
  366.     public function getInformeData($data$currentPage 1$limit 12$sort$order)
  367.     {
  368.         $query $this
  369.             ->createQueryBuilder('incidencia')
  370.             ->select('incidencia.inciCreated, YEAR(incidencia.inciCreated) as year,MONTH(incidencia.inciCreated) AS month, COUNT(incidencia) as total')
  371.             ->addGroupBy('year')
  372.             ->addGroupBy('month');
  373.         if ($sort == "Informe.fecha") {
  374.             $query
  375.                 ->addOrderBy('year'$order)
  376.                 ->addOrderBy('month'$order);
  377.         } else if ($sort == "Informe.total") {
  378.             $query
  379.                 ->addOrderBy('total'$order);
  380.         }
  381.         if (isset($data['desde']) && $data['desde'] != null) {
  382.             $query
  383.                 ->andWhere("incidencia.inciCreated >= :desde");
  384.             $parameters[':desde'] = $data['desde'];
  385.         }
  386.         if (isset($data['hasta']) && $data['hasta'] != null) {
  387.             $query
  388.                 ->andWhere("incidencia.inciCreated <= :hasta");
  389.             $parameters[':hasta'] = $data['hasta'];
  390.         }
  391.         if (!empty($parameters)) {
  392.             $query->setParameters($parameters);
  393.         }
  394.         return $query->getQuery()->getResult();
  395.     }
  396.     public function getNumHoy()
  397.     {
  398.         $parameters = [];
  399.         $query $this->createQueryBuilder('incidencia')
  400.             ->leftJoin('incidencia.inciFase''fase')
  401.             ->leftJoin('fase.Proceso''proceso');
  402.         $query
  403.             ->select('COUNT(incidencia.id)')
  404.             ->andWhere('DATE_DIFF(incidencia.inciCreated, CURRENT_DATE()) = 0')
  405.             ->andWhere('(
  406.                 proceso.ProcesoSchneider = 0 or
  407.                 proceso.ProcesoSchneider is null
  408.         )');
  409.         if (!empty($parameters)) {
  410.             $query->setParameters($parameters);
  411.         }
  412.         $resultado $query->getQuery()->getOneOrNullResult();
  413.         $total 0;
  414.         if ($resultado) {
  415.             $total $resultado[1];
  416.         }
  417.         return $total;
  418.     }
  419.     public function getNumHoySchneider()
  420.     {
  421.         $parameters = [];
  422.         $query $this->createQueryBuilder('incidencia')
  423.             ->leftJoin('incidencia.inciFase''fase')
  424.             ->leftJoin('fase.Proceso''proceso');
  425.         $query
  426.             ->select('COUNT(incidencia.id)')
  427.             ->andWhere(' DATE_DIFF(incidencia.inciCreated, CURRENT_DATE()) = 0')
  428.             ->andWhere('(
  429.                 proceso.ProcesoSchneider = 1 
  430.         )');
  431.         if (!empty($parameters)) {
  432.             $query->setParameters($parameters);
  433.         }
  434.         $resultado $query->getQuery()->getOneOrNullResult();
  435.         $total 0;
  436.         if ($resultado) {
  437.             $total $resultado[1];
  438.         }
  439.         return $total;
  440.     }
  441. }