|
- <?php
-
- namespace Lc\ShopBundle\Repository;
-
- use Lc\ShopBundle\Context\DefaultRepositoryInterface;
- use Lc\ShopBundle\Context\ProductFamilyInterface;
- use Lc\ShopBundle\Context\ReductionCatalogInterface;
-
- /**
- * @method ProductFamilyInterface|null find($id, $lockMode = null, $lockVersion = null)
- * @method ProductFamilyInterface|null findOneBy(array $criteria, array $orderBy = null)
- * @method ProductFamilyInterface[] findAll()
- * @method ProductFamilyInterface[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
- */
- class ProductFamilyRepository extends BaseRepository implements DefaultRepositoryInterface
- {
- public function getInterfaceClass()
- {
- return ProductFamilyInterface::class;
- }
-
-
- public function getProductFamiliesByCategory($category){
- $expr = $this->_em->getExpressionBuilder();
-
- $query = $this->findByMerchantQuery() ;
- /* $query->select(array('e as product', 'reductionCatalog as reduction'));
- $query->from(ReductionCatalogInterface::class, 'reductionCatalog');*/
- $query->andWhere(':category MEMBER OF e.productCategories');
- $query->andWhere('e.status = 1');
- /* /* $query->andWhere($query->expr()->orX(
- $query->expr()->eq('reductionCatalog', 'null'),
- $query->expr()->eq( 'reductionCatalog.status = 1 AND (
- :user MEMBER OF reductionCatalog.users OR reductionCatalog.users is empty ) AND
- (:groupUser MEMBER OF reductionCatalog.groupUsers OR reductionCatalog.groupUsers is empty ) AND
- (e MEMBER OF reductionCatalog.productFamilies OR reductionCatalog.productFamilies is empty')
- ));
-
-
- $query
- ->andWhere('reductionCatalog.status = 1')
- ->andWhere(':user MEMBER OF reductionCatalog.users OR reductionCatalog.users is empty')
- ->andWhere(':groupUser MEMBER OF reductionCatalog.groupUsers OR reductionCatalog.groupUsers is empty')
- ->andWhere('e MEMBER OF reductionCatalog.productFamilies OR reductionCatalog.productFamilies is empty')
- //->andWhere(':category MEMBER OF reductionCatalog.productCategories OR reductionCatalog.productCategories is empty')
- //->andWhere('e.supplier MEMBER OF reductionCatalog.suppliers OR reductionCatalog.suppliers is empty')
- ->setParameter('user', $user)
- ->setParameter('groupUser', $user->getGroupUsers()
- );*/
-
- $query->setParameter('category', $category->getId());
-
- return $query->getQuery()->getResult() ;
-
- }
-
- public function getProductFamiliesByNovelties(){
- $query = $this->findByMerchantQuery() ;
- $query->andWhere('e.status = 1');
- $query->andWhere(':now <= e.propertyNoveltyExpirationDate')
- ->setParameter('now', new \DateTime()) ;
-
- return $query->getQuery()->getResult() ;
- }
-
-
-
-
-
- /**************************** OLD *********************************/
-
- public function findNovelties()
- {
-
- $query = $this->findByMerchantQuery() ;
-
- return $query->getQuery()->getResult() ;
- }
-
- public function findNoveltiesByParentCategories()
- {
- return $this->_productsByParentCategories($this->findNovelties()) ;
- }
-
- public function findOrganics()
- {
- $query = $this->findByMerchantQuery() ;
- $query->andWhere('e.propertyOrganicLabel IS NOT NULL');
- return $query->getQuery()->getResult() ;
- }
-
- public function findOrganicsByParentCategories()
- {
- return $this->_productsByParentCategories($this->findOrganics()) ;
- }
-
- public function _productsByParentCategories($products)
- {
- $categoriesArray = [] ;
- foreach($products as $product) {
- $productCategories = $product->getProductCategories() ;
- $category = $productCategories[0]->getParentCategory() ;
- if(!isset($categoriesArray[$category->getId()])) {
- $categoriesArray[$category->getId()] = [
- 'category' => $category,
- 'products' => []
- ] ;
- }
- $categoriesArray[$category->getId()]['products'][] = $product ;
- }
-
- return $categoriesArray;
- }
- }
|