src/Repository/prod/SurfaceAnneeRepository.php line 343

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 getSumIntentionProducteur($idProd)
  48.     {
  49.          $query $this->_em->createQuery(
  50.                        'SELECT DISTINCT SUM(sa.superficie) as valSurface
  51.                         FROM App\Entity\prod\SurfaceAnnee sa 
  52.                             
  53.                             INNER JOIN sa.producteur p 
  54.                             INNER JOIN sa.produit pr
  55.                            
  56.                             WHERE p.id =:idProd and sa.typeParcelle =0 ' // INNER JOIN sa.anneecampagne a
  57.                             
  58.                  ->setParameters(array('idProd'=>$idProd));
  59.           return  $query->getResult();
  60.     }
  61.     /**
  62.      * Retourne un fournisseur.
  63.      *
  64.      * @return type
  65.      */
  66.     public function getSumIntentionProducteurByTypeProduit($idProd$typeCulture=0$produitId=0$groupByProduit =0)
  67.     {
  68.         $param = array();
  69.        
  70.             $sql "   SELECT DISTINCT SUM(sa.superficie) as valSurface, pr.nomProduit
  71.                         FROM App\Entity\prod\SurfaceAnnee sa 
  72.                             
  73.                             INNER JOIN sa.producteur p 
  74.                             INNER JOIN sa.produit pr
  75.                              
  76.                         "
  77.                
  78.             $sql .= " WHERE 1=1 and sa.typeParcelle =0";
  79.             ($typeCulture == '0' || $typeCulture == '') ? $sql .= '' $sql .= '  AND sa.typeCulture  = :typeCulture ';
  80.             ($produitId == '0' || $produitId == '') ? $sql .= '' $sql .= '  AND pr.id  = :produitId ';
  81.             ($idProd == '0' || $idProd == '') ? $sql .= '' $sql .= '  AND p.id =:idProd ';
  82.             
  83.             ( $idProd == '0' || $idProd == '') ? $sql .= '' $param['idProd'] = $idProd;
  84.             ( $typeCulture == '0' || $typeCulture == '') ? $sql .= '' $param['typeCulture'] = $typeCulture;
  85.             ( $produitId == '0' || $produitId == '') ? $sql .= '' $param['produitId'] = $produitId;
  86.             
  87.             if($groupByProduit ==1)
  88.                 $sql .= " GROUP BY pr.id ";
  89.             
  90.             $query $this->_em->createQuery($sql);
  91.             $query->setParameters($param);       
  92.             return  $query->getResult();
  93.     }
  94.       /**
  95.      * Retourne un fournisseur.
  96.      *
  97.      * @return type
  98.      */
  99.     public function getCountIntentionProducteur($idProd)
  100.     {
  101.          $query $this->_em->createQuery(
  102.                        'SELECT DISTINCT COUNT(sa.superficie) as valSurface
  103.                         FROM App\Entity\prod\SurfaceAnnee sa 
  104.                             
  105.                             INNER JOIN sa.producteur p 
  106.                             INNER JOIN sa.produit pr
  107.                            
  108.                             WHERE p.id =:idProd and sa.typeParcelle =0 ' // INNER JOIN sa.anneecampagne a
  109.                             
  110.                  ->setParameters(array('idProd'=>$idProd));
  111.           return  $query->getResult();
  112.     }
  113.      /**
  114.      * Retourne un fournisseur.
  115.      *
  116.      * @return type
  117.      */
  118.     public function getVarieteIntentionProducteur($idProd)
  119.     {
  120.          $query $this->_em->createQuery(
  121.                        'SELECT DISTINCT pr.nomProduit
  122.                         FROM App\Entity\prod\SurfaceAnnee sa 
  123.                             
  124.                             INNER JOIN sa.producteur p 
  125.                             INNER JOIN sa.produit pr
  126.                            
  127.                             WHERE p.id =:idProd  ' // INNER JOIN sa.anneecampagne a
  128.                             
  129.                  ->setParameters(array('idProd'=>$idProd));
  130.           return  $query->getResult();
  131.     }
  132.          /**
  133.      * Retourne un fournisseur.
  134.      *
  135.      * @return type
  136.      */
  137.     public function getSumIntentionProducteurByAbonne($abonneId$groupement=0$tabVille=0$type=0$producteurId=1$agentId=0$zone=0
  138.                                                     ,$partenaireId=0$typeAction=0,  $siPolygon=0,$region=0$ville=0$produit=0$sexe=0$agent=0)
  139.     {
  140.         
  141.         if($type == 0){
  142.             $sql " SELECT DISTINCT SUM(sa.superficie) as valSurface,   COUNT(DISTINCT(sa)) as countSurface ";
  143.         } else if($type == 3) {
  144.             $sql " SELECT sa ";
  145.         } else{
  146.             $sql " SELECT  COUNT(DISTINCT(sa)) as valSurface ";
  147.         }
  148.         $sql .= " FROM App\Entity\prod\SurfaceAnnee sa 
  149.                         INNER JOIN sa.producteur p 
  150.                         INNER JOIN sa.produit pr
  151.                         INNER JOIN p.utilisateur u 
  152.             "
  153.         if($typeAction != 0){
  154.             $sql .= " INNER JOIN sa.surfaceabonnes sas ";
  155.             $sql .= " INNER JOIN sas.abonne a ";
  156.             if($typeAction == &&  $partenaireId != 0)
  157.                 $sql .= " INNER JOIN sas.partenaire pt ";
  158.         }else{
  159.             $sql .= " INNER JOIN p.abonne a";
  160.         }
  161.             
  162.         if($groupement != '0' ){
  163.             $sql .= " INNER JOIN p.producteurgroupements pg ";
  164.             $sql .= " INNER JOIN pg.groupement g ";
  165.         }
  166.         if( $tabVille !=|| $zone != '0'){
  167.             $sql .= " INNER JOIN p.zoneproducteurs zp ";
  168.             $sql .= " LEFT JOIN zp.ville z ";
  169.         }
  170.       
  171.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $sql .= '  INNER JOIN p.agent ag ';
  172.         $sql .= " WHERE  p.etatProd !=:etatProd and  sa.typeParcelle = 0 ";
  173.         if($typeAction == || $typeAction == 1){
  174.             //if($abonneId!=0)
  175.                 //$sql .= "and a.id =:abonneId  ";
  176.         }
  177.         if($producteurId == -1)
  178.                 $sql .= " AND  sa.siPolygon = 1 ";
  179.         ( $groupement == '0' || $groupement == '') ? $sql .= '' $sql .= '  AND g.id = :groupement ';
  180.         //( $agentId == '0' || $agentId == '') ? $sql .= '' : $sql .= '  AND u.id = :agentId ';
  181.         $producteurId == '0' || $producteurId == '') ? $sql .= '' $sql .= '  AND p.id = :producteurId ';
  182.         if($typeAction == || $typeAction == 1)
  183.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  184.         else
  185.             ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId ';
  186.            // var_dump($sql, $typeAction, $abonneId, $producteurId );exit;
  187.         if($typeAction == && $abonneId != 0)
  188.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  189.             
  190.         ( $zone == '0' || $zone == '') ? $sql .= '' $sql .= '  AND z.id = :zoneId ';
  191.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $sql .= '  AND ag.id = :agentId ';
  192.         ( $sexe == '0' || $sexe == '') ? $sql .= '' $sql .= '  AND u.sexe = :sexe ';
  193.         ( $siPolygon == '0' || $siPolygon == '') ? $sql .= '' $sql .= '  AND sa.siPolygon = 1 ';
  194.         
  195.         //var_dump($partenaireId=0, $typeAction=0);exit;
  196.         if($tabVille !=&& count($tabVille)!=0){         
  197.             // if($prod != 1){
  198.                  $i=0;
  199.                  foreach($tabVille as $uneVille){
  200.                      if($i == 0){
  201.                          $sql .= " AND ( z.id = :ville".$uneVille->getVille()->getId()."";
  202.                          //var_dump($uneVille->getId());
  203.                      }else{
  204.                          $sql .= " OR z.id = :ville".$uneVille->getVille()->getId()."";
  205.                      }
  206.                      $i++;
  207.                      //$tabProduitUser[] = $unInfoProduit->getId();            
  208.                  }    
  209.              $sql .= " ) ";
  210.         }
  211.         ( $zone == '0' || $zone == '') ? $sql .= '' $param['zoneId'] = $zone;
  212.         ( $sexe == '0' || $sexe == '') ? $sql .= '' $param['sexe'] = $sexe;
  213.         ( $groupement == '0' || $groupement == '') ? $sql .= '' $param['groupement'] = $groupement;
  214.         ( $producteurId == '0' || $producteurId == '') ? $sql .= '' $param['producteurId'] = $producteurId;
  215.         if($typeAction == || $typeAction == 1)
  216.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  217.         else
  218.             ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  219.         
  220.         if($typeAction == && $abonneId != 0)
  221.             ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  222.         ( $agentId == '0' || $agentId == '') ? $sql .= '' $param['agentId'] = $agentId;
  223.         $param['etatProd'] = 2;
  224.         if($tabVille !=0){    
  225.             // if($prod != 1){
  226.                 foreach($tabVille as $uneVille){
  227.                     $param["ville".$uneVille->getVille()->getId().""] = $uneVille->getVille()->getId();            
  228.                  }
  229.              /*}else{
  230.                  ( $tabVille == '0' || $tabVille == '') ? $sql .= '' : $param['ville'] = $tabVille;
  231.              }*/
  232.          }
  233.          //var_dump($sql);exit;
  234.         
  235.          /*$query = $this->_em->createQuery(
  236.                        'SELECT DISTINCT SUM(sa.superficie) as valSurface
  237.                         FROM App\Entity\prod\SurfaceAnnee sa 
  238.                             
  239.                             INNER JOIN sa.producteur p 
  240.                             INNER JOIN sa.produit pr
  241.                             INNER JOIN p.abonne a                           
  242.                             WHERE a.id =:abonneId  and p.etatProd !=:etatProd ' ) // INNER JOIN sa.anneecampagne a
  243.                             
  244.                  ->setParameters(array('abonneId'=>$abonneId,'etatProd'=>3 ));*/
  245.                 
  246.                          //( $ville == '0' || $ville == '') ? $sql .= '' : $sql .= ' AND v3.id = :ville';
  247.                     /* }else{
  248.                          ( $tabVille == '0' || $tabVille == '') ? $sql .= '' : $sql .= ' AND v.id = :ville';
  249.                      }*/    
  250.         $query $this->_em->createQuery($sql);
  251.         $query->setParameters($param);       
  252.           return  $query->getResult();
  253.     }
  254.         /**
  255.      * Retourne un fournisseur.
  256.      *
  257.      * @return type
  258.      */
  259.     public function getIntentionProduit($produitId)
  260.     {
  261.          $query $this->_em->createQuery(
  262.                        'SELECT sa
  263.                         FROM App\Entity\prod\SurfaceAnnee sa 
  264.                             INNER JOIN sa.produit pr
  265.                             WHERE pr.id =:produitId AND sa.typeParcelle = 0 ' )  //INNER JOIN sa.anneecampagne a // INNER JOIN sa.producteur p 
  266.                             
  267.                  ->setParameters(array('produitId'=>$produitId));
  268.           return  $query->getResult();
  269.     }
  270.     
  271.         /**
  272.      * Retourne un fournisseur.
  273.      *
  274.      * @return type
  275.      */
  276.     public function getIntentionProducteurAnneeCompage($idProd,$anneeCampagne=0)
  277.     {
  278.          $query $this->_em->createQuery(
  279.                       'SELECT DISTINCT sa.id, sa.superficie as valSurface, sa.datePublication as dateSaisie, 0 as anneeCampagne, sa.etatSurfaceAnnee,sa.codeGenere,0 as idAnnee
  280.                         FROM App\Entity\prod\SurfaceAnnee sa 
  281.                             
  282.                             INNER JOIN sa.producteur p 
  283.                             WHERE p.id =:idProd ' )                
  284.                  ->setParameters(array('idProd'=>$idProd));
  285.           return  $query->getResult();
  286.     }
  287.     
  288.         /**
  289.      * Retourne un fournisseur.
  290.      *
  291.      * @return type
  292.      */
  293.     public function getIntentionProducteurFournisseur($idFour)
  294.     {
  295.          $query $this->_em->createQuery(
  296.                        '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
  297.                         FROM App\Entity\prod\SurfaceAnnee sa 
  298.                             
  299.                             INNER JOIN sa.producteur p 
  300.                             INNER JOIN p.fournisseurproducteurs fp
  301.                             INNER JOIN fp.fournisseur f
  302.                             INNER JOIN sa.produit pr
  303.                             INNER JOIN sa.anneecampagne a
  304.                             WHERE f.id =:idFour  ' 
  305.                             
  306.                  ->setParameters(array('idFour'=>$idFour));
  307.           return  $query->getResult();
  308.     }
  309.     
  310.      public function getApiNewIntentionProducteurFournisseur($idFour$tabVille,$prod 2$niveau =4$abonneId$groupement=0,
  311.                                                              $partenaireId=0$typeAction=$siExploitation=0$siSeulParcelle=0)
  312.     {
  313.         $param =array();
  314.         $champSiExploitation =" , 0 as explCodeGenere   ";
  315.         
  316.         if($siExploitation == && $siSeulParcelle == 0)
  317.             $champSiExploitation " , saa.codeGenere as explCodeGenere ";
  318.             $infoVille $this->getStringSqlVille($niveau);
  319.             $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
  320.                         FROM App\Entity\prod\SurfaceAnnee sa ';  
  321.                          $sql .='    INNER JOIN sa.produit pr
  322.                          ';                           
  323.             $sql .='    INNER JOIN sa.producteur p 
  324.                         INNER JOIN p.producteurgroupements pg
  325.                         INNER JOIN pg.groupement g ';
  326.             $sql .='    INNER JOIN p.utilisateur u  ';
  327.             
  328.             if($siExploitation == && $siSeulParcelle == 0)
  329.                 $sql .='    INNER JOIN sa.surfaceannee saa ';
  330.             
  331.             //if($idFour != 0 ){
  332.                     /*$sql ='    INNER JOIN p.fournisseurproducteurs fp
  333.                                INNER JOIN fp.fournisseur f';*/
  334.                    /* $sql .= " INNER JOIN p.zoneproducteurs zp 
  335.                                INNER JOIN zp.ville v
  336.                                INNER JOIN v.setrouvers st ";*/
  337.                                $sql .= " INNER JOIN p.zoneproducteurs zp 
  338.                                          INNER JOIN zp.ville v
  339.                                ";
  340.             //}
  341.             if($typeAction != 0){
  342.                 $sql .= " INNER JOIN sa.surfaceabonnes pas ";
  343.                 $sql .= " INNER JOIN pas.abonne a ";
  344.                 if($typeAction == &&  $partenaireId != 0)
  345.                     $sql .= " INNER JOIN pas.partenaire pt ";
  346.             }else{
  347.                // $sql .= " INNER JOIN p.abonne a";
  348.                 $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= ' INNER JOIN sa.abonne a ';
  349.                 
  350.             }
  351.             $sql .= $infoVille[0];
  352.                             ; 
  353.             
  354.             //( $abonneId == '0' || $abonneId == '') ? $sql .= '' : $sql .= ' INNER JOIN p.abonne a ';
  355.             $sql .= '   WHERE 1=1 AND  p.etatProd !=2 AND sa.etatSurfaceAnnee != 2 ';
  356.             if($siExploitation == 1)
  357.                 $sql .= '   AND sa.typeParcelle = 1 ';
  358.             else
  359.                 $sql .= '   AND sa.typeParcelle = 0 ';
  360.             if($groupement==0){
  361.                 if(count($tabVille) !=0){    
  362.                                 
  363.                     if($prod != 1){
  364.                         $i=0;
  365.                         foreach($tabVille as $uneVille){
  366.                             if($i == 0){
  367.                                 $sql .= " AND ( v.id = :ville".$uneVille->getVille()->getId()."";
  368.                                 //var_dump($uneVille->getId());
  369.                             }else{
  370.                                 $sql .= " OR v.id = :ville".$uneVille->getVille()->getId()."";
  371.                             }
  372.                             $i++;
  373.                             //$tabProduitUser[] = $unInfoProduit->getId();            
  374.                     }    
  375.                     $sql .= " ) ";
  376.                         //( $ville == '0' || $ville == '') ? $sql .= '' : $sql .= ' AND v3.id = :ville';
  377.                     }else{
  378.                         ( $tabVille == '0' || $tabVille == '') ? $sql .= '' $sql .= ' AND v.id = :ville';
  379.                     }    
  380.                 }
  381.                 // ( $idFour == '0' || $idFour == '') ? $sql .= '' : $sql .= ' AND f.id = :idFour';
  382.             }
  383.         
  384.             if($typeAction == || $typeAction == 1)
  385.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  386.             else
  387.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId ';
  388.             ( $groupement == '0' || $groupement == '') ? $sql .= '' $sql .= ' AND g.id = :groupement';
  389.            
  390.             
  391.             ( $groupement == '0' || $groupement == '') ? $sql .= '' $param['groupement'] = $groupement;
  392.             if($typeAction == || $typeAction == 1)
  393.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  394.             else
  395.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  396.                 
  397.             //( $ville == '0' || $ville == '') ? $sql .= '' : $param['ville'] = $ville;    
  398.             if($groupement==0){
  399.                 if($tabVille !=0){    
  400.                      if($prod != 1){
  401.                         foreach($tabVille as $uneVille){
  402.                             $param["ville".$uneVille->getVille()->getId().""] = $uneVille->getVille()->getId();            
  403.                          }
  404.                      }else{
  405.                          ( $tabVille == '0' || $tabVille == '') ? $sql .= '' $param['ville'] = $tabVille;
  406.                      }
  407.                  }
  408.                 // ( $idFour == '0' || $idFour == '') ? $sql .= '' : $param['idFour'] = $idFour;
  409.             }
  410.          
  411.         // var_dump($sql);exit;
  412.         
  413.             $query $this->_em->createQuery($sql); 
  414.                             
  415.             $query->setParameters($param);  
  416.             //var_dump($query->getSql());exit;
  417.             return  $query->getResult();
  418.     }
  419.     
  420.     /**
  421.      * Retourne un fournisseur.
  422.      *
  423.      * @return type
  424.      */
  425.     public function getIntentionProducteurMap($typeLocalisation,$abonneId,$partenaireId=0$typeAction=0)
  426.     {
  427.         $param=array();
  428.         $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           
  429.                     "
  430.         $sql .= " FROM App\Entity\prod\SurfaceAnnee sa 
  431.                     INNER JOIN sa.producteur p 
  432.                     INNER JOIN sa.produit pr 
  433.                     INNER JOIN p.utilisateur u
  434.                     INNER JOIN sa.localisations l
  435.                     "
  436.             if($typeAction != 0){
  437.                 $sql .= " INNER JOIN sa.surfaceabonnes sas ";
  438.                 $sql .= " INNER JOIN sas.abonne a ";
  439.                 if($typeAction == &&  $partenaireId != 0)
  440.                     $sql .= " INNER JOIN sas.partenaire pt ";
  441.             }else{
  442.                 $sql .= " INNER JOIN p.abonne a";
  443.                 
  444.             }
  445.             $sql .= " WHERE  p.etatProd !=:etatProd  AND l.etatLocalisation = 1 ";
  446.             ($typeLocalisation == '0' || $typeLocalisation == '') ? $sql .= '' $sql .= '  AND l.typeLocalisation  = :typeLocalisation ';
  447.             if($typeAction == || $typeAction == 1)
  448.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  449.             else
  450.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId ';
  451.             
  452.         
  453.             $param['etatProd'] = 2;
  454.             ( $typeLocalisation == '0' || $typeLocalisation == '') ? $sql .= '' $param['typeLocalisation'] = $typeLocalisation;
  455.             if($typeAction == || $typeAction == 1)
  456.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  457.             else
  458.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  459.             
  460.             $query $this->_em->createQuery($sql);
  461.             $query->setParameters($param); 
  462.                 
  463.             return  $query->getResult();
  464.             
  465.             
  466.     }
  467.     /**
  468.      * Retourne un fournisseur.
  469.      *
  470.      * @return type
  471.      */
  472.      public function getLocalisationFournisseurMap($typeLocalisation,$abonneId,$partenaireId=0$typeAction=0)
  473.      {
  474.             $param=array();
  475.             $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
  476.             "
  477.             $sql .= " FROM App\Entity\stock\Fournisseur f
  478.                         INNER JOIN f.localisations l
  479.                         "
  480.                 if($typeAction != 0){
  481.                     $sql .= " INNER JOIN f.fournisseurabonnes fas ";
  482.                     $sql .= " INNER JOIN fas.abonne a ";
  483.                     if($typeAction == &&  $partenaireId != 0)
  484.                         $sql .= " INNER JOIN fas.partenaire pt ";
  485.                 }else{
  486.                     $sql .= " INNER JOIN f.abonne a";
  487.                     
  488.                 }
  489.             $sql .= " WHERE  f.etatFournisseur !=:etatFournisseur ";
  490.                 ($typeLocalisation == '0' || $typeLocalisation == '') ? $sql .= '' $sql .= '  AND l.typeLocalisation  = :typeLocalisation ';
  491.                 if($typeAction == || $typeAction == 1)
  492.                     ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $sql .= '  AND a.id = :abonneId ';
  493.                 else
  494.                     ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $sql .= '  AND pt.id = :partenaireId ';
  495.                 
  496.             $param['etatFournisseur'] = 1;
  497.             ( $typeLocalisation == '0' || $typeLocalisation == '') ? $sql .= '' $param['typeLocalisation'] = $typeLocalisation;
  498.             if($typeAction == || $typeAction == 1)
  499.                 ( $abonneId == '0' || $abonneId == '') ? $sql .= '' $param['abonneId'] = $abonneId;
  500.             else
  501.                 ( $partenaireId == '0' || $partenaireId == '') ? $sql .= '' $param['partenaireId'] = $partenaireId;
  502.             
  503.             $query $this->_em->createQuery($sql);
  504.             $query->setParameters($param);       
  505.             return  $query->getResult();
  506.                              
  507.              
  508.      }
  509.      /**
  510.      * Retourne un fournisseur.
  511.      *
  512.      * @return type
  513.      */
  514.     public function getParcelleProche_1($pointLocalisation$abonneId)
  515.     {
  516.          $query $this->_em->createQuery(
  517.                     'SELECT DISTINCT sa.id, sa.superficie as valSurface,  p.id as idProd,  pr.nomProduit, sa.codeGenere,  u.nom, u.prenoms, stdistancesphere(sa.localisation, :pointLocalisation)
  518.                         FROM App\Entity\prod\SurfaceAnnee sa 
  519.                         INNER JOIN sa.producteur p 
  520.                         INNER JOIN sa.abonne a
  521.                         INNER JOIN p.utilisateur u
  522.                         INNER JOIN sa.produit pr
  523.                         WHERE a.id =:abonneId AND  sa.localisation =:pointLocalisation  AND sa.typeParcelle = 0 
  524.                         AND stdistancesphere(sa.localisation, :pointLocalisation) is not NULL
  525.                         ORDER BY  stdistancesphere(sa.localisation, :pointLocalisation) ASC
  526.                       
  527.                         ' 
  528.                     )     
  529.                     ->setParameters(array('abonneId'=>$abonneId,'pointLocalisation'=>$pointLocalisation));
  530.                
  531.           return  $query->getResult();
  532.     }
  533.     public function getParcelleProche($pointLocalisation$abonneId,  $surfaceId=0$limit=) {
  534.             
  535.         if($pointLocalisation != null ){
  536.                 $sqlrech " SELECT  DISTINCT sa.id, sa.superficie as valSurface,  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
  537.                                     FROM surface_annee sa  ";
  538.                 $sqlrech .= "       INNER JOIN  producteur p on p.id  = sa.producteur_id
  539.                                     INNER JOIN  abonne a on a.id  = sa.abonne_id  
  540.                                     INNER JOIN  utilisateur u on u.id  = p.utilisateur_id  
  541.                                     INNER JOIN  produit pr  on pr.id= sa.produit_id
  542.                         ";
  543.                         $sqlrech .= "
  544.                                     WHERE  1=1  AND   sa.type_parcelle = 0 AND st_distance_sphere(sa.localisation, POINT(:longitude, :latidute)) is not NULL  ";
  545.                 ($surfaceId == '0' || $surfaceId == '') ? $sqlrech .= '' $sqlrech .= ' AND sa.id !=:surfaceId ';
  546.                 if($abonneId !=0){
  547.                     $sqlrech .= " and a.id =:abonneId  ";
  548.                 }
  549.                 $stmt $this->_em->getConnection()->prepare($sqlrech);
  550.             //var_dump($sqlrech );exit;
  551.             $surfaceId == '0' || $surfaceId == '') ? $sqlrech .= '' $stmt->bindValue(':surfaceId'$surfaceIdPDO::PARAM_INT);
  552.             $sqlrech .= " ORDER BY distance ASC Limit :limit";
  553.             
  554.                 if($abonneId !=0){
  555.                     $stmt->bindValue(':abonneId'$abonneIdPDO::PARAM_INT);
  556.                 }
  557.                 
  558.                 $stmt->bindValue(':longitude'$pointLocalisation->getX(), PDO::PARAM_STR);
  559.                 $stmt->bindValue(':latidute'$pointLocalisation->getY(), PDO::PARAM_STR);
  560.                  $stmt->bindValue(':limit'$limitPDO::PARAM_INT);
  561.             
  562.                 //$stmt->execute();
  563.                 $res $stmt->executeQuery()->fetchAllAssociative();
  564.                 
  565.          //var_dump($sqlrech,$pointLocalisation->getX(),  $pointLocalisation->getY(), $abonneId );exit;
  566.             return $res;
  567.         }else{
  568.             return array();
  569.         }
  570.     }
  571.      /**
  572.      * Retourne un fournisseur.
  573.      *
  574.      * @return type
  575.      */
  576.     public function getCalculDistanceDeuxPont($tabLocalisationA$tabLocalisationB)
  577.     {
  578.          $query $this->_em->createQuery(
  579.                     'SELECT   st_distance_sphere(POINT(:longitudeA, :latiduteA), POINT(:longitudeB, :latiduteB))/1000 as distance
  580.                         FROM App\Entity\stack\Localisation sa 
  581.                         ' 
  582.                     )     
  583.                     ->setParameters(array('longitudeA'=>$tabLocalisationA[1],'latiduteA'=>$tabLocalisationA[0], 'longitudeB'=>$tabLocalisationB[1],'latiduteA'=>$tabLocalisationB[0]));
  584.                
  585.           return  $query->getResult();
  586.     }
  587. }