<?php
namespace App\Repository\Articles;
use App\Entity\Articles\ArticleComposant;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* ArticleComposantRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class ArticleComposantRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, ArticleComposant::class);
}
public function findArticlesComposesDtc($article_id = ''){
//344667
$where = 'acmp.produitInterne = 1 and f.reference = :fournisseur_id';
$parameters = ["fournisseur_id" =>12000];
if($article_id != '') {
$parameters['article_id'] = $article_id;
$where .= 'and acmp.id = :article_id';
}
$query = $this->createQueryBuilder('p')
->select('p')
->leftJoin('p.articleCompose', 'acmp')
->leftJoin('acmp.conditionsAchat', 'condHa')
->leftJoin('condHa.fournisseur', 'f')
->where($where)
->setParameters($parameters)
->groupBy('acmp.id');
return $query;
}
public function findArticlesComposes(){
$query = $this->createQueryBuilder('p')
->select('p')
->leftJoin('p.articleCompose', 'acmp')
->where('acmp.produitInterne = 1')
->groupBy('acmp.id');
return $query;
}
public function getComposantsComposeVirtuel($article){
$query = $this->createQueryBuilder('p')
->select('p')
->leftJoin('p.articleCompose', 'acmp')
->where('acmp.virtuel = 1 AND p.article = :article')
->groupBy('acmp.id')
->setParameters(['article' => $article])
;
return $query;
}
public function findArticlesComposesId(){
$query = $this->createQueryBuilder('p')
->select('acmp.id')
->leftJoin('p.articleCompose', 'acmp')
->where('acmp.produitInterne = 1')
->groupBy('acmp.id');
return $query->getQuery()->getResult();
}
public function findComposantsByParentAndStatus(int $parentId, int $status = 1,$client_id)
{
return $this->createQueryBuilder('a')
->innerJoin('a.articleCompose', 'p')
->innerJoin('a.article', 'e')
->leftJoin('e.marque', 'm')
->leftJoin('App\Entity\Clients\ClientMarque', 'ccm',\Doctrine\ORM\Query\Expr\Join::WITH,'ccm.marque = e.marque AND ccm.client = :clientId')
->where('p.id = :parentId')
->andWhere('ccm.id IS NULL')
->setParameter('parentId', $parentId)
->setParameter('clientId', $client_id)
//->andWhere('e.statut = :status')
//->setParameter('status', $status)
->getQuery()
->getResult();
}
}