src/Repository/prod/SurfaceAnneeRepository.php line 519

Open in your IDE?
  1. <?php
  2. namespace App\Repository\prod
  3. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  4. use Doctrine\Persistence\ManagerRegistry;
  5. use App\ControllerModel\user\paramUtilTrait;
  6. use App\Entity\prod\SurfaceAnnee;
  7. use PDO;
  8. /**
  9.  * SurfaceAnneeRepository
  10.  *
  11.  * This class was generated by the Doctrine ORM. Add your own custom
  12.  * repository methods below.
  13.  */
  14. class SurfaceAnneeRepository extends ServiceEntityRepository
  15. {
  16.     use paramUtilTrait;
  17.     public function __construct(ManagerRegistry $registry)
  18.     {
  19.         parent::__construct($registrySurfaceAnnee::class);
  20.     }
  21.     
  22.      
  23.     /**
  24.      * Retourne un fournisseur.
  25.      *
  26.      * @return type
  27.      */
  28.     public function getIntentionProducteur($idProd)
  29.     {
  30.          $query $this->_em->createQuery(
  31.                        'SELECT DISTINCT sa.id, sa.superficie as valSurface, sa.datePublication as dateSaisie, a.infoAnneeCampagne as anneeCampagne, sa.etatSurfaceAnnee, p.id as idProd, a.id as idAnnee, pr.nomProduit, sa.codeGenere
  32.                         FROM App\Entity\prod\SurfaceAnnee sa 
  33.                             
  34.                             INNER JOIN sa.producteur p 
  35.                             INNER JOIN sa.produit pr
  36.                             INNER JOIN sa.anneecampagne a
  37.                             WHERE p.id =:idProd  ' 
  38.                             
  39.                  ->setParameters(array('idProd'=>$idProd));
  40.           return  $query->getResult();
  41.     }
  42.     /**
  43.      * Retourne un fournisseur.
  44.      *
  45.      * @return type
  46.      */
  47.     public function getSurfaceSiPolygom($abonneId)
  48.     {
  49.          $query $this->_em->createQuery(
  50.                        'SELECT  sa
  51.                         FROM App\Entity\prod\SurfaceAnnee sa 
  52.                         
  53.                             INNER JOIN sa.abonne a
  54.                             WHERE a.id =:abonneId   AND sa.siPolygon is not null ' 
  55.                             
  56.                  ->setParameters(array('abonneId'=>$abonneId));
  57.           return  $query->getResult();
  58.     }
  59.      /**
  60.      * Retourne un fournisseur.
  61.      *
  62.      * @return type
  63.      */
  64.     public function getSumIntentionProducteur($idProd)
  65.     {
  66.          $query $this->_em->createQuery(
  67.                        'SELECT DISTINCT SUM(sa.superficie) as valSurface, SUM(sa.superficieRelle) as valSurfaceReelle
  68.                         FROM App\Entity\prod\SurfaceAnnee sa 
  69.                             
  70.                             INNER JOIN sa.producteur p 
  71.                             INNER JOIN sa.produit pr
  72.                            
  73.                             WHERE p.id =:idProd and sa.typeParcelle =0  and sa.etatSurfaceAnnee =1' // INNER JOIN sa.anneecampagne a
  74.                             
  75.                  ->setParameters(array('idProd'=>$idProd));
  76.           return  $query->getResult();
  77.     }
  78.     /**
  79.      * Retourne un fournisseur.
  80.      *
  81.      * @return type
  82.      */
  83.     public function getSumIntentionProducteurByTypeProduit($idProd$typeCulture=0$produitId=0$groupByProduit =0)
  84.     {
  85.         $param = array();
  86.        
  87.             $sql "   SELECT DISTINCT SUM(sa.superficie) as valSurface, pr.nomProduit
  88.                         FROM App\Entity\prod\SurfaceAnnee sa 
  89.                             
  90.                             INNER JOIN sa.producteur p 
  91.                             INNER JOIN sa.produit pr
  92.                              
  93.                         "
  94.                
  95.             $sql .= " WHERE 1=1 and sa.typeParcelle =0";
  96.             ($typeCulture == '0' || $typeCulture == '') ? $sql .= '' $sql .= '  AND sa.typeCulture  = :typeCulture ';
  97.             ($produitId == '0' || $produitId == '') ? $sql .= '' $sql .= '  AND pr.id  = :produitId ';
  98.             ($idProd == '0' || $idProd == '') ? $sql .= '' $sql .= '  AND p.id =:idProd ';
  99.             
  100.             ( $idProd == '0' || $idProd == '') ? $sql .= '' $param['idProd'] = $idProd;
  101.             ( $typeCulture == '0' || $typeCulture == '') ? $sql .= '' $param['typeCulture'] = $typeCulture;
  102.             ( $produitId == '0' || $produitId == '') ? $sql .= '' $param['produitId'] = $produitId;
  103.             
  104.             if($groupByProduit ==1)
  105.                 $sql .= " GROUP BY pr.id ";
  106.             
  107.             $query $this->_em->createQuery($sql);
  108.             $query->setParameters($param);       
  109.             return  $query->getResult();
  110.     }
  111.       /**
  112.      * Retourne un fournisseur.
  113.      *
  114.      * @return type
  115.      */
  116.     public function getCountIntentionProducteur($idProd)
  117.     {
  118.          $query $this->_em->createQuery(
  119.                        'SELECT DISTINCT COUNT(sa.superficie) as valSurface
  120.                         FROM App\Entity\prod\SurfaceAnnee sa 
  121.                             
  122.                             INNER JOIN sa.producteur p 
  123.                             INNER JOIN sa.produit pr
  124.                            
  125.                             WHERE p.id =:idProd and sa.typeParcelle =0 ' // INNER JOIN sa.anneecampagne a
  126.                             
  127.                  ->setParameters(array('idProd'=>$idProd));
  128.           return  $query->getResult();
  129.     }
  130.      /**
  131.      * Retourne un fournisseur.
  132.      *
  133.      * @return type
  134.      */
  135.     public function getVarieteIntentionProducteur($idProd)
  136.     {
  137.          $query $this->_em->createQuery(
  138.                        'SELECT DISTINCT pr.nomProduit
  139.                         FROM App\Entity\prod\SurfaceAnnee sa 
  140.                             
  141.                             INNER JOIN sa.producteur p 
  142.                             INNER JOIN sa.produit pr
  143.                            
  144.                             WHERE p.id =:idProd  ' // INNER JOIN sa.anneecampagne a
  145.                             
  146.                  ->setParameters(array('idProd'=>$idProd));
  147.           return  $query->getResult();
  148.     }
  149.          /**
  150.      * Retourne un fournisseur.
  151.      *
  152.      * @return type
  153.      */
  154.     public function getSumIntentionProducteurByAbonne($abonneId$groupement=0$tabVille=0$type=0$producteurId=1$agentId=0$zone=0
  155.                                                     ,$partenaireId=0$typeAction=0,  $siPolygon=0,$region=0$ville=0$produit=0$sexe=0$agent=0)
  156.     {
  157.         
  158.         if($type == 0){
  159.             $sql " SELECT DISTINCT SUM(sa.superficie) as valSurface,   COUNT(DISTINCT(sa)) as countSurface,  SUM(DISTINCT(sa.superficieRelle)) as valSurfaceReelle ";
  160.         } else if($type == 3) {
  161.             $sql " SELECT sa ";
  162.         } else if($type == 4) {
  163.             $sql " SELECT sa.id, sa.codeGenere, sa.superficie, sa.superficieRelle, sa.codeParcelle ";
  164.         } else if($type == 5) {
  165.             $sql " SELECT sa.id, sa.codeGenere, sa.superficie, sa.superficieRelle, sa.codeParcelle, u.nom, u.prenoms, u.sexe ";
  166.         } 
  167.          else{
  168.             $sql " SELECT  COUNT(DISTINCT(sa)) as valSurface ";
  169.         }
  170.         $sql .= " FROM App\Entity\prod\SurfaceAnnee sa 
  171.                         INNER JOIN sa.producteur p 
  172.                         INNER JOIN sa.produit pr
  173.                         INNER JOIN p.utilisateur u 
  174.             "
  175.         if($typeAction != 0){
  176.             $sql .= " INNER JOIN sa.surfaceabonnes sas ";
  177.             $sql .= " INNER JOIN sas.abonne a ";
  178.             if($typeAction == &&  $partenaireId != 0)
  179.                 $sql .= " INNER JOIN sas.partenaire pt ";
  180.         }else{
  181.             $sql .= " INNER JOIN p.abonne a";
  182.         }
  183.         if($groupement != '0' ){
  184.             $sql .= " INNER JOIN p.producteurgroupements pg ";
  185.             $sql .= " INNER JOIN pg.groupement g ";
  186.         }
  187.         if( $tabVille !=|| $zone != '0'){
  188.             $sql .= " INNER JOIN p.zoneproducteurs zp ";
  189.             $sql .= " LEFT JOIN zp.ville z ";
  190.         }
  191.       
  192.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $sql .= '  INNER JOIN p.agent ag ';
  193.         $sql .= " WHERE  p.etatProd =:etatProd and  sa.etatSurfaceAnnee =:etatProd and  sa.typeParcelle = 0 ";
  194.         if($typeAction == || $typeAction == 1){
  195.             //if($abonneId!=0)
  196.                 //$sql .= "and a.id =:abonneId  ";
  197.         }
  198.         if($producteurId == -1)
  199.                 $sql .= " AND  sa.siPolygon = 1 ";
  200.         ( $groupement == '0' || $groupement == '') ? $sql .= '' $sql .= '  AND g.id = :groupement ';
  201.         //( $agentId == '0' || $agentId == '') ? $sql .= '' : $sql .= '  AND u.id = :agentId ';
  202.         $producteurId == '0' || $producteurId == '') ? $sql .= '' $sql .= '  AND p.id = :producteurId ';
  203.         if($typeAction == || $typeAction == 1)
  204.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  205.         else
  206.             ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId AND sas.siPrincipale=1 ';
  207.            // var_dump($sql, $typeAction, $abonneId, $producteurId );exit;
  208.         if($typeAction == && $abonneId != 0)
  209.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  210.             
  211.         ( $zone == '0' || $zone == '') ? $sql .= '' $sql .= '  AND z.id = :zoneId ';
  212.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $sql .= '  AND ag.id = :agentId ';
  213.         ( $sexe == '0' || $sexe == '') ? $sql .= '' $sql .= '  AND u.sexe = :sexe ';
  214.         ( $produit == '0' || $produit == '') ? $sql .= '' $sql .= '  AND pr.id = :produitId ';
  215.         ( $siPolygon == '0' || $siPolygon == '') ? $sql .= '' $sql .= '  AND sa.siPolygon = 1 ';
  216.         
  217.         //var_dump($partenaireId=0, $typeAction=0);exit;
  218.         if($tabVille !=&& count($tabVille)!=0){         
  219.             // if($prod != 1){
  220.                  $i=0;
  221.                  foreach($tabVille as $uneVille){
  222.                      if($i == 0){
  223.                          $sql .= " AND ( z.id = :ville".$uneVille->getVille()->getId()."";
  224.                          //var_dump($uneVille->getId());
  225.                      }else{
  226.                          $sql .= " OR z.id = :ville".$uneVille->getVille()->getId()."";
  227.                      }
  228.                      $i++;
  229.                      //$tabProduitUser[] = $unInfoProduit->getId();            
  230.                  }    
  231.              $sql .= " ) ";
  232.         }
  233.         if($type == 5)
  234.             $sql .= " ORDER BY sa.id DESC ";
  235.         ( $zone == '0' || $zone == '') ? $sql .= '' $param['zoneId'] = $zone;
  236.         ( $sexe == '0' || $sexe == '') ? $sql .= '' $param['sexe'] = $sexe;
  237.         ( $produit == '0' || $produit == '') ? $sql .= '' $param['produitId'] = $produit;
  238.         ( $groupement == '0' || $groupement == '') ? $sql .= '' $param['groupement'] = $groupement;
  239.         ( $producteurId == '0' || $producteurId == '') ? $sql .= '' $param['producteurId'] = $producteurId;
  240.         if($typeAction == || $typeAction == 1)
  241.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  242.         else
  243.             ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  244.         
  245.         if($typeAction == && $abonneId != 0)
  246.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  247.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $param['agentId'] = $agentId;
  248.         $param['etatProd'] = 1;
  249.         if($tabVille !=0){    
  250.             // if($prod != 1){
  251.                 foreach($tabVille as $uneVille){
  252.                     $param["ville".$uneVille->getVille()->getId().""] = $uneVille->getVille()->getId();            
  253.                  }
  254.              /*}else{
  255.                  ( $tabVille == '0' || $tabVille == '') ? $sql .= '' : $param['ville'] = $tabVille;
  256.              }*/
  257.         }
  258.          
  259.          //var_dump($sql);exit;
  260.         
  261.          /*$query = $this->_em->createQuery(
  262.                        'SELECT DISTINCT SUM(sa.superficie) as valSurface
  263.                         FROM App\Entity\prod\SurfaceAnnee sa 
  264.                             
  265.                             INNER JOIN sa.producteur p 
  266.                             INNER JOIN sa.produit pr
  267.                             INNER JOIN p.abonne a                           
  268.                             WHERE a.id =:abonneId  and p.etatProd !=:etatProd ' ) // INNER JOIN sa.anneecampagne a
  269.                             
  270.                  ->setParameters(array('abonneId'=>$abonneId,'etatProd'=>3 ));*/
  271.                 
  272.                          //( $ville == '0' || $ville == '') ? $sql .= '' : $sql .= ' AND v3.id = :ville';
  273.                     /* }else{
  274.                          ( $tabVille == '0' || $tabVille == '') ? $sql .= '' : $sql .= ' AND v.id = :ville';
  275.                      }*/    
  276.         $query $this->_em->createQuery($sql);
  277.         $query->setParameters($param);       
  278.           return  $query->getResult();
  279.     }
  280.              /**
  281.      * Retourne un fournisseur.
  282.      *
  283.      * @return type
  284.      */
  285.     public function getIntentionMinMaxProducteur($abonneId$groupement=0$tabVille=0$type=0$producteurId=1$agentId=0$zone=0
  286.                                                     ,$partenaireId=0$typeAction=0,  $siPolygon=0,$region=0$ville=0$produit=0$sexe=0$agent=0$nbParPageInt=0)
  287.     {
  288.         $sql "";
  289.         if($type == 0){
  290.             $sql " SELECT  sa.id, sa.codeGenere, sa.superficieRelle, sa.codeParcelle ";
  291.         } else if($type ==) {
  292.             $sql " SELECT MAX(sa.superficie) as extremiteSuperficie, sa.id, sa.codeGenere, sa.superficieRelle, sa.codeParcelle ";
  293.         }else if($type ==) {
  294.                 $sql " SELECT MAX(sa.superficie) as extremiteSuperficie, sa.id, sa.codeGenere, sa.superficieRelle, sa.codeParcelle ";
  295.         }
  296.         
  297.         $sql .= " FROM App\Entity\prod\SurfaceAnnee sa 
  298.                         INNER JOIN sa.producteur p 
  299.                         INNER JOIN sa.produit pr
  300.                         INNER JOIN p.utilisateur u 
  301.             "
  302.         if($typeAction != 0){
  303.             $sql .= " INNER JOIN sa.surfaceabonnes sas ";
  304.             $sql .= " INNER JOIN sas.abonne a ";
  305.             if($typeAction == &&  $partenaireId != 0)
  306.                 $sql .= " INNER JOIN sas.partenaire pt ";
  307.         }else{
  308.             $sql .= " INNER JOIN p.abonne a";
  309.         }
  310.         if($groupement != '0' ){
  311.             $sql .= " INNER JOIN p.producteurgroupements pg ";
  312.             $sql .= " INNER JOIN pg.groupement g ";
  313.         }
  314.         if( $tabVille !=|| $zone != '0'){
  315.             $sql .= " INNER JOIN p.zoneproducteurs zp ";
  316.             $sql .= " LEFT JOIN zp.ville z ";
  317.         }
  318.       
  319.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $sql .= '  INNER JOIN p.agent ag ';
  320.         $sql .= " WHERE  p.etatProd !=:etatProd and  sa.typeParcelle = 0 ";
  321.         if($typeAction == || $typeAction == 1){
  322.             //if($abonneId!=0)
  323.                 //$sql .= "and a.id =:abonneId  ";
  324.         }
  325.         if($producteurId == -1)
  326.                 $sql .= " AND  sa.siPolygon = 1 ";
  327.         ( $groupement == '0' || $groupement == '') ? $sql .= '' $sql .= '  AND g.id = :groupement ';
  328.         //( $agentId == '0' || $agentId == '') ? $sql .= '' : $sql .= '  AND u.id = :agentId ';
  329.         $producteurId == '0' || $producteurId == '') ? $sql .= '' $sql .= '  AND p.id = :producteurId ';
  330.         if($typeAction == || $typeAction == 1)
  331.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  332.         else
  333.             ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId AND sas.siPrincipale=1 ';
  334.            // var_dump($sql, $typeAction, $abonneId, $producteurId );exit;
  335.         if($typeAction == && $abonneId != 0)
  336.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  337.             
  338.         ( $zone == '0' || $zone == '') ? $sql .= '' $sql .= '  AND z.id = :zoneId ';
  339.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $sql .= '  AND ag.id = :agentId ';
  340.         ( $sexe == '0' || $sexe == '') ? $sql .= '' $sql .= '  AND u.sexe = :sexe ';
  341.         ( $produit == '0' || $produit == '') ? $sql .= '' $sql .= '  AND pr.id = :produitId ';
  342.         ( $siPolygon == '0' || $siPolygon == '') ? $sql .= '' $sql .= '  AND sa.siPolygon = 1 ';
  343.         
  344.         //var_dump($partenaireId=0, $typeAction=0);exit;
  345.         if($tabVille !=&& count($tabVille)!=0){         
  346.             // if($prod != 1){
  347.                  $i=0;
  348.                  foreach($tabVille as $uneVille){
  349.                      if($i == 0){
  350.                          $sql .= " AND ( z.id = :ville".$uneVille->getVille()->getId()."";
  351.                          //var_dump($uneVille->getId());
  352.                      }else{
  353.                          $sql .= " OR z.id = :ville".$uneVille->getVille()->getId()."";
  354.                      }
  355.                      $i++;
  356.                      //$tabProduitUser[] = $unInfoProduit->getId();            
  357.                  }    
  358.              $sql .= " ) ";
  359.         }
  360.         ( $zone == '0' || $zone == '') ? $sql .= '' $param['zoneId'] = $zone;
  361.         ( $sexe == '0' || $sexe == '') ? $sql .= '' $param['sexe'] = $sexe;
  362.         ( $produit == '0' || $produit == '') ? $sql .= '' $param['produitId'] = $produit;
  363.         ( $groupement == '0' || $groupement == '') ? $sql .= '' $param['groupement'] = $groupement;
  364.         ( $producteurId == '0' || $producteurId == '') ? $sql .= '' $param['producteurId'] = $producteurId;
  365.         if($typeAction == || $typeAction == 1)
  366.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  367.         else
  368.             ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  369.         
  370.         if($typeAction == && $abonneId != 0)
  371.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  372.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $param['agentId'] = $agentId;
  373.         $param['etatProd'] = 2;
  374.         if($tabVille !=0){    
  375.             // if($prod != 1){
  376.                 foreach($tabVille as $uneVille){
  377.                     $param["ville".$uneVille->getVille()->getId().""] = $uneVille->getVille()->getId();            
  378.                  }
  379.              /*}else{
  380.                  ( $tabVille == '0' || $tabVille == '') ? $sql .= '' : $param['ville'] = $tabVille;
  381.              }*/
  382.          }
  383.          if($type == 0){
  384.             $sql .= " ORDER BY  extremiteSuperficie ASC ";
  385.         } else if($type ==) {
  386.             $sql .= " ORDER BY  extremiteSuperficie DESC ";
  387.         }
  388.          //var_dump($sql);exit;
  389.         
  390.          /*$query = $this->_em->createQuery(
  391.                        'SELECT DISTINCT SUM(sa.superficie) as valSurface
  392.                         FROM App\Entity\prod\SurfaceAnnee sa 
  393.                             
  394.                             INNER JOIN sa.producteur p 
  395.                             INNER JOIN sa.produit pr
  396.                             INNER JOIN p.abonne a                           
  397.                             WHERE a.id =:abonneId  and p.etatProd !=:etatProd ' ) // INNER JOIN sa.anneecampagne a
  398.                             
  399.                  ->setParameters(array('abonneId'=>$abonneId,'etatProd'=>3 ));*/
  400.                 
  401.                          //( $ville == '0' || $ville == '') ? $sql .= '' : $sql .= ' AND v3.id = :ville';
  402.                     /* }else{
  403.                          ( $tabVille == '0' || $tabVille == '') ? $sql .= '' : $sql .= ' AND v.id = :ville';
  404.                      }*/    
  405.         $query $this->_em->createQuery($sql);
  406.         if($nbParPageInt != 0)
  407.             $query->setMaxResults($nbParPageInt);
  408.     
  409.         $query->setParameters($param);       
  410.           return  $query->getResult();
  411.     }
  412.         /**
  413.      * Retourne un fournisseur.
  414.      *
  415.      * @return type
  416.      */
  417.     public function getIntentionProduit($produitId)
  418.     {
  419.          $query $this->_em->createQuery(
  420.                        'SELECT sa
  421.                         FROM App\Entity\prod\SurfaceAnnee sa 
  422.                             INNER JOIN sa.produit pr
  423.                             WHERE pr.id =:produitId AND sa.typeParcelle = 0 ' )  //INNER JOIN sa.anneecampagne a // INNER JOIN sa.producteur p 
  424.                             
  425.                  ->setParameters(array('produitId'=>$produitId));
  426.           return  $query->getResult();
  427.     }
  428.     
  429.         /**
  430.      * Retourne un fournisseur.
  431.      *
  432.      * @return type
  433.      */
  434.     public function getIntentionProducteurAnneeCompage($idProd,$anneeCampagne=0)
  435.     {
  436.          $query $this->_em->createQuery(
  437.                       'SELECT DISTINCT sa.id, sa.superficie as valSurface, sa.datePublication as dateSaisie, 0 as anneeCampagne, sa.etatSurfaceAnnee,sa.codeGenere,0 as idAnnee
  438.                         FROM App\Entity\prod\SurfaceAnnee sa 
  439.                             
  440.                             INNER JOIN sa.producteur p 
  441.                             WHERE p.id =:idProd ' )                
  442.                  ->setParameters(array('idProd'=>$idProd));
  443.           return  $query->getResult();
  444.     }
  445.     
  446.         /**
  447.      * Retourne un fournisseur.
  448.      *
  449.      * @return type
  450.      */
  451.     public function getIntentionProducteurFournisseur($idFour)
  452.     {
  453.          $query $this->_em->createQuery(
  454.                        'SELECT DISTINCT sa.id, sa.superficie as valSurface,sa.datePublication as dateSaisie, a.infoAnneeCampagne as anneeCampagne, sa.etatSurfaceAnnee, p.id as idProd, a.id as idAnnee, pr.nomProduit, sa.codeGenere
  455.                         FROM App\Entity\prod\SurfaceAnnee sa 
  456.                             
  457.                             INNER JOIN sa.producteur p 
  458.                             INNER JOIN p.fournisseurproducteurs fp
  459.                             INNER JOIN fp.fournisseur f
  460.                             INNER JOIN sa.produit pr
  461.                             INNER JOIN sa.anneecampagne a
  462.                             WHERE f.id =:idFour  ' 
  463.                             
  464.                  ->setParameters(array('idFour'=>$idFour));
  465.           return  $query->getResult();
  466.     }
  467.     
  468.      public function getApiNewIntentionProducteurFournisseur($idFour$tabVille,$prod 2$niveau =4$abonneId$groupement=0,
  469.                                                              $partenaireId=0$typeAction=$siExploitation=0$siSeulParcelle=0)
  470.     {
  471.         $param =array();
  472.         $champSiExploitation =" , 0 as explCodeGenere   ";
  473.         
  474.         if($siExploitation == && $siSeulParcelle == 0)
  475.             $champSiExploitation " , saa.codeGenere as explCodeGenere ";
  476.             $infoVille $this->getStringSqlVille($niveau);
  477.             $sql ='SELECT DISTINCT sa.id, sa.superficie as valSurface, sa.datePublication as dateSaisie, sa.datePlantation as dateSemi, sa.siPolygon as siPolygone, 0 as anneeCampagne, sa.etatSurfaceAnnee as etat, pr.id as idVariete, v.id as idVille, pr.nomProduit, sa.codeGenere, p.codeGenere  as prodCodeGenere, sa.typeParcelle '.$champSiExploitation .', sa.superficieRelle as valSurfaceAudit
  478.                         FROM App\Entity\prod\SurfaceAnnee sa ';  
  479.                          $sql .='    INNER JOIN sa.produit pr
  480.                          ';                           
  481.             $sql .='    INNER JOIN sa.producteur p 
  482.                         INNER JOIN p.producteurgroupements pg
  483.                         INNER JOIN pg.groupement g ';
  484.             $sql .='    INNER JOIN p.utilisateur u  ';
  485.             
  486.             if($siExploitation == && $siSeulParcelle == 0)
  487.                 $sql .='    INNER JOIN sa.surfaceannee saa ';
  488.             
  489.             //if($idFour != 0 ){
  490.                     /*$sql ='    INNER JOIN p.fournisseurproducteurs fp
  491.                                INNER JOIN fp.fournisseur f';*/
  492.                    /* $sql .= " INNER JOIN p.zoneproducteurs zp 
  493.                                INNER JOIN zp.ville v
  494.                                INNER JOIN v.setrouvers st ";*/
  495.                                $sql .= " INNER JOIN p.zoneproducteurs zp 
  496.                                          INNER JOIN zp.ville v
  497.                                ";
  498.             //}
  499.             if($typeAction != 0){
  500.                 $sql .= " INNER JOIN sa.surfaceabonnes pas ";
  501.                 $sql .= " INNER JOIN pas.abonne a ";
  502.                 if($typeAction == &&  $partenaireId != 0)
  503.                     $sql .= " INNER JOIN pas.partenaire pt ";
  504.             }else{
  505.                // $sql .= " INNER JOIN p.abonne a";
  506.                 $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= ' INNER JOIN sa.abonne a ';
  507.                 
  508.             }
  509.             $sql .= $infoVille[0];
  510.                             ; 
  511.             
  512.             //( $abonneId == '0' || $abonneId == '') ? $sql .= '' : $sql .= ' INNER JOIN p.abonne a ';
  513.             $sql .= '   WHERE 1=1 AND  p.etatProd !=2 AND sa.etatSurfaceAnnee != 2 ';
  514.             if($siExploitation == 1)
  515.                 $sql .= '   AND sa.typeParcelle = 1 ';
  516.             else
  517.                 $sql .= '   AND sa.typeParcelle = 0 ';
  518.             if($groupement==0){
  519.                 if(count($tabVille) !=0){    
  520.                                 
  521.                     if($prod != 1){
  522.                         $i=0;
  523.                         foreach($tabVille as $uneVille){
  524.                             if($i == 0){
  525.                                 $sql .= " AND ( v.id = :ville".$uneVille->getVille()->getId()."";
  526.                                 //var_dump($uneVille->getId());
  527.                             }else{
  528.                                 $sql .= " OR v.id = :ville".$uneVille->getVille()->getId()."";
  529.                             }
  530.                             $i++;
  531.                             //$tabProduitUser[] = $unInfoProduit->getId();            
  532.                     }    
  533.                     $sql .= " ) ";
  534.                         //( $ville == '0' || $ville == '') ? $sql .= '' : $sql .= ' AND v3.id = :ville';
  535.                     }else{
  536.                         ( $tabVille == '0' || $tabVille == '') ? $sql .= '' $sql .= ' AND v.id = :ville';
  537.                     }    
  538.                 }
  539.                 // ( $idFour == '0' || $idFour == '') ? $sql .= '' : $sql .= ' AND f.id = :idFour';
  540.             }
  541.         
  542.             if($typeAction == || $typeAction == 1)
  543.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  544.             else
  545.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId AND pas.siPrincipale=1 ';
  546.             ( $groupement == '0' || $groupement == '') ? $sql .= '' $sql .= ' AND g.id = :groupement';
  547.            
  548.             
  549.             ( $groupement == '0' || $groupement == '') ? $sql .= '' $param['groupement'] = $groupement;
  550.             if($typeAction == || $typeAction == 1)
  551.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  552.             else
  553.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  554.                 
  555.             //( $ville == '0' || $ville == '') ? $sql .= '' : $param['ville'] = $ville;    
  556.             if($groupement==0){
  557.                 if($tabVille !=0){    
  558.                      if($prod != 1){
  559.                         foreach($tabVille as $uneVille){
  560.                             $param["ville".$uneVille->getVille()->getId().""] = $uneVille->getVille()->getId();            
  561.                          }
  562.                      }else{
  563.                          ( $tabVille == '0' || $tabVille == '') ? $sql .= '' $param['ville'] = $tabVille;
  564.                      }
  565.                  }
  566.                 // ( $idFour == '0' || $idFour == '') ? $sql .= '' : $param['idFour'] = $idFour;
  567.             }
  568.          
  569.         // var_dump($sql);exit;
  570.         
  571.             $query $this->_em->createQuery($sql); 
  572.                             
  573.             $query->setParameters($param);  
  574.             //var_dump($query->getSql());exit;
  575.             return  $query->getResult();
  576.     }
  577.     
  578.     /**
  579.      * Retourne un fournisseur.
  580.      *
  581.      * @return type
  582.      */
  583.     public function getIntentionProducteurMap($typeLocalisation,$abonneId,$partenaireId=0$typeAction=0)
  584.     {
  585.         $param=array();
  586.         $sql " SELECT l.latitude, l.longitude, p.id, u.nom as nomProd, u.prenoms, sa.superficie as valSurface,sa.datePublication as dateSaisie,  sa.etatSurfaceAnnee, p.id as idProd,  pr.nomProduit, sa.codeGenere, sa.codeSurface,  l.typeLocalisation           
  587.                     "
  588.         $sql .= " FROM App\Entity\prod\SurfaceAnnee sa 
  589.                     INNER JOIN sa.producteur p 
  590.                     INNER JOIN sa.produit pr 
  591.                     INNER JOIN p.utilisateur u
  592.                     INNER JOIN sa.localisations l
  593.                     "
  594.             if($typeAction != 0){
  595.                 $sql .= " INNER JOIN sa.surfaceabonnes sas ";
  596.                 $sql .= " INNER JOIN sas.abonne a ";
  597.                 if($typeAction == &&  $partenaireId != 0)
  598.                     $sql .= " INNER JOIN sas.partenaire pt ";
  599.             }else{
  600.                 $sql .= " INNER JOIN p.abonne a";
  601.                 
  602.             }
  603.             $sql .= " WHERE  p.etatProd !=:etatProd  AND l.etatLocalisation = 1 ";
  604.             ($typeLocalisation == '0' || $typeLocalisation == '') ? $sql .= '' $sql .= '  AND l.typeLocalisation  = :typeLocalisation ';
  605.             if($typeAction == || $typeAction == 1)
  606.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  607.             else
  608.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId AND sas.siPrincipale=1 ';
  609.             
  610.         
  611.             $param['etatProd'] = 2;
  612.             ( $typeLocalisation == '0' || $typeLocalisation == '') ? $sql .= '' $param['typeLocalisation'] = $typeLocalisation;
  613.             if($typeAction == || $typeAction == 1)
  614.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  615.             else
  616.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  617.             
  618.             $query $this->_em->createQuery($sql);
  619.             $query->setParameters($param); 
  620.                 
  621.             return  $query->getResult();
  622.             
  623.             
  624.     }
  625.     /**
  626.      * Retourne un fournisseur.
  627.      *
  628.      * @return type
  629.      */
  630.      public function getLocalisationFournisseurMap($typeLocalisation,$abonneId,$partenaireId=0$typeAction=0)
  631.      {
  632.             $param=array();
  633.             $sql " SELECT l.latitude, l.longitude, f.id, f.nomFournisseur as nomProd, 0 as prenoms, 0  as valSurface,l.datePublication as dateSaisie,  l.typeLocalisation, f.id as idProd,  0 as nomProduit, l.codeGenere
  634.             "
  635.             $sql .= " FROM App\Entity\stock\Fournisseur f
  636.                         INNER JOIN f.localisations l
  637.                         "
  638.                 if($typeAction != 0){
  639.                     $sql .= " INNER JOIN f.fournisseurabonnes fas ";
  640.                     $sql .= " INNER JOIN fas.abonne a ";
  641.                     if($typeAction == &&  $partenaireId != 0)
  642.                         $sql .= " INNER JOIN fas.partenaire pt ";
  643.                 }else{
  644.                     $sql .= " INNER JOIN f.abonne a";
  645.                     
  646.                 }
  647.             $sql .= " WHERE  f.etatFournisseur !=:etatFournisseur ";
  648.                 ($typeLocalisation == '0' || $typeLocalisation == '') ? $sql .= '' $sql .= '  AND l.typeLocalisation  = :typeLocalisation ';
  649.                 if($typeAction == || $typeAction == 1)
  650.                     ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  651.                 else
  652.                     ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId AND fas.siPrincipale=1 ';
  653.                 
  654.             $param['etatFournisseur'] = 1;
  655.             ( $typeLocalisation == '0' || $typeLocalisation == '') ? $sql .= '' $param['typeLocalisation'] = $typeLocalisation;
  656.             if($typeAction == || $typeAction == 1)
  657.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  658.             else
  659.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  660.             
  661.             $query $this->_em->createQuery($sql);
  662.             $query->setParameters($param);       
  663.             return  $query->getResult();
  664.                              
  665.              
  666.      }
  667.      /**
  668.      * Retourne un fournisseur.
  669.      *
  670.      * @return type
  671.      */
  672.     public function getParcelleProche_1($pointLocalisation$abonneId)
  673.     {
  674.          $query $this->_em->createQuery(
  675.                     'SELECT DISTINCT sa.id, sa.superficie as valSurface,  p.id as idProd,  pr.nomProduit, sa.codeGenere,  u.nom, u.prenoms, stdistancesphere(sa.localisation, :pointLocalisation)
  676.                         FROM App\Entity\prod\SurfaceAnnee sa 
  677.                         INNER JOIN sa.producteur p 
  678.                         INNER JOIN sa.abonne a
  679.                         INNER JOIN p.utilisateur u
  680.                         INNER JOIN sa.produit pr
  681.                         WHERE a.id =:abonneId AND  sa.localisation =:pointLocalisation  AND sa.typeParcelle = 0 
  682.                         AND stdistancesphere(sa.localisation, :pointLocalisation) is not NULL
  683.                         ORDER BY  stdistancesphere(sa.localisation, :pointLocalisation) ASC
  684.                       
  685.                         ' 
  686.                     )     
  687.                     ->setParameters(array('abonneId'=>$abonneId,'pointLocalisation'=>$pointLocalisation));
  688.                
  689.           return  $query->getResult();
  690.     }
  691.     public function getParcelleProche($pointLocalisation$abonneId,  $surfaceId=0$limit=) {
  692.             
  693.         if($pointLocalisation != null ){
  694.                 $sqlrech " SELECT  DISTINCT sa.id, sa.superficie as valSurface,  sa.superficie_reelle as valSurfaceReelle, p.id as idProd,  pr.nom_produit as nomProduit, sa.code_genere as codeGenere,  st_distance_sphere(sa.localisation, POINT(:longitude, :latidute))/1000 as distance ,  u.nom_user, u.prenoms_user, p.code_genere as prodCodeGenere
  695.                                     FROM surface_annee sa  ";
  696.                 $sqlrech .= "       INNER JOIN  producteur p on p.id  = sa.producteur_id
  697.                                     INNER JOIN  abonne a on a.id  = sa.abonne_id  
  698.                                     INNER JOIN  utilisateur u on u.id  = p.utilisateur_id  
  699.                                     INNER JOIN  produit pr  on pr.id= sa.produit_id
  700.                         ";
  701.                         $sqlrech .= "
  702.                                     WHERE  1=1  AND   sa.type_parcelle = 0 AND st_distance_sphere(sa.localisation, POINT(:longitude, :latidute)) is not NULL  ";
  703.                 ($surfaceId == '0' || $surfaceId == '') ? $sqlrech .= '' $sqlrech .= ' AND sa.id !=:surfaceId ';
  704.                 if($abonneId !=0){
  705.                     $sqlrech .= " and a.id =:abonneId  ";
  706.                 }
  707.                 $stmt $this->_em->getConnection()->prepare($sqlrech);
  708.             //var_dump($sqlrech );exit;
  709.             $surfaceId == '0' || $surfaceId == '') ? $sqlrech .= '' $stmt->bindValue(':surfaceId'$surfaceIdPDO::PARAM_INT);
  710.             $sqlrech .= " ORDER BY distance ASC Limit :limit";
  711.             
  712.                 if($abonneId !=0){
  713.                     $stmt->bindValue(':abonneId'$abonneIdPDO::PARAM_INT);
  714.                 }
  715.                 
  716.                 $stmt->bindValue(':longitude'$pointLocalisation->getX(), PDO::PARAM_STR);
  717.                 $stmt->bindValue(':latidute'$pointLocalisation->getY(), PDO::PARAM_STR);
  718.                  $stmt->bindValue(':limit'$limitPDO::PARAM_INT);
  719.             
  720.                 //$stmt->execute();
  721.                 $res $stmt->executeQuery()->fetchAllAssociative();
  722.                 
  723.          //var_dump($sqlrech,$pointLocalisation->getX(),  $pointLocalisation->getY(), $abonneId );exit;
  724.             return $res;
  725.         }else{
  726.             return array();
  727.         }
  728.     }
  729.      /**
  730.      * Retourne un fournisseur.
  731.      *
  732.      * @return type
  733.      */
  734.     public function getCalculDistanceDeuxPont($tabLocalisationA$tabLocalisationB)
  735.     {
  736.          $query $this->_em->createQuery(
  737.                     'SELECT   st_distance_sphere(POINT(:longitudeA, :latiduteA), POINT(:longitudeB, :latiduteB))/1000 as distance
  738.                         FROM App\Entity\stack\Localisation sa 
  739.                         ' 
  740.                     )     
  741.                     ->setParameters(array('longitudeA'=>$tabLocalisationA[1],'latiduteA'=>$tabLocalisationA[0], 'longitudeB'=>$tabLocalisationB[1],'latiduteA'=>$tabLocalisationB[0]));
  742.                
  743.           return  $query->getResult();
  744.     }
  745. }