src/Repository/PrmEnedisRepository.php line 134

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\PrmEnedis;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. /**
  7.  * @method PrmEnedis|null find($id, $lockMode = null, $lockVersion = null)
  8.  * @method PrmEnedis|null findOneBy(array $criteria, array $orderBy = null)
  9.  * @method PrmEnedis[]    findAll()
  10.  * @method PrmEnedis[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  11.  */
  12. class PrmEnedisRepository extends ServiceEntityRepository
  13. {
  14.     public function __construct(ManagerRegistry $registry)
  15.     {
  16.         parent::__construct($registry, PrmEnedis::class);
  17.     }
  18.     public function getByPrmAndDate($numeroCardiPrm,$prm,$dateStr) {
  19.         $qb =  $this->createQueryBuilder('c');
  20.         $qb->andWhere('c.numeroCardiPrm = :numeroCardiPrm')
  21.             ->setParameter('numeroCardiPrm', $numeroCardiPrm->getId());
  22.         $qb->andWhere('c.prm = :prm')
  23.             ->setParameter('prm', $prm);
  24.         $qb->andWhere('c.dateValue like :dateValue')
  25.             ->setParameter('dateValue','%'.$dateStr.'%');
  26.         return $qb->getQuery()->getResult();
  27.     }
  28.     public function search($data, $page = 0, $max = NULL, $getResult = true, $columnOrder = NULL, $dirOrder = NULL,$count=false) {
  29.         $qb =  $this->createQueryBuilder('c');
  30.         $query = isset($data['query']) && $data['query'] ? $data['query'] : null;
  31.         $dateStartEnedis = isset($data['dateStartEnedis']) && $data['dateStartEnedis'] ? new \DateTime($data['dateStartEnedis']) : null;
  32.         $dateEndEnedis = isset($data['dateEndEnedis']) && $data['dateEndEnedis'] ? new \DateTime($data['dateEndEnedis']) : null;
  33.         $statusEnedis = isset($data['statusEnedis']) && $data['statusEnedis'] ? $data['statusEnedis'] : null;
  34.         $qb->leftJoin('c.project','project');
  35.         $qb->andWhere('project.name like :query or c.prm like :query ')
  36.             ->setParameter('query', "%" . $query . "%");
  37.         if($dateStartEnedis && $dateEndEnedis){
  38.             $qb->andWhere('c.dateValue >= :dateStartEnedis')
  39.                 ->setParameter('dateStartEnedis', $dateStartEnedis->format('Y-m-d').' 00:00:00');
  40.             $qb->andWhere('c.dateValue <= :dateEndEnedis')
  41.                 ->setParameter('dateEndEnedis', $dateEndEnedis->format('Y-m-d').' 23:59:59');
  42.         }else{
  43.             $dateNow = new \DateTime();
  44.             $dateNow->modify('-1 Day');
  45.             $qb->andWhere('c.dateValue like :dateStartEnedis')
  46.                 ->setParameter('dateStartEnedis', '%'.$dateNow->format('Y-m-d').'%');
  47.         }
  48.         if($statusEnedis == 1){
  49.             $qb->having('sumValue = 0');
  50.         }elseif ($statusEnedis == 2){
  51.             $qb->having('sumValue > 0');
  52.         }
  53.         $qb->groupBy('c.prm','project.id');
  54.         if($count){
  55.             $qb->select('c.prm ,sum(c.valeurEnedis) as sumValue');
  56.             return $qb->getQuery()->getResult();
  57.         }else{
  58.             $qb->select('c.prm, project.id as projectId, project.name as projectName ,sum(c.valeurEnedis) as sumValue');
  59.             if ($columnOrder) {
  60.                 if($columnOrder == 'name'){
  61.                     $qb->orderBy("c.$columnOrder", $dirOrder);
  62.                 }
  63.             }
  64.             if ($max) {
  65.                 $preparedQuery = $qb->getQuery()
  66.                     ->setMaxResults($max)
  67.                     ->setFirstResult($page * $max)
  68.                 ;
  69.             } else {
  70.                 $preparedQuery = $qb->getQuery();
  71.             }
  72.             return $getResult ? $preparedQuery->getResult() : $preparedQuery;
  73.         }
  74.     }
  75.     public function getByPrmAndProject($request,$projectId,$prm) {
  76.         $dateStartEnedisStr = $request->get('dateStartEnedis');
  77.         $dateFinEnedisStr = $request->get('dateFinEnedis');
  78.         $dateStartEnedis = $dateStartEnedisStr ? new \DateTime($dateStartEnedisStr) : null;
  79.         $dateFinEnedis = $dateFinEnedisStr ? new \DateTime($dateFinEnedisStr) : null;
  80.         $qb =  $this->createQueryBuilder('c');
  81.         $qb->andWhere('c.project = :projectId')
  82.             ->setParameter('projectId', $projectId);
  83.         $qb->andWhere('c.prm = :prm')
  84.             ->setParameter('prm', $prm);
  85.         if($dateStartEnedis && $dateFinEnedis){
  86.             $qb->andWhere('c.dateValue >= :dateStartEnedis')
  87.                 ->setParameter('dateStartEnedis', $dateStartEnedis->format('Y-m-d').' 00:00:00');
  88.             $qb->andWhere('c.dateValue <= :dateEndEnedis')
  89.                 ->setParameter('dateEndEnedis', $dateFinEnedis->format('Y-m-d').' 23:59:59');
  90.         }else{
  91.             $dateNow = new \DateTime();
  92.             $dateNow->modify('-1 Day');
  93.             $qb->andWhere('c.dateValue like :dateStartEnedis')
  94.                 ->setParameter('dateStartEnedis', '%'.$dateNow->format('Y-m-d').'%');
  95.         }
  96.         $qb->orderBy('c.dateValue','asc');
  97.         return $qb->getQuery()->getResult();
  98.     }
  99.     public function getByPrmAndDateSelect($dateStartEnedisStr,$dateFinEnedisStr,$prmsTab) {
  100.         $dateStartEnedis = $dateStartEnedisStr ? new \DateTime($dateStartEnedisStr) : null;
  101.         $dateFinEnedis = $dateFinEnedisStr ? new \DateTime($dateFinEnedisStr) : null;
  102.         $qb =  $this->createQueryBuilder('c');
  103.         $qb->select('c.prm, project.id as projectId, project.name as projectName ,sum(c.valeurEnedis) as sumValue');
  104.         $qb->leftJoin('c.project','project');
  105.         $qb->andWhere('c.prm in (:prm)')
  106.             ->setParameter('prm', $prmsTab);
  107.         if($dateStartEnedis && $dateFinEnedis){
  108.             $qb->andWhere('c.dateValue >= :dateStartEnedis')
  109.                 ->setParameter('dateStartEnedis', $dateStartEnedis->format('Y-m-d').' 00:00:00');
  110.             $qb->andWhere('c.dateValue <= :dateEndEnedis')
  111.                 ->setParameter('dateEndEnedis', $dateFinEnedis->format('Y-m-d').' 23:59:59');
  112.         }else{
  113.             $dateNow = new \DateTime();
  114.             $dateNow->modify('-1 Day');
  115.             $qb->andWhere('c.dateValue like :dateStartEnedis')
  116.                 ->setParameter('dateStartEnedis', '%'.$dateNow->format('Y-m-d').'%');
  117.         }
  118.         $qb->groupBy('c.prm','project.id');
  119. //        $qb->orderBy('c.dateValue','asc');
  120.         return $qb->getQuery()->getResult();
  121.     }
  122.     public function getByProjectAndDateSelect($dateStartEnedisStr=null,$dateFinEnedisStr=null,$project) {
  123.         $dateStartEnedis = $dateStartEnedisStr ? new \DateTime($dateStartEnedisStr) : null;
  124.         $dateFinEnedis = $dateFinEnedisStr ? new \DateTime($dateFinEnedisStr) : null;
  125.         $qb =  $this->createQueryBuilder('c');
  126.         $qb->select('project.id as projectId, project.name as projectName ,sum(c.valeurEnedis) as sumValue');
  127.         $qb->leftJoin('c.project','project');
  128.         $qb->andWhere('project.id = :projectId')
  129.             ->setParameter('projectId', $project->getId());
  130.         if($dateStartEnedis && $dateFinEnedis){
  131.             $qb->andWhere('c.dateValue >= :dateStartEnedis')
  132.                 ->setParameter('dateStartEnedis', $dateStartEnedis->format('Y-m-d').' 00:00:00');
  133.             $qb->andWhere('c.dateValue <= :dateEndEnedis')
  134.                 ->setParameter('dateEndEnedis', $dateFinEnedis->format('Y-m-d').' 23:59:59');
  135.         }else{
  136.             $dateNow = new \DateTime();
  137.             $dateNow->modify('-1 Day');
  138.             $qb->andWhere('c.dateValue like :dateStartEnedis')
  139.                 ->setParameter('dateStartEnedis', '%'.$dateNow->format('Y-m-d').'%');
  140.         }
  141.         $qb->groupBy('project.id');
  142.         return $qb->getQuery()->getResult();
  143.     }
  144. }