|
- <?php
-
- namespace Lc\ShopBundle\Repository;
-
- use Doctrine\ORM\EntityManager;
- use Lc\ShopBundle\Context\DefaultRepositoryInterface;
- use Lc\ShopBundle\Context\MerchantUtilsInterface;
- use Lc\ShopBundle\Context\OrderUtilsInterface;
- use Lc\ShopBundle\Context\ReductionCartInterface;
-
- /**
- * @method ReductionCartInterface|null find($id, $lockMode = null, $lockVersion = null)
- * @method ReductionCartInterface|null findOneBy(array $criteria, array $orderBy = null)
- * @method ReductionCartInterface[] findAll()
- * @method ReductionCartInterface[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
- */
- class ReductionCartRepository extends BaseRepository implements DefaultRepositoryInterface
- {
- protected $orderUtils ;
-
- public function __construct(EntityManager $entityManager, MerchantUtilsInterface $merchantUtils, OrderUtilsInterface $orderUtils)
- {
- parent::__construct($entityManager, $merchantUtils);
- $this->orderUtils = $orderUtils ;
- }
-
- public function getInterfaceClass()
- {
- return ReductionCartInterface::class;
- }
-
- public function findOneByCode($code)
- {
- $query = $this->findByMerchantQuery() ;
- $query->andWhere('e.codes LIKE :code')->setParameter('code', '%'.$code.'%') ;
- return $query->getQuery()->getOneOrNullResult() ;
- }
-
- public function getValuesOfFieldType(){
- $query = $this->findByMerchantQuery() ;
- $query->select('DISTINCT e.type');
- $query->andWhere('e.status = 1');
-
- return $query->getQuery()->getResult() ;
-
- }
-
- public function getValuesOfFieldCode(){
- $query = $this->findByMerchantQuery() ;
- $query->select('DISTINCT e.codes');
- $query->andWhere('e.status = 1');
-
- return $query->getQuery()->getResult() ;
-
- }
-
- public function getEligibleReductionCart($order)
- {
- $query = $this->findByMerchantQuery() ;
- $query->andWhere('e.status = 1');
-
- return $query->getQuery()->getResult();
- }
-
- public function findAllAvailableForUser($user)
- {
- $reductionCarts = $this->findAll() ;
-
- $reductionCartsArray = [] ;
- foreach($reductionCarts as $reductionCart) {
- if($this->orderUtils->isReductionCartMatchWithUser($reductionCart, $user)
- && $this->orderUtils->isReductionCartMatchWithGroupUser($reductionCart, $user)
- && $this->orderUtils->countReductionCartAvailableForUser($reductionCart, $user)) {
-
- $reductionCartsArray[] = $reductionCart ;
- }
- }
-
- return $reductionCartsArray ;
- }
- }
|