src/Repository/stock/VilleRepository.php line 285

Open in your IDE?
  1. <?php
  2. namespace App\Repository\stock;
  3. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  4. use Doctrine\Persistence\ManagerRegistry;
  5. use App\Types\user\TypeEtat;
  6. use Doctrine\ORM\RepositoryRepository;
  7. use App\Entity\stock\Ville;
  8. use App\ControllerModel\user\paramUtilTrait;
  9. /**
  10.  * VilleRepository
  11.  *
  12.  * This class was generated by the Doctrine ORM. Add your own custom
  13.  * repository methods below.
  14.  */
  15. class VilleRepository extends ServiceEntityRepository
  16. {
  17.     use paramUtilTrait;
  18.     public function __construct(ManagerRegistry $registry)
  19.     {
  20.         parent::__construct($registryVille::class);
  21.     }
  22.     
  23.     
  24.             /**
  25.      * Retourne tous les profils.
  26.      *
  27.      * @return type
  28.      */
  29.     public function getAllVille($typeProdVille=1,$typeVille 3)
  30.     {
  31.         $qb $this->createQueryBuilder('r')
  32.                 ->where('r.etatVille != '.TypeEtat::SUPPRIME)
  33.                 //->andWhere('r.typeProdVille = '.$typeProdVille)
  34.                 //->andWhere('r.typeVille = '.$typeVille)
  35.                 ->orderBy('r.id''ASC');
  36.         return $qb->getQuery()->getResult();
  37.     }
  38.     /**
  39.      * Retourne un fournisseur.
  40.      *
  41.      * @return type
  42.      */
  43.     public function getAllVillePays($paysId)
  44.     {
  45.          $query $this->_em->createQuery(
  46.                        'SELECT  v
  47.                         FROM App\Entity\stock\Ville  v
  48.                         INNER JOIN v.pays p
  49.                         
  50.                         WHERE  p.id =:paysId'
  51.                             )                
  52.                  ->setParameters(["paysId"=>$paysId ]);
  53.        
  54.           return $query->getResult();;
  55.     }
  56.     /**
  57.      * Retourne un fournisseur.
  58.      *
  59.      * @return type
  60.      */
  61.     public function getAllIdActive($abonneId=0)
  62.     {
  63.          $query $this->_em->createQuery(
  64.                        'SELECT  av.id as idAv, v.id as id
  65.                         FROM App\Entity\user\AbonneVille  av
  66.                         INNER JOIN av.ville v
  67.                         INNER JOIN av.abonne a
  68.                         WHERE  a.id =:abonneId'
  69.                             )                
  70.                  ->setParameters(["abonneId"=>$abonneId]);
  71.         $transform = function($item){
  72.             return $item['id'];
  73.         };
  74.           return array_map($transform$query->getScalarResult());
  75.     }
  76.       /**
  77.      * Retourne un fournisseur.
  78.      *
  79.      * @return type
  80.      */
  81.     public function getAllAbonneActive($abonneId=0)
  82.     {
  83.          $query $this->_em->createQuery(
  84.                        'SELECT av
  85.                         FROM App\Entity\user\AbonneVille  av
  86.                         INNER JOIN av.ville v
  87.                         INNER JOIN av.abonne a
  88.                         WHERE  a.id =:abonneId'
  89.                             )                
  90.                  ->setParameters(["abonneId"=>$abonneId]);
  91.                  return $query->getResult();
  92.     }
  93.         /**
  94.      * Retourne un fournisseur.
  95.      *
  96.      * @return type
  97.      */
  98.     public function getZoneProducteur($abonneId=0)
  99.     {
  100.          $query $this->_em->createQuery(
  101.                        'SELECT  DISTINCT v.id , v.nomVille
  102.                         FROM App\Entity\stock\Ville  v
  103.                         INNER JOIN v.zoneproducteurs zp
  104.                         INNER JOIN zp.producteur p
  105.                         INNER JOIN p.abonne a
  106.                         WHERE  a.id =:abonneId'
  107.                             )                
  108.                  ->setParameters(["abonneId"=>$abonneId]);
  109.         $transform = function($item){
  110.             return $item['id'];
  111.         };
  112.           return array_map($transform$query->getScalarResult());
  113.     }
  114.             /**
  115.      * Retourne un fournisseur.
  116.      *
  117.      * @return type
  118.      */
  119.     public function getZoneInfoProducteur($producteurId=0)
  120.     {
  121.          $query $this->_em->createQuery(
  122.                        'SELECT  DISTINCT v.id , v.nomVille
  123.                         FROM App\Entity\stock\Ville  v
  124.                         INNER JOIN v.zoneproducteurs zp
  125.                         INNER JOIN zp.producteur p
  126.                         INNER JOIN p.abonne a
  127.                         WHERE  p.id =:producteurId'
  128.                             )                
  129.                  ->setParameters(["producteurId"=>$producteurId]);
  130.    
  131.           return $query->getResult();;
  132.     }
  133.     /**
  134.      * Retourne un fournisseur.
  135.      *
  136.      * @return type
  137.      */
  138.     public function getZoneAbonneProducteur($abonneId=0)
  139.     {
  140.          $query $this->_em->createQuery(
  141.                        'SELECT  DISTINCT v
  142.                         FROM App\Entity\stock\Ville  v
  143.                         INNER JOIN v.zoneabonnes p
  144.                         
  145.                         INNER JOIN p.abonne a
  146.                         WHERE  a.id =:abonneId'
  147.                             )                
  148.                  ->setParameters(["abonneId"=>$abonneId]);
  149.                  return $query->getResult();
  150.     }
  151.     
  152.             /**
  153.      * Retourne un fournisseur.
  154.      *
  155.      * @return type
  156.      */
  157.     public function getInfoZoneProducteur($abonneId=0)
  158.     {
  159.          $query $this->_em->createQuery(
  160.                        'SELECT  DISTINCT v.id , v.nomVille
  161.                         FROM App\Entity\stock\Ville  v
  162.                         INNER JOIN v.zoneproducteurs zp
  163.                         INNER JOIN zp.producteur p
  164.                         INNER JOIN p.abonne a
  165.                         WHERE  a.id =:abonneId'
  166.                             )                
  167.                  ->setParameters(["abonneId"=>$abonneId]);
  168.                  return $query->getResult();
  169.     }
  170.                 /**
  171.      * Retourne tous les profils.
  172.      *
  173.      * @return type
  174.      */
  175.     public function getAllVilleByProduit($typeProdVille=1)
  176.     {
  177.         $qb $this->createQueryBuilder('r')
  178.                 ->where('r.etatVille != '.TypeEtat::SUPPRIME)
  179.                 ->andWhere('r.typeVille = '.$typeProdVille)
  180.                 ->orderBy('r.id''ASC');
  181.         return $qb->getQuery()->getResult();
  182.     }
  183.             /**
  184.      * Retourne tous les profils.
  185.      *
  186.      * @return type
  187.      */
  188.     public function getAllActiveVille($typeProdVille=1,$typeVille 2)
  189.     {
  190.         $qb $this->createQueryBuilder('r')
  191.                 ->where('r.etatVille = '.TypeEtat::ACTIF)
  192.                
  193.                 ->andWhere('r.typeVille = '.$typeVille)
  194.                 ->orderBy('r.id''ASC');
  195.                // ->andWhere('r.typeProdVille = '.$typeProdVille)
  196.         //var_dump($typeProdVille);exit;
  197.         return $qb->getQuery()->getResult();
  198.     }
  199.     
  200.     /**
  201.      * Retourne un fournisseur.
  202.      *
  203.      * @return type
  204.      */
  205.     public function getPrixProducteur($id$idAnnee)
  206.     {
  207.          $query $this->_em->createQuery(
  208.                        'SELECT DISTINCT p.id, pr.infoPrixRigueur
  209.                         FROM App\Entity\stock\PrixZone p INNER JOIN p.prixrigueur pr INNER JOIN p.anneecampagne a INNER JOIN p.ville v
  210.                         INNER JOIN v.producteurs pd
  211.                         WHERE pd.id =:id and  a.id =:idAnnee'
  212.                             )                
  213.                  ->setParameters(array('id'=>$id,'idAnnee'=>$idAnnee));
  214.           return  $query->getResult();
  215.     }
  216.     
  217.     /**
  218.      * Retourne un fournisseur.
  219.      *
  220.      * @return type
  221.      */
  222.     public function getDistinctZoneProducteur($abonneId)
  223.     {
  224.          $query $this->_em->createQuery(
  225.                        'SELECT DISTINCT v.id, v.nomVille
  226.                         FROM App\Entity\stock\Ville v INNER JOIN v.zoneproducteurs  zp
  227.                         INNER JOIN zp.abonne a 
  228.                         WHERE  a.id =:abonneId'
  229.                         )                
  230.                  ->setParameters(array('abonneId'=>$abonneId));
  231.                //var_dump($query->getSql());exit;
  232.           return  $query->getResult();
  233.     }
  234.     public function getDistinctZone($abonneId$typeVille)
  235.     {
  236.          $query $this->_em->createQuery(
  237.                        'SELECT DISTINCT v.id, v.nomVille
  238.                         FROM App\Entity\stock\Ville v 
  239.                         INNER JOIN v.abonnevilles az
  240.                         INNER JOIN az.abonne a 
  241.                         WHERE  a.id =:abonneId and az.typeAbonneVille=:typeVille'
  242.                         )                
  243.                  ->setParameters(array('abonneId'=>$abonneId'typeVille'=>$typeVille));
  244.         if(count($query->getResult()) !=)
  245.             return $query->getResult();
  246.         $query2 $this->_em->createQuery(
  247.                     'SELECT DISTINCT v.id, v.nomVille 
  248.                      FROM App\Entity\stock\Ville v INNER JOIN v.zoneproducteurs zp
  249.                      INNER JOIN zp.abonne a 
  250.                      WHERE  a.id =:abonneId'
  251.                      )                
  252.               ->setParameters(array('abonneId'=>$abonneId));        
  253.                 //var_dump($query->getSql());exit;
  254.           $tabDistinctZone =  array_merge$query->getResult(),$query2->getResult());
  255.           
  256.           return $tabDistinctZone;
  257.     }
  258.     public function getVilleUtilisateur($niveau=4,$tabVille,$type=0) {
  259.         $param = array();
  260.         $datedebarray = array();
  261.         $datefinarray = array();
  262.         $nbTotal 10000;        
  263.        
  264.         $infoVille $this->getStringSqlVille($niveau);
  265.         if($tabVille==0){$p="v".$niveau;}else{$p="p";}
  266.         //var_dump($paramdeb,$paramfin);exit;     
  267.         $sql "SELECT DISTINCT(v".$niveau.".id ) as id,  v".$niveau.".nomVille    as nom               
  268.                 FROM   App\Entity\stock\Ville ".$p;                
  269.         $sql .= $infoVille[0];
  270.          
  271.         $sql .= " WHERE  1=1 ";
  272.         /**  debut critère recherche  * */
  273.         
  274.         $i 0;
  275.         ( $type == '0' || $type == '') ? $sql .= '' $sql .= " AND ".$p.".typeVille = :type";
  276.         
  277.         if($tabVille != 0){
  278.             foreach($tabVille as $uneVille){
  279.                 if($i == 0){
  280.                     $sql .= " AND ( v".$niveau.".id = :ville".$uneVille->getVille()->getId()."";
  281.                 }else{
  282.                     $sql .= " OR v".$niveau.".id = :ville".$uneVille->getVille()->getId()."";
  283.                 }
  284.                 $i++;
  285.                 //$tabProduitUser[] = $unInfoProduit->getId();               
  286.             }
  287.            // $sql .= ")";
  288.         }
  289.         // $sql .= " GROUP BY v".$niveau.".nomVille ";
  290.         $type == '0' || $type == '') ? $sql .= '' $param['type'] = $type;
  291.         if($tabVille != 0){
  292.             foreach($tabVille as $uneVille){
  293.                 //$tabProduitUser[] = $unInfoProduit->getId();
  294.                 $param["ville".$uneVille->getVille()->getId().""] = $uneVille->getVille()->getId();
  295.             } 
  296.         }
  297.         //var_dump($sql);exit;
  298.         $query $this->_em->createQuery($sql);
  299.         $query->setParameters($param);
  300.       // var_dump($query->getSQL());exit;
  301.         return $query->getResult();
  302.     }
  303.         /**
  304.      * Retourne un fournisseur.
  305.      *
  306.      * @return type
  307.      */
  308.     public function getVilleUtilisateurAPI($abonneId=0)
  309.     {
  310.             $query1 $this->_em->createQuery(
  311.                        'SELECT  v.id as id, v.nomVille as nom, av.typeAbonneVille as typeVille
  312.                         FROM App\Entity\user\AbonneVille  av
  313.                         INNER JOIN av.ville v
  314.                         INNER JOIN av.abonne a
  315.                         WHERE  a.id =:abonneId'
  316.                             )                
  317.                  ->setParameters(["abonneId"=>$abonneId]);
  318.                  
  319.             $query2 $this->_em->createQuery(
  320.                                'SELECT DISTINCT v.id, v.nomVille as nom, 5 as typeVille
  321.                                 FROM App\Entity\stock\Ville v INNER JOIN v.zoneproducteurs zp
  322.                                 INNER JOIN zp.abonne a 
  323.                                 WHERE  a.id =:abonneId'
  324.                                 )                
  325.                          ->setParameters(array('abonneId'=>$abonneId));
  326.                //  var_dump($query->getSql());exit;
  327.           //return  $query->getResult();
  328.         return  array_merge$query1->getResult(),$query2->getResult());
  329.     }
  330.         /**
  331.      * Retourne un fournisseur.
  332.      *
  333.      * @return type
  334.      */
  335.     public function getVilleUtilisateurAPIByZone($abonneId=0,$tabVille=array(), $partenaireId=0$typeAction=0)
  336.     {
  337.             $sql =" SELECT  v.id as id, v.nomVille as nom, 0  as typeVille
  338.                     FROM App\Entity\user\AbonneVille  av
  339.                     INNER JOIN av.ville v ";
  340.                     
  341.                     if($typeAction != 0){
  342.                         $sql .= " INNER JOIN av.abonne a ";
  343.                         if($typeAction == &&  $partenaireId != 0)
  344.                             $sql .= " INNER JOIN av.partenaire pt ";
  345.                     }else{
  346.                         $sql .= " INNER JOIN av.abonne a";   
  347.                     }
  348.                     $sql .=" WHERE  1 = 1  ";  
  349.                     if($typeAction == || $typeAction == 1)
  350.                         ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  351.                     else
  352.                         ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId ';
  353.                     
  354.                     if($typeAction == || $typeAction == 1)
  355.                         ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  356.                     else
  357.                         ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  358.                 $query1 $this->_em->createQuery($sql)    ; 
  359.                 $query1->setParameters($param);
  360.                  
  361.             $sql =" SELECT DISTINCT v.id, v.nomVille as nom, 5 as typeVille
  362.                         FROM App\Entity\stock\Ville v INNER JOIN v.zoneproducteurs zp
  363.                         INNER JOIN zp.abonne a 
  364.                         WHERE  1 = 1  ";  
  365.                         
  366.                         ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= ' AND a.id =:abonneId ';  
  367.                         
  368.                         if($tabVille !=0){    
  369.                             $i=0;
  370.                             foreach($tabVille as $uneVille){
  371.                                 if($i == 0){
  372.                                     $sql .= " AND v.id = :ville".$uneVille->getVille()->getId()."";
  373.                                     //var_dump($uneVille->getId());
  374.                                 }else{
  375.                                     $sql .= " OR v.id = :ville".$uneVille->getVille()->getId()."";
  376.                                 }
  377.                                 $i++;
  378.                                 //$tabProduitUser[] = $unInfoProduit->getId();            
  379.                             }    
  380.                                 //( $ville == '0' || $ville == '') ? $sql .= '' : $sql .= ' AND v3.id = :ville';
  381.                         }
  382.                         if($tabVille !=0){    
  383.                             
  384.                                foreach($tabVille as $uneVille){
  385.                                    $param["ville".$uneVille->getVille()->getId().""] = $uneVille->getVille()->getId();            
  386.                                 }
  387.                            
  388.                         }
  389.                         ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  390.                         $query2 $this->_em->createQuery($sql)    ; 
  391.                         $query2->setParameters($param);
  392.         return  array_merge$query1->getResult(),$query2->getResult());
  393.     }
  394.     /**
  395.      * Retourne un fournisseur.
  396.      *
  397.      * @return type
  398.      */
  399.     public function getCooperativeApi()
  400.     {
  401.          $query $this->_em->createQuery(
  402.                        'SELECT DISTINCT v.id, v.nomVille
  403.                         FROM App\Entity\stock\Ville v'
  404.                             )    ;
  405.           return  $query->getResult();
  406.     }
  407. }