src/Repository/Produit/Produit/ProduitRepository.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Repository\Produit\Produit;
  3. use Doctrine\ORM\EntityRepository;
  4. use Doctrine\ORM\Tools\Pagination\Paginator;
  5. use App\Entity\Produit\Produit\Produit;
  6. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. /**
  9.  * ProduitRepository
  10.  *
  11.  * This class was generated by the Doctrine ORM. Add your own custom
  12.  * repository methods below.
  13.  */
  14.  
  15. class ProduitRepository extends ServiceEntityRepository
  16. {
  17.     public function __construct(ManagerRegistry $registry)
  18.     {
  19.         parent::__construct($registryProduit::class);
  20.     }
  21. public function myFindBy($id$page 1,$nombreParPage 1000,$filter=1)
  22. {
  23.     // On déplace la vérification du numéro de page dans cette méthode
  24.     if ($page 1){
  25.     throw new \InvalidArgumentException('Page inexistant');
  26.     }
  27.     // La construction de la requête
  28.     $query $this->createQueryBuilder('p')
  29.                   ->leftJoin('p.souscategorie''s')
  30.                   ->addSelect('s')
  31.                   ->where('s.id = :id')
  32.                   ->setParameter('id',$id);
  33.                   $query $this->whereOrderBy($query,$filter);
  34.                   $query->getQuery();
  35.     // On définit l'établissemnt à partir duquel commencer la liste
  36.     $query->setFirstResult(($page-1) * $nombreParPage)
  37.     // Ainsi que le nombre d'établissement à afficher
  38.           ->setMaxResults($nombreParPage);
  39.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  40. return new Paginator($query);
  41. }
  42. public function myfindProduitVilleTypeMarqueScatPays($idscat$idpays$idmarque$idtype$idville$page 1,$nombreParPage 15,$filter=1)
  43. {
  44.     // On déplace la vérification du numéro de page dans cette méthode
  45.     if ($page 1){
  46.     throw new \InvalidArgumentException('Page inexistant');
  47.     }
  48.     // La construction de la requête
  49.     $query $this->createQueryBuilder('p')
  50.                   ->leftJoin('p.souscategorie''s')
  51.                   ->leftJoin('p.marqueproduit''m')
  52.                   ->leftJoin('p.produitboutiques''pb')
  53.                   ->leftJoin('pb.coutlivraisons''c')
  54.                   ->leftJoin('pb.projet''pj')
  55.                   ->leftJoin('pj.typeprojet''tp')
  56.                   ->leftJoin('c.ville''v')
  57.                   ->leftJoin('v.pays''pa')
  58.                   ->addSelect('s')
  59.                   ->addSelect('pb')
  60.                   ->addSelect('c')
  61.                   ->addSelect('v')
  62.                   ->addSelect('p')
  63.                   ->addSelect('pj')
  64.                   ->addSelect('tp')
  65.                   ->where('s.id = :idscat')
  66.                   ->andWhere('pa.id = :idpays')
  67.                   ->andWhere('tp.id = :idtype')
  68.                   ->andWhere('m.id = :idmarque')
  69.                   ->andWhere('v.id = :idville')
  70.                   ->setParameter('idscat',$idscat)
  71.                   ->setParameter('idpays',$idpays)
  72.                   ->setParameter('idtype',$idtype)
  73.                   ->setParameter('idmarque',$idmarque)
  74.                   ->setParameter('idville',$idville);
  75.                   $query $this->whereOrderBy($query,$filter);
  76.                   $query->getQuery();
  77.     // On définit l'établissemnt à partir duquel commencer la liste
  78.     $query->setFirstResult(($page-1) * $nombreParPage)
  79.     // Ainsi que le nombre d'établissement à afficher
  80.           ->setMaxResults($nombreParPage);
  81.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  82. return new Paginator($query);
  83. }
  84. public function myfindProduitTypeMarqueScatPays($idscat$idpays$idmarque$idtype$page 1,$nombreParPage 15,$filter=1)
  85. {
  86.     // On déplace la vérification du numéro de page dans cette méthode
  87.     if ($page 1){
  88.     throw new \InvalidArgumentException('Page inexistant');
  89.     }
  90.     // La construction de la requête
  91.     $query $this->createQueryBuilder('p')
  92.                   ->leftJoin('p.souscategorie''s')
  93.                   ->leftJoin('p.marqueproduit''m')
  94.                   ->leftJoin('p.produitboutiques''pb')
  95.                   ->leftJoin('pb.coutlivraisons''c')
  96.                   ->leftJoin('pb.projet''pj')
  97.                   ->leftJoin('pj.typeprojet''tp')
  98.                   ->leftJoin('c.ville''v')
  99.                   ->leftJoin('v.pays''pa')
  100.                   ->addSelect('s')
  101.                   ->addSelect('pb')
  102.                   ->addSelect('c')
  103.                   ->addSelect('v')
  104.                   ->addSelect('p')
  105.                   ->addSelect('pj')
  106.                   ->addSelect('tp')
  107.                   ->where('s.id = :idscat')
  108.                   ->andWhere('pa.id = :idpays')
  109.                   ->andWhere('tp.id = :idtype')
  110.                   ->andWhere('m.id = :idmarque')
  111.                   ->setParameter('idscat',$idscat)
  112.                   ->setParameter('idpays',$idpays)
  113.                   ->setParameter('idtype',$idtype)
  114.                   ->setParameter('idmarque',$idmarque);
  115.                   $query $this->whereOrderBy($query,$filter);
  116.                   $query->getQuery();
  117.     // On définit l'établissemnt à partir duquel commencer la liste
  118.     $query->setFirstResult(($page-1) * $nombreParPage)
  119.     // Ainsi que le nombre d'établissement à afficher
  120.           ->setMaxResults($nombreParPage);
  121.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  122. return new Paginator($query);
  123. }
  124. public function myfindProduitVilleMarqueScatPays($idscat$idpays$idmarque$idville$page 1,$nombreParPage 15,$filter=1)
  125. {
  126.     // On déplace la vérification du numéro de page dans cette méthode
  127.     if ($page 1){
  128.     throw new \InvalidArgumentException('Page inexistant');
  129.     }
  130.     // La construction de la requête
  131.     $query $this->createQueryBuilder('p')
  132.                   ->leftJoin('p.souscategorie''s')
  133.                   ->leftJoin('p.marqueproduit''m')
  134.                   ->leftJoin('p.produitboutiques''pb')
  135.                   ->leftJoin('pb.coutlivraisons''c')
  136.                   ->leftJoin('pb.projet''pj')
  137.                   ->leftJoin('pj.typeprojet''tp')
  138.                   ->leftJoin('c.ville''v')
  139.                   ->leftJoin('v.pays''pa')
  140.                   ->addSelect('s')
  141.                   ->addSelect('pb')
  142.                   ->addSelect('c')
  143.                   ->addSelect('v')
  144.                   ->addSelect('p')
  145.                   ->addSelect('pj')
  146.                   ->addSelect('tp')
  147.                   ->where('s.id = :idscat')
  148.                   ->andWhere('pa.id = :idpays')
  149.                   ->andWhere('m.id = :idmarque')
  150.                   ->andWhere('v.id = :idville')
  151.                   ->setParameter('idscat',$idscat)
  152.                   ->setParameter('idpays',$idpays)
  153.                   ->setParameter('idmarque',$idmarque)
  154.                   ->setParameter('idville',$idville);
  155.                   $query $this->whereOrderBy($query,$filter);
  156.                   $query->getQuery();
  157.     // On définit l'établissemnt à partir duquel commencer la liste
  158.     $query->setFirstResult(($page-1) * $nombreParPage)
  159.     // Ainsi que le nombre d'établissement à afficher
  160.           ->setMaxResults($nombreParPage);
  161.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  162. return new Paginator($query);
  163. }
  164. public function myfindProduitMarqueScatPays($idscat$idpays$idmarque$page 1,$nombreParPage 15,$filter=1)
  165. {
  166.     // On déplace la vérification du numéro de page dans cette méthode
  167.     if ($page 1){
  168.     throw new \InvalidArgumentException('Page inexistant');
  169.     }
  170.     // La construction de la requête
  171.     $query $this->createQueryBuilder('p')
  172.                   ->leftJoin('p.souscategorie''s')
  173.                   ->leftJoin('p.marqueproduit''m')
  174.                   ->leftJoin('p.produitboutiques''pb')
  175.                   ->leftJoin('pb.coutlivraisons''c')
  176.                   ->leftJoin('pb.projet''pj')
  177.                   ->leftJoin('pj.typeprojet''tp')
  178.                   ->leftJoin('c.ville''v')
  179.                   ->leftJoin('v.pays''pa')
  180.                   ->addSelect('s')
  181.                   ->addSelect('pb')
  182.                   ->addSelect('c')
  183.                   ->addSelect('v')
  184.                   ->addSelect('p')
  185.                   ->addSelect('pj')
  186.                   ->addSelect('tp')
  187.                   ->where('s.id = :idscat')
  188.                   ->andWhere('pa.id = :idpays')
  189.                   ->andWhere('m.id = :idmarque')
  190.                   ->setParameter('idscat',$idscat)
  191.                   ->setParameter('idpays',$idpays)
  192.                   ->setParameter('idmarque',$idmarque);
  193.                   $query $this->whereOrderBy($query,$filter);
  194.                   $query->getQuery();
  195.     // On définit l'établissemnt à partir duquel commencer la liste
  196.     $query->setFirstResult(($page-1) * $nombreParPage)
  197.     // Ainsi que le nombre d'établissement à afficher
  198.           ->setMaxResults($nombreParPage);
  199.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  200. return new Paginator($query);
  201. }
  202. public function myfindProduitVilleTypeScatPays($idscat$idpays$idtype$idville$page 1,$nombreParPage 15,$filter=1)
  203. {
  204.     // On déplace la vérification du numéro de page dans cette méthode
  205.     if ($page 1){
  206.     throw new \InvalidArgumentException('Page inexistant');
  207.     }
  208.     // La construction de la requête
  209.     $query $this->createQueryBuilder('p')
  210.                   ->leftJoin('p.souscategorie''s')
  211.                   ->leftJoin('p.marqueproduit''m')
  212.                   ->leftJoin('p.produitboutiques''pb')
  213.                   ->leftJoin('pb.coutlivraisons''c')
  214.                   ->leftJoin('pb.projet''pj')
  215.                   ->leftJoin('pj.typeprojet''tp')
  216.                   ->leftJoin('c.ville''v')
  217.                   ->leftJoin('v.pays''pa')
  218.                   ->addSelect('s')
  219.                   ->addSelect('pb')
  220.                   ->addSelect('c')
  221.                   ->addSelect('v')
  222.                   ->addSelect('p')
  223.                   ->addSelect('pj')
  224.                   ->addSelect('tp')
  225.                   ->where('s.id = :idscat')
  226.                   ->andWhere('pa.id = :idpays')
  227.                   ->andWhere('tp.id = :idtype')
  228.                   ->andWhere('v.id = :idville')
  229.                   ->setParameter('idscat',$idscat)
  230.                   ->setParameter('idpays',$idpays)
  231.                   ->setParameter('idtype',$idtype)
  232.                   ->setParameter('idville',$idville);
  233.                   $query $this->whereOrderBy($query,$filter);
  234.                   $query->getQuery();
  235.     // On définit l'établissemnt à partir duquel commencer la liste
  236.     $query->setFirstResult(($page-1) * $nombreParPage)
  237.     // Ainsi que le nombre d'établissement à afficher
  238.           ->setMaxResults($nombreParPage);
  239.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  240. return new Paginator($query);
  241. }
  242. public function myfindProduitTypeScatPays($idscat$idpays$idtype$page 1,$nombreParPage 15,$filter=1)
  243. {
  244.     // On déplace la vérification du numéro de page dans cette méthode
  245.     if ($page 1){
  246.     throw new \InvalidArgumentException('Page inexistant');
  247.     }
  248.     // La construction de la requête
  249.     $query $this->createQueryBuilder('p')
  250.                   ->leftJoin('p.souscategorie''s')
  251.                   ->leftJoin('p.marqueproduit''m')
  252.                   ->leftJoin('p.produitboutiques''pb')
  253.                   ->leftJoin('pb.coutlivraisons''c')
  254.                   ->leftJoin('pb.projet''pj')
  255.                   ->leftJoin('pj.typeprojet''tp')
  256.                   ->leftJoin('c.ville''v')
  257.                   ->leftJoin('v.pays''pa')
  258.                   ->addSelect('s')
  259.                   ->addSelect('pb')
  260.                   ->addSelect('c')
  261.                   ->addSelect('v')
  262.                   ->addSelect('p')
  263.                   ->addSelect('pj')
  264.                   ->addSelect('tp')
  265.                   ->where('s.id = :idscat')
  266.                   ->andWhere('pa.id = :idpays')
  267.                   ->andWhere('tp.id = :idtype')
  268.                   ->setParameter('idscat',$idscat)
  269.                   ->setParameter('idpays',$idpays)
  270.                   ->setParameter('idtype',$idtype);
  271.                   $query $this->whereOrderBy($query,$filter);
  272.                   $query->getQuery();
  273.     // On définit l'établissemnt à partir duquel commencer la liste
  274.     $query->setFirstResult(($page-1) * $nombreParPage)
  275.     // Ainsi que le nombre d'établissement à afficher
  276.           ->setMaxResults($nombreParPage);
  277.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  278. return new Paginator($query);
  279. }
  280. public function myfindProduitVilleScatPays($idscat$idpays$idville$page 1,$nombreParPage 15,$filter=1)
  281. {
  282.     // On déplace la vérification du numéro de page dans cette méthode
  283.     if ($page 1){
  284.     throw new \InvalidArgumentException('Page inexistant');
  285.     }
  286.     // La construction de la requête
  287.     $query $this->createQueryBuilder('p')
  288.                   ->leftJoin('p.souscategorie''s')
  289.                   ->leftJoin('p.marqueproduit''m')
  290.                   ->leftJoin('p.produitboutiques''pb')
  291.                   ->leftJoin('pb.coutlivraisons''c')
  292.                   ->leftJoin('pb.projet''pj')
  293.                   ->leftJoin('pj.typeprojet''tp')
  294.                   ->leftJoin('c.ville''v')
  295.                   ->leftJoin('v.pays''pa')
  296.                   ->addSelect('s')
  297.                   ->addSelect('pb')
  298.                   ->addSelect('c')
  299.                   ->addSelect('v')
  300.                   ->addSelect('p')
  301.                   ->addSelect('pj')
  302.                   ->addSelect('tp')
  303.                   ->where('s.id = :idscat')
  304.                   ->andWhere('pa.id = :idpays')
  305.                   ->andWhere('v.id = :idville')
  306.                   ->setParameter('idscat',$idscat)
  307.                   ->setParameter('idpays',$idpays)
  308.                   ->setParameter('idville',$idville);
  309.                   $query $this->whereOrderBy($query,$filter);
  310.                   $query->getQuery();
  311.     // On définit l'établissemnt à partir duquel commencer la liste
  312.     $query->setFirstResult(($page-1) * $nombreParPage)
  313.     // Ainsi que le nombre d'établissement à afficher
  314.           ->setMaxResults($nombreParPage);
  315.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  316. return new Paginator($query);
  317. }
  318. public function myfindProduitScatPays($idscat$idpays,$page 1,$nombreParPage 15,$filter=1)
  319. {
  320.     // On déplace la vérification du numéro de page dans cette méthode
  321.     if ($page 1){
  322.     throw new \InvalidArgumentException('Page inexistant');
  323.     }
  324.     // La construction de la requête
  325.     $query $this->createQueryBuilder('p')
  326.                   ->leftJoin('p.souscategorie''s')
  327.                   ->leftJoin('p.marqueproduit''m')
  328.                   ->leftJoin('p.produitboutiques''pb')
  329.                   ->leftJoin('pb.coutlivraisons''c')
  330.                   ->leftJoin('pb.projet''pj')
  331.                   ->leftJoin('pj.typeprojet''tp')
  332.                   ->leftJoin('c.ville''v')
  333.                   ->leftJoin('v.pays''pa')
  334.                   ->addSelect('s')
  335.                   ->addSelect('pb')
  336.                   ->addSelect('c')
  337.                   ->addSelect('v')
  338.                   ->addSelect('p')
  339.                   ->addSelect('pj')
  340.                   ->addSelect('tp')
  341.                   ->where('s.id = :idscat')
  342.                   ->andWhere('pa.id = :idpays')
  343.                   ->setParameter('idscat',$idscat)
  344.                   ->setParameter('idpays',$idpays);
  345.                   $query $this->whereOrderBy($query,$filter);
  346.                   $query->getQuery();
  347.     // On définit l'établissemnt à partir duquel commencer la liste
  348.     $query->setFirstResult(($page-1) * $nombreParPage)
  349.     // Ainsi que le nombre d'établissement à afficher
  350.           ->setMaxResults($nombreParPage);
  351.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  352. return new Paginator($query);
  353. }
  354. public function myfindProduitVilleTypeMarquePays($idpays$idmarque$idtype$idville$page 1,$nombreParPage 15,$filter=1)
  355. {
  356.     // On déplace la vérification du numéro de page dans cette méthode
  357.     if ($page 1){
  358.     throw new \InvalidArgumentException('Page inexistant');
  359.     }
  360.     // La construction de la requête
  361.     $query $this->createQueryBuilder('p')
  362.                   ->leftJoin('p.souscategorie''s')
  363.                   ->leftJoin('p.marqueproduit''m')
  364.                   ->leftJoin('p.produitboutiques''pb')
  365.                   ->leftJoin('pb.coutlivraisons''c')
  366.                   ->leftJoin('pb.projet''pj')
  367.                   ->leftJoin('pj.typeprojet''tp')
  368.                   ->leftJoin('c.ville''v')
  369.                   ->leftJoin('v.pays''pa')
  370.                   ->addSelect('s')
  371.                   ->addSelect('pb')
  372.                   ->addSelect('c')
  373.                   ->addSelect('v')
  374.                   ->addSelect('p')
  375.                   ->addSelect('pj')
  376.                   ->addSelect('tp')
  377.                   ->where('pa.id = :idpays')
  378.                   ->andWhere('tp.id = :idtype')
  379.                   ->andWhere('m.id = :idmarque')
  380.                   ->andWhere('v.id = :idville')
  381.                   ->setParameter('idpays',$idpays)
  382.                   ->setParameter('idtype',$idtype)
  383.                   ->setParameter('idmarque',$idmarque)
  384.                   ->setParameter('idville',$idville);
  385.                   $query $this->whereOrderBy($query,$filter);
  386.                   $query->getQuery();
  387.     // On définit l'établissemnt à partir duquel commencer la liste
  388.     $query->setFirstResult(($page-1) * $nombreParPage)
  389.     // Ainsi que le nombre d'établissement à afficher
  390.           ->setMaxResults($nombreParPage);
  391.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  392. return new Paginator($query);
  393. }
  394. public function myfindProduitTypeMarquePays($idpays$idmarque$idtype$page 1,$nombreParPage 15,$filter=1)
  395. {
  396.     // On déplace la vérification du numéro de page dans cette méthode
  397.     if ($page 1){
  398.     throw new \InvalidArgumentException('Page inexistant');
  399.     }
  400.     // La construction de la requête
  401.     $query $this->createQueryBuilder('p')
  402.                   ->leftJoin('p.souscategorie''s')
  403.                   ->leftJoin('p.marqueproduit''m')
  404.                   ->leftJoin('p.produitboutiques''pb')
  405.                   ->leftJoin('pb.coutlivraisons''c')
  406.                   ->leftJoin('pb.projet''pj')
  407.                   ->leftJoin('pj.typeprojet''tp')
  408.                   ->leftJoin('c.ville''v')
  409.                   ->leftJoin('v.pays''pa')
  410.                   ->addSelect('s')
  411.                   ->addSelect('pb')
  412.                   ->addSelect('c')
  413.                   ->addSelect('v')
  414.                   ->addSelect('p')
  415.                   ->addSelect('pj')
  416.                   ->addSelect('tp')
  417.                   ->where('pa.id = :idpays')
  418.                   ->andWhere('tp.id = :idtype')
  419.                   ->andWhere('m.id = :idmarque')
  420.                   ->setParameter('idpays',$idpays)
  421.                   ->setParameter('idtype',$idtype)
  422.                   ->setParameter('idmarque',$idmarque);
  423.                   $query $this->whereOrderBy($query,$filter);
  424.                   $query->getQuery();
  425.     // On définit l'établissemnt à partir duquel commencer la liste
  426.     $query->setFirstResult(($page-1) * $nombreParPage)
  427.     // Ainsi que le nombre d'établissement à afficher
  428.           ->setMaxResults($nombreParPage);
  429.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  430. return new Paginator($query);
  431. }
  432. public function myfindProduitVilleMarquePays($idpays$idmarque$idville$page 1,$nombreParPage 15,$filter=1)
  433. {
  434.     // On déplace la vérification du numéro de page dans cette méthode
  435.     if ($page 1){
  436.     throw new \InvalidArgumentException('Page inexistant');
  437.     }
  438.     // La construction de la requête
  439.     $query $this->createQueryBuilder('p')
  440.                   ->leftJoin('p.souscategorie''s')
  441.                   ->leftJoin('p.marqueproduit''m')
  442.                   ->leftJoin('p.produitboutiques''pb')
  443.                   ->leftJoin('pb.coutlivraisons''c')
  444.                   ->leftJoin('pb.projet''pj')
  445.                   ->leftJoin('pj.typeprojet''tp')
  446.                   ->leftJoin('c.ville''v')
  447.                   ->leftJoin('v.pays''pa')
  448.                   ->addSelect('s')
  449.                   ->addSelect('pb')
  450.                   ->addSelect('c')
  451.                   ->addSelect('v')
  452.                   ->addSelect('p')
  453.                   ->addSelect('pj')
  454.                   ->addSelect('tp')
  455.                   ->where('pa.id = :idpays')
  456.                   ->andWhere('m.id = :idmarque')
  457.                   ->andWhere('v.id = :idville')
  458.                   ->setParameter('idpays',$idpays)
  459.                   ->setParameter('idmarque',$idmarque)
  460.                   ->setParameter('idville',$idville);
  461.                   $query $this->whereOrderBy($query,$filter);
  462.                   $query->getQuery();
  463.     // On définit l'établissemnt à partir duquel commencer la liste
  464.     $query->setFirstResult(($page-1) * $nombreParPage)
  465.     // Ainsi que le nombre d'établissement à afficher
  466.           ->setMaxResults($nombreParPage);
  467.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  468. return new Paginator($query);
  469. }
  470. public function myfindProduitMarquePays($idpays$idmarque$page 1,$nombreParPage 15,$filter=1)
  471. {
  472.     // On déplace la vérification du numéro de page dans cette méthode
  473.     if ($page 1){
  474.     throw new \InvalidArgumentException('Page inexistant');
  475.     }
  476.     // La construction de la requête
  477.     $query $this->createQueryBuilder('p')
  478.                   ->leftJoin('p.souscategorie''s')
  479.                   ->leftJoin('p.marqueproduit''m')
  480.                   ->leftJoin('p.produitboutiques''pb')
  481.                   ->leftJoin('pb.coutlivraisons''c')
  482.                   ->leftJoin('pb.projet''pj')
  483.                   ->leftJoin('pj.typeprojet''tp')
  484.                   ->leftJoin('c.ville''v')
  485.                   ->leftJoin('v.pays''pa')
  486.                   ->addSelect('s')
  487.                   ->addSelect('pb')
  488.                   ->addSelect('c')
  489.                   ->addSelect('v')
  490.                   ->addSelect('p')
  491.                   ->addSelect('pj')
  492.                   ->addSelect('tp')
  493.                   ->where('pa.id = :idpays')
  494.                   ->andWhere('m.id = :idmarque')
  495.                   ->setParameter('idpays',$idpays)
  496.                   ->setParameter('idmarque',$idmarque);
  497.                   $query $this->whereOrderBy($query,$filter);
  498.                   $query->getQuery();
  499.     // On définit l'établissemnt à partir duquel commencer la liste
  500.     $query->setFirstResult(($page-1) * $nombreParPage)
  501.     // Ainsi que le nombre d'établissement à afficher
  502.           ->setMaxResults($nombreParPage);
  503.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  504. return new Paginator($query);
  505. }
  506. public function myfindProduitVilleTypePays($idpays$idtype$idville$page 1,$nombreParPage 15,$filter=1)
  507. {
  508.     // On déplace la vérification du numéro de page dans cette méthode
  509.     if ($page 1){
  510.     throw new \InvalidArgumentException('Page inexistant');
  511.     }
  512.     // La construction de la requête
  513.     $query $this->createQueryBuilder('p')
  514.                   ->leftJoin('p.souscategorie''s')
  515.                   ->leftJoin('p.marqueproduit''m')
  516.                   ->leftJoin('p.produitboutiques''pb')
  517.                   ->leftJoin('pb.coutlivraisons''c')
  518.                   ->leftJoin('pb.projet''pj')
  519.                   ->leftJoin('pj.typeprojet''tp')
  520.                   ->leftJoin('c.ville''v')
  521.                   ->leftJoin('v.pays''pa')
  522.                   ->addSelect('s')
  523.                   ->addSelect('pb')
  524.                   ->addSelect('c')
  525.                   ->addSelect('v')
  526.                   ->addSelect('p')
  527.                   ->addSelect('pj')
  528.                   ->addSelect('tp')
  529.                   ->where('pa.id = :idpays')
  530.                   ->andWhere('tp.id = :idtype')
  531.                   ->andWhere('v.id = :idville')
  532.                   ->setParameter('idpays',$idpays)
  533.                   ->setParameter('idtype',$idtype)
  534.                   ->setParameter('idville',$idville);
  535.                   $query $this->whereOrderBy($query,$filter);
  536.                   $query->getQuery();
  537.     // On définit l'établissemnt à partir duquel commencer la liste
  538.     $query->setFirstResult(($page-1) * $nombreParPage)
  539.     // Ainsi que le nombre d'établissement à afficher
  540.           ->setMaxResults($nombreParPage);
  541.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  542. return new Paginator($query);
  543. }
  544. public function myfindProduitTypePays($idpays$idtype$page 1,$nombreParPage 15,$filter=1)
  545. {
  546.     // On déplace la vérification du numéro de page dans cette méthode
  547.     if ($page 1){
  548.     throw new \InvalidArgumentException('Page inexistant');
  549.     }
  550.     // La construction de la requête
  551.     $query $this->createQueryBuilder('p')
  552.                   ->leftJoin('p.souscategorie''s')
  553.                   ->leftJoin('p.marqueproduit''m')
  554.                   ->leftJoin('p.produitboutiques''pb')
  555.                   ->leftJoin('pb.coutlivraisons''c')
  556.                   ->leftJoin('pb.projet''pj')
  557.                   ->leftJoin('pj.typeprojet''tp')
  558.                   ->leftJoin('c.ville''v')
  559.                   ->leftJoin('v.pays''pa')
  560.                   ->addSelect('s')
  561.                   ->addSelect('pb')
  562.                   ->addSelect('c')
  563.                   ->addSelect('v')
  564.                   ->addSelect('p')
  565.                   ->addSelect('pj')
  566.                   ->addSelect('tp')
  567.                   ->where('pa.id = :idpays')
  568.                   ->andWhere('tp.id = :idtype')
  569.                   ->setParameter('idpays',$idpays)
  570.                   ->setParameter('idtype',$idtype);
  571.                   $query $this->whereOrderBy($query,$filter);
  572.                   $query->getQuery();
  573.     // On définit l'établissemnt à partir duquel commencer la liste
  574.     $query->setFirstResult(($page-1) * $nombreParPage)
  575.     // Ainsi que le nombre d'établissement à afficher
  576.           ->setMaxResults($nombreParPage);
  577.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  578. return new Paginator($query);
  579. }
  580. public function myfindProduitVillePays($idpays$idville$page 1,$nombreParPage 15,$filter=1)
  581. {
  582.     // On déplace la vérification du numéro de page dans cette méthode
  583.     if ($page 1){
  584.     throw new \InvalidArgumentException('Page inexistant');
  585.     }
  586.     // La construction de la requête
  587.     $query $this->createQueryBuilder('p')
  588.                   ->leftJoin('p.souscategorie''s')
  589.                   ->leftJoin('p.marqueproduit''m')
  590.                   ->leftJoin('p.produitboutiques''pb')
  591.                   ->leftJoin('pb.coutlivraisons''c')
  592.                   ->leftJoin('pb.projet''pj')
  593.                   ->leftJoin('pj.typeprojet''tp')
  594.                   ->leftJoin('c.ville''v')
  595.                   ->leftJoin('v.pays''pa')
  596.                   ->addSelect('s')
  597.                   ->addSelect('pb')
  598.                   ->addSelect('c')
  599.                   ->addSelect('v')
  600.                   ->addSelect('p')
  601.                   ->addSelect('pj')
  602.                   ->addSelect('tp')
  603.                   ->where('pa.id = :idpays')
  604.                   ->andWhere('v.id = :idville')
  605.                   ->setParameter('idpays',$idpays)
  606.                   ->setParameter('idville',$idville);
  607.                   $query $this->whereOrderBy($query,$filter);
  608.                   $query->getQuery();
  609.     // On définit l'établissemnt à partir duquel commencer la liste
  610.     $query->setFirstResult(($page-1) * $nombreParPage)
  611.     // Ainsi que le nombre d'établissement à afficher
  612.           ->setMaxResults($nombreParPage);
  613.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  614. return new Paginator($query);
  615. }
  616. public function myfindProduitPays($idpays,$page 1,$nombreParPage 15,$filter=1)
  617. {
  618.     // On déplace la vérification du numéro de page dans cette méthode
  619.     if ($page 1){
  620.     throw new \InvalidArgumentException('Page inexistant');
  621.     }
  622.     // La construction de la requête
  623.     $query $this->createQueryBuilder('p')
  624.                   ->leftJoin('p.souscategorie''s')
  625.                   ->leftJoin('p.marqueproduit''m')
  626.                   ->leftJoin('p.produitboutiques''pb')
  627.                   ->leftJoin('pb.coutlivraisons''c')
  628.                   ->leftJoin('pb.projet''pj')
  629.                   ->leftJoin('pj.typeprojet''tp')
  630.                   ->leftJoin('c.ville''v')
  631.                   ->leftJoin('v.pays''pa')
  632.                   ->addSelect('s')
  633.                   ->addSelect('pb')
  634.                   ->addSelect('c')
  635.                   ->addSelect('v')
  636.                   ->addSelect('p')
  637.                   ->addSelect('pj')
  638.                   ->addSelect('tp')
  639.                   ->where('pa.id = :idpays')
  640.                   ->setParameter('idpays',$idpays);
  641.                   $query $this->whereOrderBy($query,$filter);
  642.                   $query->getQuery();
  643.     // On définit l'établissemnt à partir duquel commencer la liste
  644.     $query->setFirstResult(($page-1) * $nombreParPage)
  645.     // Ainsi que le nombre d'établissement à afficher
  646.           ->setMaxResults($nombreParPage);
  647.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  648. return new Paginator($query);
  649. }
  650. public function whereOrderBy(\Doctrine\ORM\QueryBuilder $qb,$filter)
  651. {
  652.     if($filter == 1)
  653.     {
  654.       $qb->orderBy('p.date','DESC');
  655.       return $qb;
  656.     }else if($filter == -1)
  657.     {
  658.         $qb->orderBy('p.date','ASC');
  659.         return $qb;
  660.     }
  661.     return $qb;
  662. }
  663. public function findBestProduit($nbre)
  664. {
  665.     $query $this->createQueryBuilder('p')
  666.                   ->leftJoin('p.souscategorie','s')
  667.                   ->addSelect('s')
  668.                   //->where('p.recommander = 1')
  669.                   ->orderBy('p.nbpoint','DESC')
  670.                   ->setMaxResults($nbre)
  671.                   ->getQuery();
  672.     return $query->getResult();
  673. }
  674. public function findProduitRecommander($nbre)
  675. {
  676.     $query $this->createQueryBuilder('p')
  677.                   ->leftJoin('p.souscategorie','s')
  678.                   ->addSelect('s')
  679.                   ->where('p.recommander = 1')
  680.                   ->orderBy('p.nbpoint','DESC')
  681.                   ->setMaxResults($nbre)
  682.                   ->getQuery();
  683.     return $query->getResult();
  684. }
  685. public function orderCroissant()
  686. {
  687.         $query $this->createQueryBuilder('p')
  688.                   ->leftJoin('p.souscategorie','s')
  689.                   ->addSelect('s')
  690.                   ->orderBy('p.nblike','ASC')
  691.                   ->getQuery();
  692.     return $query->getResult();
  693. }
  694. public function topProduit($id)
  695. {
  696.     $query $this->createQueryBuilder('p')
  697.                   ->leftJoin('p.souscategorie','s')
  698.                   ->addSelect('s')
  699.                   ->where('p.valide = 1')
  700.                   ->orderBy('p.nbvente','DESC')
  701.                   ->setMaxResults($id)
  702.                   ->getQuery();
  703.     return $query->getResult();
  704. }
  705. public function findNewProduit($nbre)
  706. {
  707.     $query $this->createQueryBuilder('p')
  708.                   ->leftJoin('p.souscategorie','s')
  709.                   ->addSelect('s')
  710.                   ->orderBy('p.date','DESC')
  711.                   ->setMaxResults($nbre)
  712.                   ->getQuery();
  713.     return $query->getResult();
  714. }
  715. public function findProduitExclu($idscat$idp$nbre)
  716. {
  717.     $query $this->createQueryBuilder('p')
  718.                   ->leftJoin('p.souscategorie','s')
  719.                   ->addSelect('s')
  720.                   ->where('p.id != :idp AND s.id = :idscat')
  721.                   ->setParameter('idp',$idp)
  722.                   ->setParameter('idscat',$idscat)
  723.                   ->orderBy('p.nbpoint','DESC')
  724.                   ->setMaxResults($nbre)
  725.                   ->getQuery();
  726.     return $query->getResult();
  727. }
  728. public function topLike($id)
  729. {
  730.     $query $this->createQueryBuilder('p')
  731.                   ->leftJoin('p.souscategorie','s')
  732.                   ->addSelect('s')
  733.                   ->orderBy('p.nblike','DESC')
  734.                   ->setMaxResults($id)
  735.                   ->getQuery();
  736.     return $query->getResult();
  737. }
  738. public function findProduit($donnee$page,$nombreParPage,$filter=1)
  739. {
  740.     $query $this->createQueryBuilder('p')
  741.                   ->leftJoin('p.souscategorie','s')
  742.                   ->addSelect('s')
  743.                   ->where('p.nom LIKE :n')
  744.                   ->orWhere('p.contenu LIKE :n')
  745.                   ->orWhere('p.description LIKE :n')
  746.                   ->orWhere('s.nom LIKE :n')
  747.                   ->orWhere('s.description LIKE :n')
  748.                   ->setParameter('n','%'.$donnee.'%');
  749.                   $query $this->whereOrderBy($query,$filter);
  750.                   $query->getQuery();
  751.     // On définit l'établissemnt à partir duquel commencer la liste
  752.     $query->setFirstResult(($page-1) * $nombreParPage)
  753.     // Ainsi que le nombre d'établissement à afficher
  754.           ->setMaxResults($nombreParPage);
  755.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  756. return new Paginator($query);
  757. }
  758. public function getPublicProductScatBinplace($id,$scat,$page,$nombreParPage,$filter=1)
  759. {
  760.     // On déplace la vérification du numéro de page dans cette méthode
  761.     if ($page 1){
  762.     throw new \InvalidArgumentException('Page inexistant');
  763.     }
  764.     // La construction de la requête
  765.     $query $this->createQueryBuilder('p')
  766.                   ->leftJoin('p.souscategorie''s')
  767.                   ->leftJoin('p.marqueproduit''m')
  768.                   ->leftJoin('p.produitboutiques''pb')
  769.                   ->leftJoin('pb.coutlivraisons''c')
  770.                   ->leftJoin('pb.projet''pj')
  771.                   ->leftJoin('pj.typeprojet''tp')
  772.                   ->leftJoin('c.ville''v')
  773.                   ->leftJoin('v.pays''pa')
  774.                   ->addSelect('s')
  775.                   ->addSelect('pb')
  776.                   ->addSelect('c')
  777.                   ->addSelect('v')
  778.                   ->addSelect('p')
  779.                   ->addSelect('pj')
  780.                   ->addSelect('tp')
  781.                   ->where('pj.id = :id')
  782.                   ->andWhere('s.id = :scat')
  783.                   ->setParameter('id',$id)
  784.                   ->setParameter('scat',$scat);
  785.                   $query $this->whereOrderBy($query,$filter);
  786.                   $query->getQuery();
  787.     // On définit l'établissemnt à partir duquel commencer la liste
  788.     $query->setFirstResult(($page-1) * $nombreParPage)
  789.     // Ainsi que le nombre d'établissement à afficher
  790.           ->setMaxResults($nombreParPage);
  791.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  792. return new Paginator($query);
  793. }
  794. public function getPublicProductBinplace($id,$page,$nombreParPage,$filter=1)
  795. {
  796.     // On déplace la vérification du numéro de page dans cette méthode
  797.     if ($page 1){
  798.     throw new \InvalidArgumentException('Page inexistant');
  799.     }
  800.     // La construction de la requête
  801.     $query $this->createQueryBuilder('p')
  802.                   ->leftJoin('p.souscategorie''s')
  803.                   ->leftJoin('p.marqueproduit''m')
  804.                   ->leftJoin('p.produitboutiques''pb')
  805.                   ->leftJoin('pb.coutlivraisons''c')
  806.                   ->leftJoin('pb.projet''pj')
  807.                   ->leftJoin('pj.typeprojet''tp')
  808.                   ->leftJoin('c.ville''v')
  809.                   ->leftJoin('v.pays''pa')
  810.                   ->addSelect('s')
  811.                   ->addSelect('pb')
  812.                   ->addSelect('c')
  813.                   ->addSelect('v')
  814.                   ->addSelect('p')
  815.                   ->addSelect('pj')
  816.                   ->addSelect('tp')
  817.                   ->where('pj.id = :id')
  818.                   ->setParameter('id',$id);
  819.                   $query $this->whereOrderBy($query,$filter);
  820.                   $query->getQuery();
  821.     // On définit l'établissemnt à partir duquel commencer la liste
  822.     $query->setFirstResult(($page-1) * $nombreParPage)
  823.     // Ainsi que le nombre d'établissement à afficher
  824.           ->setMaxResults($nombreParPage);
  825.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  826. return new Paginator($query);
  827. }
  828. public function findLastProduit($donnee,$produittaille)
  829. {
  830.     $query $this->createQueryBuilder('p')
  831.                   ->leftJoin('p.souscategorie''s')
  832.                   ->addSelect('s')
  833.                   ->where('p.nom LIKE :n')
  834.                   ->orWhere('p.description LIKE :n')
  835.                   ->orWhere('p.contenu LIKE :n')
  836.                   ->orWhere('s.nom LIKE :n')
  837.                   ->orWhere('s.description LIKE :n')
  838.                   ->setParameter('n','%'.$donnee.'%')
  839.                   ->orderBy('p.nom''ASC')
  840.                   ->setMaxResults($produittaille)
  841.                   ->getQuery();
  842. return $query->getResult();
  843. }
  844. public function searchingproduitpage($donnee,$page,$nombreParPage)
  845. {
  846.     // On déplace la vérification du numéro de page dans cette méthode
  847.     if ($page 1){
  848.     throw new \InvalidArgumentException('Page inexistant');
  849.     }
  850.     $query $this->createQueryBuilder('p')
  851.                   ->where('CONCAT(CONCAT(p.nom, \' \'),p.description) LIKE :n')
  852.                   ->setParameter('n','%'.$donnee.'%')
  853.                   ->orderBy('p.nom''ASC')
  854.                   ->getQuery();
  855.     // On définit l'établissemnt à partir duquel commencer la liste
  856.     $query->setFirstResult(($page-1) * $nombreParPage)
  857.     // Ainsi que le nombre d'établissement à afficher
  858.           ->setMaxResults($nombreParPage);
  859.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  860. return new Paginator($query);
  861. }
  862. public function findProduitUser($id$page 1,$nombreParPage 1000)
  863. {
  864.     // On déplace la vérification du numéro de page dans cette méthode
  865.     if ($page 1){
  866.     throw new \InvalidArgumentException('Page inexistant');
  867.     }
  868.     // La construction de la requête
  869.     $query $this->createQueryBuilder('p')
  870.                   ->leftJoin('p.user''u')
  871.                   ->addSelect('u')
  872.                   ->where('u.id = :id')
  873.                   ->setParameter('id',$id)
  874.                   ->orderBy('p.date''DESC')
  875.                   ->getQuery();
  876.     // On définit l'établissemnt à partir duquel commencer la liste
  877.     $query->setFirstResult(($page-1) * $nombreParPage)
  878.     // Ainsi que le nombre d'établissement à afficher
  879.           ->setMaxResults($nombreParPage);
  880.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  881. return new Paginator($query);
  882. }
  883. public function produitsDisponibles($liste,$detail$page 1,$nombreParPage 1000)
  884. {
  885.     // On déplace la vérification du numéro de page dans cette méthode
  886.     if ($page 1){
  887.     throw new \InvalidArgumentException('Page inexistant');
  888.     }
  889.     // La construction de la requête
  890.     $query $this->createQueryBuilder('p')
  891.                   ->leftJoin('p.user''u')
  892.                   ->leftJoin('p.produitboutiques''pb')
  893.                   ->leftJoin('pb.projet''pj')
  894.                   ->addSelect('u')
  895.                   ->addSelect('pb')
  896.                   ->addSelect('pj')
  897.                   ->where('p.id NOT IN (:liste)')
  898.                   ->andWhere('p.produitdetail = :detail')
  899.                   ->setParameter('liste',$liste)
  900.                   ->setParameter('detail',$detail)
  901.                   ->orderBy('p.date''DESC')
  902.                   ->getQuery();
  903.     // On définit l'établissemnt à partir duquel commencer la liste
  904.     $query->setFirstResult(($page-1) * $nombreParPage)
  905.     // Ainsi que le nombre d'établissement à afficher
  906.           ->setMaxResults($nombreParPage);
  907.     // Enfin, on retourne l'objet Paginator correspondant à la requête construite
  908. return new Paginator($query);
  909. }
  910. public function produitsBoutiques($id)
  911. {
  912.     $query $this->_em->createQuery('SELECT p.id AS id FROM App\Entity\Produit\Produit\Produit p, App\Entity\Produit\Produit\Produitboutique pb, App\Entity\Projet\Projet\Projet pj WHERE pb.produit = p AND pb.projet = pj AND pj.id = :id');
  913.     $query->setParameter('id'$id);
  914.     return array_column($query->getScalarResult(), 'id');
  915. }
  916. public function getNbProduitsCat($id)
  917. {
  918.     $query $this->_em->createQuery('SELECT COUNT(p.id) FROM App\Entity\Produit\Produit\Produit p, App\Entity\Produit\Produit\Souscategorie s, App\Entity\Produit\Produit\Categorie c WHERE p.souscategorie = s AND s.categorie = c AND c.id = :id');
  919.     $query->setParameter('id'$id);
  920.      
  921.     return $query->getSingleScalarResult();
  922. }
  923. public function findProduitProjet($id$tabIdProjet = array())
  924. {
  925.     $query $this->createQueryBuilder('p')
  926.                   ->leftJoin('p.produitboutiques','pb')
  927.                   ->leftJoin('pb.projet','pj')
  928.                   ->addSelect('pb')
  929.                   ->addSelect('pj')
  930.                   ->where('pj.id = :id')
  931.                   ->orWhere('pj.id in (:liste)')
  932.                   ->setParameter('id',$id)
  933.                   ->setParameter('liste',$tabIdProjet)
  934.                   ->orderBy('p.nbpoint','DESC')
  935.                   ->getQuery();
  936.     return $query->getResult();
  937. }
  938. }