src/Entrepreneurs/Bundle/AppBundle/Propel/EtablissementQuery.php line 13

Open in your IDE?
  1. <?php
  2. namespace Entrepreneurs\Bundle\AppBundle\Propel;
  3. use Entrepreneurs\Bundle\AppBundle\Propel\Base\EtablissementQuery as BaseEtablissementQuery;
  4. use Entrepreneurs\Bundle\AppBundle\Propel\Map\DemandeInterventionTableMap;
  5. use Entrepreneurs\Bundle\AppBundle\Propel\Map\EtablissementTableMap;
  6. use Entrepreneurs\Bundle\AppBundle\Util\StringHelper;
  7. use Propel\Runtime\ActiveQuery\Criteria;
  8. use Propel\Runtime\Collection\ObjectCollection;
  9. use Propel\Runtime\Propel;
  10. class EtablissementQuery extends BaseEtablissementQuery
  11. {
  12.     public function searchByTerm(string $term): self
  13.     {
  14.         $text '%'.$term.'%';
  15.         $tel '%'.StringHelper::cleanTel($term).'%';
  16.         return $this->condition('cond1'EtablissementTableMap::COL_LABEL.' LIKE ?'$text)
  17.             ->condition('cond2''REPLACE(REPLACE(REPLACE('.EtablissementTableMap::COL_TELEPHONE.", ' ', ''), '.', ''), '-', '') LIKE ?"$tel)
  18.             ->condition('cond3'EtablissementTableMap::COL_EMAIL.' LIKE ?'$text)
  19.             ->where(['cond1''cond2''cond3'], 'or')
  20.         ;
  21.     }
  22.     public function orderByTypeEtablissementLabel($order Criteria::ASC): self
  23.     {
  24.         return $this->useTypeEtablissementQuery()
  25.                 ->orderByLabel($order)
  26.             ->endUse();
  27.     }
  28.     public function orderByAcademieLabel($order Criteria::ASC): self
  29.     {
  30.         return $this->useAcademieQuery()
  31.                 ->orderByLabel($order)
  32.             ->endUse();
  33.     }
  34.     public function orderByVilleCodePostal($order Criteria::ASC): self
  35.     {
  36.         return $this->useVilleQuery()
  37.                 ->orderByCodePostal($order)
  38.             ->endUse();
  39.     }
  40.     public function filterByTypePrive($droit): self
  41.     {
  42.         if (== $droit) {
  43.             return $this->filterByPrive(true);
  44.         } elseif (== $droit) {
  45.             return $this->filterByPrive(false)->_or()->filterByPrive(null);
  46.         }
  47.         return $this;
  48.     }
  49.     public function filterByTypeZep($bool): self
  50.     {
  51.         if (== $bool) {
  52.             return $this->filterByZep(true);
  53.         } elseif (== $bool) {
  54.             return $this->filterByZep(false)->_or()->filterByZep(null);
  55.         }
  56.         return $this;
  57.     }
  58.     public function filterByTypeZrr($bool): self
  59.     {
  60.         if (== $bool) {
  61.             return $this->filterByZrr(true);
  62.         } elseif (== $bool) {
  63.             return $this->filterByZrr(false)->_or()->filterByZrr(null);
  64.         }
  65.         return $this;
  66.     }
  67.     public function filterByDepartements($departements): self
  68.     {
  69.         return count($departements) ? $this->useVilleQuery()
  70.                 ->filterByDepartement($departements)
  71.             ->endUse() : $this;
  72.     }
  73.     public function filterByRegion($region): self
  74.     {
  75.         return $this->useVilleQuery()
  76.                 ->useDepartementQuery()
  77.                     ->filterByRegion($region)
  78.                 ->endUse()
  79.             ->endUse();
  80.     }
  81.     public function filterByVilleEtablissement(ObjectCollection $villes): self
  82.     {
  83.         return count($villes) ? $this->filterByVille($villesCriteria::IN) : $this;
  84.     }
  85.     public function filterBySansAdresseOuCodePostal(): EtablissementQuery
  86.     {
  87.         return $this
  88.             ->filterByAdresse1(''Criteria::EQUAL)
  89.             ->_or()
  90.             ->useVilleNotExistsQuery()
  91.             ->endUse();
  92.     }
  93.     public function filterByRegionOrDepartment(Gestionnaire $user): self
  94.     {
  95.         return $this
  96.             ->useVilleQuery()
  97.                 ->useDepartementQuery()
  98.                     ->filterByRegion($user->getRegions())
  99.                 ->endUse()
  100.             ->_or()
  101.             ->filterByDepartement($user->getDepartements())
  102.             ->endUse();
  103.     }
  104.     public function filterByEtablissementDoublon(Gestionnaire $userbool $isAllRecordsAccessUser): self
  105.     {
  106.         $specialCaracters = [' ''-''_''~''"''#''{''(''[''|''@'')'']''=''}''%''/'':''.'','"'"];
  107.         $startReplace implode(''array_map(function ($car) {return 'REPLACE('; }, $specialCaracters));
  108.         $endReplace implode(''array_map(function ($car) {return "'" === $car ',"\'", "")' sprintf(",'%s', '')"$car); }, $specialCaracters));
  109.         $con Propel::getConnection();
  110.         $sql =
  111.             'SELECT etb.id
  112. FROM etablissement etb
  113. JOIN (
  114.     SELECT
  115.         COUNT(*) as nb,
  116.         CONCAT('.$startReplace.'etablissement.label'.$endReplace.', etablissement.ville_id) as labelDoublon,
  117.         etablissement.id,
  118.         etablissement.label,
  119.         etablissement.ville_id,
  120.         etablissement.uai
  121.     FROM etablissement
  122.     GROUP BY labelDoublon
  123.     HAVING COUNT(labelDoublon) > 1
  124.     UNION 
  125.     SELECT
  126.         COUNT(*) as nb,
  127.         \'labelDoublon\' as labelDoublon,
  128.         etablissement.id,
  129.         etablissement.label,
  130.         etablissement.ville_id,
  131.         etablissement.uai
  132.     FROM etablissement
  133.     WHERE etablissement.uai IS NOT NULL AND etablissement.uai != \'\' AND etablissement.uai != \'-\'
  134.     GROUP BY etablissement.uai
  135.     HAVING COUNT(etablissement.uai) > 1
  136. ) etablissementDoublon 
  137. ON (etablissementDoublon.labelDoublon = \'labelDoublon\' AND etb.uai = etablissementDoublon.uai) OR '.$startReplace.'etb.label'.$endReplace.' = '.$startReplace.'etablissementDoublon.label'.$endReplace.' AND etb.ville_id = etablissementDoublon.ville_id;';
  138.         $stmt $con->prepare($sql);
  139.         $stmt->execute();
  140.         $etablissementsDoublon $stmt->fetchAll();
  141.         return EtablissementQuery::create()
  142.             ->_if(!$isAllRecordsAccessUser)
  143.                 ->filterByRegionOrDepartment($user)
  144.             ->_endif()
  145.             ->filterById(array_values(array_unique(array_map(function (array $etablissementDoublon) {return $etablissementDoublon['id']; }, $etablissementsDoublon))));
  146.     }
  147.     public function filterBySelectedIdsFirst(array $ids): self
  148.     {
  149.         return
  150.             $this->filterById($ids)
  151.                 ->_or()
  152.                 ->filterByLabel('A%'Criteria::LIKE)
  153.         ;
  154.     }
  155.     public function filterByDateDemandeInterventionDebut(\DateTime $date null$comparaison Criteria::GREATER_EQUAL): self
  156.     {
  157.         if ($date) {
  158.             return $this->useDemandeInterventionQuery()
  159.                 ->filterByDateAll($date$comparaison)
  160.                 ->endUse();
  161.         }
  162.         return $this;
  163.     }
  164.     public function filterByDateDemandeInterventionFin(\DateTime $date null$comparaison Criteria::LESS_EQUAL): self
  165.     {
  166.         if ($date) {
  167.             return $this->useDemandeInterventionQuery()
  168.                 ->filterByDateAll($date$comparaison)
  169.                 ->endUse();
  170.         }
  171.         return $this;
  172.     }
  173.     public function filterByDateDemandeInterventionDerniereDebut(\DateTime $date null$comparaison Criteria::GREATER_EQUAL): self
  174.     {
  175.         if ($date) {
  176.             return $this->useDemandeInterventionExistsQuery()
  177.                 ->filterByDate(nullCriteria::ISNULL)
  178.                 ->having('MAX('.DemandeInterventionTableMap::COL_CRENEAU_1_DEBUT.') '.$comparaison.' ?'$date->format('Y-m-d'))
  179.                 ->_or()
  180.                 ->filterByDate(nullCriteria::ISNOTNULL)
  181.                 ->having('MAX('.DemandeInterventionTableMap::COL_DATE.') '.$comparaison.' ?'$date->format('Y-m-d'))
  182.                 ->endUse();
  183.         }
  184.         return $this;
  185.     }
  186.     public function filterByDateDemandeInterventionDerniereFin(\DateTime $date null$comparaison Criteria::LESS_EQUAL): self
  187.     {
  188.         if ($date) {
  189.             return $this->useDemandeInterventionExistsQuery()
  190.                 ->filterByDate(nullCriteria::ISNULL)
  191.                 ->having('MAX('.DemandeInterventionTableMap::COL_CRENEAU_1_DEBUT.') '.$comparaison.' ?'$date->format('Y-m-d'))
  192.                 ->_or()
  193.                 ->filterByDate(nullCriteria::ISNOTNULL)
  194.                 ->having('MAX('.DemandeInterventionTableMap::COL_DATE.') '.$comparaison.' ?'$date->format('Y-m-d'))
  195.                 ->endUse();
  196.         }
  197.         return $this;
  198.     }
  199.     public function filterByStatutIntervention(ObjectCollection $statutsstring $comparaison Criteria::EQUAL): self
  200.     {
  201.         if (!$statuts->isEmpty()) {
  202.             return $this->useDemandeInterventionQuery()
  203.                 ->filterByStatutId($statuts->toKeyValue('PrimaryKey''Id'), Criteria::IN)
  204.                 ->groupByEtablissementId()
  205.                 ->endUse();
  206.         }
  207.         return $this;
  208.     }
  209. }