src/Repository/OrdenRepository.php line 248

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Orden;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use App\Utils\CustomPaginator;
  7. /**
  8.  * @method Orden|null find($id, $lockMode = null, $lockVersion = null)
  9.  * @method Orden|null findOneBy(array $criteria, array $orderBy = null)
  10.  * @method Orden[]    findAll()
  11.  * @method Orden[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  12.  */
  13. class OrdenRepository extends ServiceEntityRepository
  14. {
  15.     public function __construct(ManagerRegistry $registry)
  16.     {
  17.         parent::__construct($registryOrden::class);
  18.     }
  19.     // /**
  20.     //  * @return Orden[] Returns an array of Orden objects
  21.     //  */
  22.     /*
  23.     public function findByExampleField($value)
  24.     {
  25.         return $this->createQueryBuilder('o')
  26.             ->andWhere('o.exampleField = :val')
  27.             ->setParameter('val', $value)
  28.             ->orderBy('o.id', 'ASC')
  29.             ->setMaxResults(10)
  30.             ->getQuery()
  31.             ->getResult()
  32.         ;
  33.     }
  34.     */
  35.     /*
  36.     public function findOneBySomeField($value): ?Orden
  37.     {
  38.         return $this->createQueryBuilder('o')
  39.             ->andWhere('o.exampleField = :val')
  40.             ->setParameter('val', $value)
  41.             ->getQuery()
  42.             ->getOneOrNullResult()
  43.         ;
  44.     }
  45.     */
  46.     public function getAll($data$currentPage 1$limit 12$sort$order)
  47.     {
  48.         $parameters = [];
  49.         $query $this->createQueryBuilder('Orden')
  50.             ->leftJoin('Orden.ordenOperario''Operario')
  51.             ->leftJoin('Orden.ordenFase''Fase')
  52.             ->leftJoin('Fase.Proceso''Proceso');
  53.         if (isset($data['value']) && '' != $data['value']) {
  54.             $query->andWhere('( Operario.username like :where1 or
  55.                                 Fase.ProcesoBloqFasNombre like :where1 or
  56.                                 Proceso.ProcNombre like :where1
  57.             )');
  58.             $parameters[':where1'] = '%' $data['value'] . '%';
  59.         }
  60.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  61.             $query->andWhere('(
  62.                 Proceso.ProcNombre like :proyecto
  63.             )');
  64.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  65.         }
  66.         if (isset($data['operario']) && '' != $data['operario']) {
  67.             $query->andWhere('(
  68.                 Operario.UsuarioNombre like :operario
  69.             )');
  70.             $parameters[':operario'] = '%' $data['operario'] . '%';
  71.         }
  72.         if (!empty($parameters)) {
  73.             $query->setParameters($parameters);
  74.         }
  75.         $query->addOrderBy($sort$order);
  76.         $query->getQuery();
  77.         $paginator = new CustomPaginator($query);
  78.         $result $paginator->paginate($currentPage$limit);
  79.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  80.             $result $paginator->paginate(1$limit);
  81.         }
  82.         return $result;
  83.     }
  84.     public function getAllActivos($data$currentPage 1$limit 12$sort$order)
  85.     {
  86.         $parameters = [];
  87.         $query $this->createQueryBuilder('Orden')
  88.             ->leftJoin('Orden.ordenOperario''Operario')
  89.             ->leftJoin('Orden.ordenFase''Fase')
  90.             ->leftJoin('Fase.Proceso''Proceso')
  91.             ->andWhere('Orden.ordenFinalizada is null');
  92.         if (isset($data['value']) && '' != $data['value']) {
  93.             $query->andWhere('( Operario.username like :where1 or
  94.                                 Fase.ProcesoBloqFasNombre like :where1 or
  95.                                 Proceso.ProcNombre like :where1
  96.             )');
  97.             $parameters[':where1'] = '%' $data['value'] . '%';
  98.         }
  99.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  100.             $query->andWhere('(
  101.                 Proceso.ProcNombre like :proyecto
  102.             )');
  103.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  104.         }
  105.         if (isset($data['operario']) && '' != $data['operario']) {
  106.             $query->andWhere('(
  107.                 Operario.UsuarioNombre like :operario
  108.             )');
  109.             $parameters[':operario'] = '%' $data['operario'] . '%';
  110.         }
  111.         if (!empty($parameters)) {
  112.             $query->setParameters($parameters);
  113.         }
  114.         $query->addOrderBy($sort$order);
  115.         $query->getQuery();
  116.         $paginator = new CustomPaginator($query);
  117.         $result $paginator->paginate($currentPage$limit);
  118.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  119.             $result $paginator->paginate(1$limit);
  120.         }
  121.         return $result;
  122.     }
  123.     public function getAllActivosCentro($data$idCentro$currentPage 1$limit 12$sort$order)
  124.     {
  125.         $parameters = [];
  126.         $query $this->createQueryBuilder('Orden')
  127.             ->leftJoin('Orden.ordenOperario''Operario')
  128.             ->leftJoin('Orden.ordenFase''Fase')
  129.             ->leftJoin('Orden.ordenCentro''Centro')
  130.             ->leftJoin('Fase.Proceso''Proceso')
  131.             ->andWhere('Orden.ordenFinalizada is null')
  132.             ->andWhere('Centro.id = :idCentro');
  133.         $parameters[':idCentro'] = $idCentro;
  134.         if (isset($data['value']) && '' != $data['value']) {
  135.             $query->andWhere('( Operario.username like :where1 or
  136.                                 Fase.ProcesoBloqFasNombre like :where1 or
  137.                                 Proceso.ProcNombre like :where1
  138.             )');
  139.             $parameters[':where1'] = '%' $data['value'] . '%';
  140.         }
  141.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  142.             $query->andWhere('(
  143.                 Proceso.ProcNombre like :proyecto
  144.             )');
  145.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  146.         }
  147.         if (isset($data['operario']) && '' != $data['operario']) {
  148.             $query->andWhere('(
  149.                 Operario.UsuarioNombre like :operario
  150.             )');
  151.             $parameters[':operario'] = '%' $data['operario'] . '%';
  152.         }
  153.         if (!empty($parameters)) {
  154.             $query->setParameters($parameters);
  155.         }
  156.         $query->addOrderBy($sort$order);
  157.         $query->getQuery();
  158.         $paginator = new CustomPaginator($query);
  159.         $result $paginator->paginate($currentPage$limit);
  160.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  161.             $result $paginator->paginate(1$limit);
  162.         }
  163.         return $result;
  164.     }
  165.     public function getAllByProyecto($data$currentPage 1$limit 12$sort$order$idProceso)
  166.     {
  167.         $parameters = [];
  168.         $query $this->createQueryBuilder('Orden')
  169.             ->leftJoin('Orden.ordenOperario''Operario')
  170.             ->leftJoin('Orden.ordenFase''Fase')
  171.             ->leftJoin('Fase.Proceso''Proceso')
  172.             ->andWhere('Proceso.id = :idProceso');
  173.         $parameters[':idProceso'] = $idProceso;
  174.         if (isset($data['value']) && '' != $data['value']) {
  175.             $query->andWhere('( Operario.username like :where1 or
  176.                                 Fase.ProcesoBloqFasNombre like :where1
  177.                                 Proceso.ProcNombre like :where1
  178.             )');
  179.             $parameters[':where1'] = '%' $data['value'] . '%';
  180.         }
  181.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  182.             $query->andWhere('(
  183.                 Proceso.ProcNombre like :proyecto
  184.             )');
  185.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  186.         }
  187.         if (isset($data['operario']) && '' != $data['operario']) {
  188.             $query->andWhere('(
  189.                 Operario.UsuarioNombre like :operario
  190.             )');
  191.             $parameters[':operario'] = '%' $data['operario'] . '%';
  192.         }
  193.         if (!empty($parameters)) {
  194.             $query->setParameters($parameters);
  195.         }
  196.         $query->addOrderBy($sort$order);
  197.         $query->getQuery();
  198.         $paginator = new CustomPaginator($query);
  199.         $result $paginator->paginate($currentPage$limit);
  200.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  201.             $result $paginator->paginate(1$limit);
  202.         }
  203.         return $result;
  204.     }
  205.     public function getAllByCentro($data$currentPage 1$limit 12$sort$order$idCentro)
  206.     {
  207.         $parameters = [];
  208.         $query $this->createQueryBuilder('Orden')
  209.             ->leftJoin('Orden.ordenOperario''Operario')
  210.             ->leftJoin('Orden.ordenFase''Fase')
  211.             ->leftJoin('Orden.ordenCentro''Centro')
  212.             ->leftJoin('Fase.Proceso''Proceso')
  213.             ->andWhere('Centro.id = :idCentro');
  214.         $parameters[':idCentro'] = $idCentro;
  215.         if (isset($data['value']) && '' != $data['value']) {
  216.             $query->andWhere('( Operario.username like :where1 or
  217.                                 Fase.ProcesoBloqFasNombre like :where1 or
  218.                                 Proceso.ProcNombre like :where1
  219.             )');
  220.             $parameters[':where1'] = '%' $data['value'] . '%';
  221.         }
  222.         if (isset($data['proyecto']) && '' != $data['proyecto']) {
  223.             $query->andWhere('(
  224.                 Proceso.ProcNombre like :proyecto
  225.             )');
  226.             $parameters[':proyecto'] = '%' $data['proyecto'] . '%';
  227.         }
  228.         if (isset($data['operario']) && '' != $data['operario']) {
  229.             $query->andWhere('(
  230.                 Operario.UsuarioNombre like :operario
  231.             )');
  232.             $parameters[':operario'] = '%' $data['operario'] . '%';
  233.         }
  234.         if (!empty($parameters)) {
  235.             $query->setParameters($parameters);
  236.         }
  237.         $query->addOrderBy($sort$order);
  238.         $query->getQuery();
  239.         $paginator = new CustomPaginator($query);
  240.         $result $paginator->paginate($currentPage$limit);
  241.         if ($result['count'] > && $result['maxPages'] < $result['thisPage']) {
  242.             $result $paginator->paginate(1$limit);
  243.         }
  244.         return $result;
  245.     }
  246.     public function getOrdenesTrabajador($operario$filter)
  247.     {
  248.         $parameters = array();
  249.         $query $this->createQueryBuilder('orden')
  250.             ->leftJoin('orden.ordenOperario''operario')
  251.             ->leftJoin('orden.ordenFase''fase')
  252.             ->leftJoin('orden.ordenCentro''centro');
  253.         $query->andWhere('(
  254.             operario.id = :idOperario and
  255.             orden.ordenIniciada is not null and
  256.             orden.ordenFinalizada is not null
  257.         )');
  258.         $parameters[':idOperario'] = $operario;
  259.         if (isset($filter['centro']) && '' != $filter['centro']) {
  260.             $query->andWhere('centro.id = :centro');
  261.             $parameters[':centro'] = $filter['centro'];
  262.         }
  263.         if (isset($filter['desde']) && '' != $filter['desde']) {
  264.             $query->andWhere('orden.ordenIniciada > :desde');
  265.             $parameters[':desde'] = $filter['desde'];
  266.         }
  267.         if (isset($filter['hasta']) && '' != $filter['hasta']) {
  268.             $query->andWhere('orden.ordenFinalizada < :hasta');
  269.             $parameters[':hasta'] = $filter['hasta'];
  270.         }
  271.         if (!empty($parameters)) {
  272.             $query->setParameters($parameters);
  273.         }
  274.         $results $query->getQuery()->getResult();
  275.         return $results;
  276.     }
  277.     public function getOrdenByUsuarioFase($operario$fase)
  278.     {
  279.         $parameters = array();
  280.         $query $this->createQueryBuilder('orden')
  281.             ->leftJoin('orden.ordenOperario''operario')
  282.             ->leftJoin('orden.ordenFase''fase');
  283.         $query->andWhere('(
  284.             operario.id = :where1 and
  285.             fase.id = :where2 and
  286.             orden.ordenIniciada is not null and
  287.             orden.ordenFinalizada is null
  288.         )');
  289.         $parameters[':where1'] = $operario;
  290.         $parameters[':where2'] = $fase;
  291.         if (!empty($parameters)) {
  292.             $query->setParameters($parameters);
  293.         }
  294.         $results $query->getQuery()->getOneOrNullResult();
  295.         return $results;
  296.     }
  297.     public function getCountActivas($idCentro null)
  298.     {
  299.         $parameters = [];
  300.         $query $this->createQueryBuilder('Orden')
  301.             ->leftJoin('Orden.ordenCentro''centro');
  302.         $query
  303.             ->select('count(Orden.id)')
  304.             ->andWhere('(
  305.                 Orden.ordenFinalizada is null
  306.         )');
  307.         if ($idCentro) {
  308.             $query
  309.                 ->andWhere('centro.id = :idCentro');
  310.             $parameters[':idCentro'] = $idCentro;
  311.         }
  312.         if (!empty($parameters)) {
  313.             $query->setParameters($parameters);
  314.         }
  315.         $resultado $query->getQuery()->getOneOrNullResult();
  316.         $total 0;
  317.         if ($resultado) {
  318.             $total $resultado[1];
  319.         }
  320.         return $total;
  321.     }
  322.     public function getActivas($operarioCodigo)
  323.     {
  324.         $parameters = array();
  325.         $query $this->createQueryBuilder('Orden')
  326.             ->leftJoin('Orden.ordenOperario''Operario');
  327.         $query->andWhere('(
  328.             Operario.UsuarioCodigo like :where1 and
  329.             Orden.ordenFinalizada is null
  330.         )');
  331.         $parameters[':where1'] = $operarioCodigo;
  332.         if (!empty($parameters)) {
  333.             $query->setParameters($parameters);
  334.         }
  335.         $results $query->getQuery()->getResult();
  336.         return $results;
  337.     }
  338. }