src/Repository/BlockRepository.php line 108

  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Block;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. /**
  7.  * @extends ServiceEntityRepository<Block>
  8.  *
  9.  * @method Block|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method Block|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method Block[]    findAll()
  12.  * @method Block[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class BlockRepository extends ServiceEntityRepository
  15. {
  16.     public function __construct(ManagerRegistry $registry)
  17.     {
  18.         parent::__construct($registryBlock::class);
  19.     }
  20.     public function save(Block $entitybool $flush false): void
  21.     {
  22.         $this->getEntityManager()->persist($entity);
  23.         if ($flush) {
  24.             $this->getEntityManager()->flush();
  25.         }
  26.     }
  27.     public function remove(Block $entitybool $flush false): void
  28.     {
  29.         $this->getEntityManager()->remove($entity);
  30.         if ($flush) {
  31.             $this->getEntityManager()->flush();
  32.         }
  33.     }
  34.     
  35.     public function getBlockageByFilters$resourceType$localisation$startDate$endDate,$resource null$typeBlockage null)
  36.     {
  37.         // $groups = explode(',',$resourceType);
  38.         // array_push($groups,...explode(',',$localisation));
  39.         $conn $this->getEntityManager()->getConnection();
  40.         if ($resource == null) {
  41.             $reqResource " r.group_id in ($resourceType) and r.group_id in ($localisation)";
  42.         }else {
  43.             $reqResource " r.id = $resource";
  44.         }
  45.         $reqTypeBlocage "";
  46.         if ($typeBlockage != null)
  47.             $reqTypeBlocage " and block_type_id = $typeBlockage ";
  48.            
  49.         $stmt $conn->prepare("select b.*,r.name as resourceName from block b left join resource r on 
  50.         b.resource_id = r.id
  51.         where $reqResource and 
  52.         date(start_datetime) >= '$startDate' and date(start_datetime) <= '$endDate' and 
  53.         date(end_datetime) >= '$startDate' and (date(end_datetime) <= '$endDate' or end_datetime is null) $reqTypeBlocage group by b.id");
  54.         $result $stmt->executeQuery()->fetchAllAssociative();
  55.         return $result;
  56.     }
  57.     public function getBlockageByType($resource null$resourceType$localisation$startDate$endDate,$lang)
  58.     {
  59.         // $groups = explode(',',$resourceType);
  60.         // array_push($groups,...explode(',',$localisation));
  61.         $conn $this->getEntityManager()->getConnection();
  62.         if ($resource == null) {
  63.             $reqResource " r.group_id in ($resourceType) and r.group_id in ($localisation)";
  64.         }else {
  65.             $reqResource " r.id = $resource";
  66.         }
  67.         $stmt $conn->prepare("select t.value as item, count(*) as value from block b left join resource r on 
  68.         b.resource_id = r.id left join block_type bt on b.block_type_id = bt.id left join translator t on bt.id = t.path_id
  69.         where t.lang = '$lang' and t.path = 'block_type.label' and $reqResource and 
  70.         date(start_datetime) >= '$startDate' and date(start_datetime) <= '$endDate' and 
  71.         date(end_datetime) >= '$startDate' and (date(end_datetime) <= '$endDate' or end_datetime is null) group by bt.id;");
  72.         $result $stmt->executeQuery()->fetchAllAssociative();
  73.         return empty($result[0]['item']) ? []:$result;
  74.     }
  75.     public function getBlockagesGroppedByResource($resource null$resourceType$localisation$startDate$endDate$typeResource$typeBlockage 0)
  76.     {
  77.         // $groups = explode(',',$resourceType);
  78.         // array_push($groups,...explode(',',$localisation));
  79.         $conn $this->getEntityManager()->getConnection();
  80.         if ($resource == null) {
  81.             $reqResource " and r.group_id in ($resourceType) and r.group_id in ($localisation);";
  82.         }else {
  83.             $reqResource " and r.id = $resource";
  84.         }
  85.         $stmt $conn->prepare("select ga.group_name as item ,count(*) as value from block b join resource r on 
  86.         b.resource_id = r.id join group_ancestor_details ga on r.group_parent_id = ga.ancestor_group_id 
  87.         where ga.group_type_name = '$typeResource$reqResource and 
  88.         date(start_datetime) >= '$startDate' and date(start_datetime) <= '$endDate' and 
  89.         date(end_datetime) >= '$startDate' and (date(end_datetime) <= '$endDate' or end_datetime is null) and block_type_id = $typeBlockage");
  90.         $result $stmt->executeQuery()->fetchAllAssociative();
  91.         return empty($result[0]['item']) ? []:$result;
  92.     }
  93.     public function getBlockByDates($resource null$resourceType$localisation$startDate$endDate$typeBlockage null)
  94.     {
  95.         $conn $this->getEntityManager()->getConnection();
  96.         $stmt $conn->prepare("call getBlockByDates('$startDate','$endDate','$localisation','$resourceType',". ($resource != '' $resource "null") .",". ($typeBlockage ?? "null") .")");
  97.         return $stmt->executeQuery()->fetchAllAssociative();
  98.     }
  99. //    /**
  100. //     * @return Block[] Returns an array of Block objects
  101. //     */
  102. //    public function findByExampleField($value): array
  103. //    {
  104. //        return $this->createQueryBuilder('b')
  105. //            ->andWhere('b.exampleField = :val')
  106. //            ->setParameter('val', $value)
  107. //            ->orderBy('b.id', 'ASC')
  108. //            ->setMaxResults(10)
  109. //            ->getQuery()
  110. //            ->getResult()
  111. //        ;
  112. //    }
  113. //    public function findOneBySomeField($value): ?Block
  114. //    {
  115. //        return $this->createQueryBuilder('b')
  116. //            ->andWhere('b.exampleField = :val')
  117. //            ->setParameter('val', $value)
  118. //            ->getQuery()
  119. //            ->getOneOrNullResult()
  120. //        ;
  121. //    }
  122. }