|
|
@@ -20,298 +20,319 @@ use Lc\ShopBundle\Model\OrderStatus; |
|
|
|
class OrderShopRepository extends BaseRepository implements DefaultRepositoryInterface |
|
|
|
{ |
|
|
|
|
|
|
|
public function getInterfaceClass() |
|
|
|
{ |
|
|
|
return OrderShopInterface::class; |
|
|
|
public function getInterfaceClass() |
|
|
|
{ |
|
|
|
return OrderShopInterface::class; |
|
|
|
} |
|
|
|
|
|
|
|
public function countValidOrderWithReductionCredit($reductionCredit, $user = null) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->select('count(e.id)'); |
|
|
|
if ($user) { |
|
|
|
$query->andWhere('e.user = :user'); |
|
|
|
$query->setParameter('user', $user); |
|
|
|
} |
|
|
|
$query->innerJoin('e.orderReductionCredits', 'orc'); |
|
|
|
$query->andWhere('orc.reductionCredit = :reductionCredit'); |
|
|
|
$query->setParameter('reductionCredit', $reductionCredit); |
|
|
|
|
|
|
|
public function countValidOrderWithReductionCredit($reductionCredit, $user=null) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->select('count(e.id)'); |
|
|
|
if($user) { |
|
|
|
$query->andWhere('e.user = :user'); |
|
|
|
$query->setParameter('user', $user); |
|
|
|
} |
|
|
|
$query->innerJoin('e.orderReductionCredits', 'orc'); |
|
|
|
$query->andWhere('orc.reductionCredit = :reductionCredit'); |
|
|
|
$query->setParameter('reductionCredit', $reductionCredit); |
|
|
|
return $query->getQuery()->getSingleScalarResult(); |
|
|
|
} |
|
|
|
|
|
|
|
return $query->getQuery()->getSingleScalarResult(); |
|
|
|
|
|
|
|
public function countValidOrderWithReductionCart($reductionCart) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->select('count(e.id)'); |
|
|
|
$query->join('e.orderReductionCarts', 'orc'); |
|
|
|
$query->andWhere('orc.reductionCart = :reductionCart'); |
|
|
|
$query->setParameter('reductionCart', $reductionCart); |
|
|
|
|
|
|
|
return $query->getQuery()->getSingleScalarResult(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function countValidOrderWithReductionCartPerUser($reductionCart, $user) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->select('count(e.id)'); |
|
|
|
$query->andWhere('e.user = :user'); |
|
|
|
$query->join('e.orderReductionCarts', 'orc'); |
|
|
|
$query->andWhere('orc.reductionCart = :reductionCart'); |
|
|
|
$query->setParameter('reductionCart', $reductionCart); |
|
|
|
$query->setParameter('user', $user); |
|
|
|
|
|
|
|
return $query->getQuery()->getSingleScalarResult(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function filterOrderWaitingDelivery($query) |
|
|
|
{ |
|
|
|
return $this->_filterOrderStatus($query, OrderStatus::$statusAliasWaitingDelivery); |
|
|
|
} |
|
|
|
|
|
|
|
public function filterOrderCart($query) |
|
|
|
{ |
|
|
|
return $this->_filterOrderStatus($query, OrderStatus::$statusAliasAsCart); |
|
|
|
} |
|
|
|
|
|
|
|
public function filterOrderValid(?QueryBuilder $query): QueryBuilder |
|
|
|
{ |
|
|
|
return $this->_filterOrderStatus($query, OrderStatus::$statusAliasAsValid); |
|
|
|
} |
|
|
|
|
|
|
|
private function _filterOrderStatus($query, $statusArray) |
|
|
|
{ |
|
|
|
$query->leftJoin('e.orderStatus', 'os'); |
|
|
|
$query->andWhere('os.alias IN (:alias)'); |
|
|
|
$query->setParameter('alias', $statusArray); |
|
|
|
|
|
|
|
return $query; |
|
|
|
} |
|
|
|
|
|
|
|
public function findCartCurrent($params) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
|
|
|
|
|
|
|
|
if (isset($params['user'])) { |
|
|
|
$query->andWhere('e.user = :user')->setParameter('user', $params['user']); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['visitor'])) { |
|
|
|
$query->andWhere('e.visitor = :visitor')->setParameter('visitor', $params['visitor']); |
|
|
|
} |
|
|
|
|
|
|
|
$query = $this->filterOrderCart($query); |
|
|
|
|
|
|
|
$query->leftJoin('e.orderReductionCarts', 'orderReductionCarts') |
|
|
|
->addSelect('orderReductionCarts'); |
|
|
|
|
|
|
|
public function countValidOrderWithReductionCart($reductionCart) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->select('count(e.id)'); |
|
|
|
$query->join('e.orderReductionCarts', 'orc'); |
|
|
|
$query->andWhere('orc.reductionCart = :reductionCart'); |
|
|
|
$query->setParameter('reductionCart', $reductionCart); |
|
|
|
return $query->getQuery()->getSingleScalarResult(); |
|
|
|
$results = $query->getQuery()->getResult(); |
|
|
|
|
|
|
|
if ($results) { |
|
|
|
return $results[0]; |
|
|
|
} |
|
|
|
|
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
public function findAllBy($params = []) |
|
|
|
{ |
|
|
|
if (isset($params['merchant'])) { |
|
|
|
$query = $this->findByMerchantQuery($params['merchant']); |
|
|
|
} else { |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['count']) && $params['count']) { |
|
|
|
$query->select('count(e.id)'); |
|
|
|
} |
|
|
|
|
|
|
|
public function countValidOrderWithReductionCartPerUser($reductionCart, $user) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->select('count(e.id)'); |
|
|
|
$query->andWhere('e.user = :user'); |
|
|
|
$query->join('e.orderReductionCarts', 'orc'); |
|
|
|
$query->andWhere('orc.reductionCart = :reductionCart'); |
|
|
|
$query->setParameter('reductionCart', $reductionCart); |
|
|
|
$query->setParameter('user', $user); |
|
|
|
return $query->getQuery()->getSingleScalarResult(); |
|
|
|
if (isset($params['select'])) { |
|
|
|
$query->select($params['select']); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['section'])) { |
|
|
|
$query = $query->andWhere('e.section = :section')->setParameter('section', $params['section']); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['dateStart']) || isset($params['dateEnd'])) { |
|
|
|
$params['dateField'] = isset($params['dateField']) ? $params['dateField'] : 'validationDate'; |
|
|
|
} |
|
|
|
|
|
|
|
public function filterOrderWaitingDelivery($query) |
|
|
|
{ |
|
|
|
return $this->_filterOrderStatus($query, OrderStatus::$statusAliasWaitingDelivery) ; |
|
|
|
if (isset($params['dateStart'])) { |
|
|
|
$query->andWhere('e.'.$params['dateField'].' >= :dateStart')->setParameter( |
|
|
|
'dateStart', |
|
|
|
$params['dateStart'] |
|
|
|
); |
|
|
|
} |
|
|
|
if (isset($params['dateEnd'])) { |
|
|
|
$query->andWhere('e.'.$params['dateField'].' <= :dateEnd')->setParameter('dateEnd', $params['dateEnd']); |
|
|
|
} |
|
|
|
|
|
|
|
public function filterOrderCart($query) |
|
|
|
{ |
|
|
|
return $this->_filterOrderStatus($query, OrderStatus::$statusAliasAsCart) ; |
|
|
|
if (isset($params['weekNumber'])) { |
|
|
|
$query->andWhere('e.weekNumber = :weekNumber')->setParameter('weekNumber', $params['weekNumber']); |
|
|
|
$currentYear = new \DateTime(); |
|
|
|
$currentYear->setDate($currentYear->format('Y'), 1, 1); |
|
|
|
$query->andWhere('e.validationDate >= :now')->setParameter('now', $currentYear); |
|
|
|
} |
|
|
|
public function filterOrderValid(?QueryBuilder $query): QueryBuilder |
|
|
|
{ |
|
|
|
return $this->_filterOrderStatus($query, OrderStatus::$statusAliasAsValid) ; |
|
|
|
|
|
|
|
if (isset($params['isCart'])) { |
|
|
|
$query = $this->filterOrderCart($query); |
|
|
|
} |
|
|
|
|
|
|
|
private function _filterOrderStatus($query, $statusArray) { |
|
|
|
$query->leftJoin('e.orderStatus', 'os'); |
|
|
|
$query->andWhere('os.alias IN (:alias)'); |
|
|
|
$query->setParameter('alias',$statusArray); |
|
|
|
return $query ; |
|
|
|
if (isset($params['isValid'])) { |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
} |
|
|
|
|
|
|
|
public function findCartCurrent($params) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
if (isset($params['isWaitingDelivery'])) { |
|
|
|
$query = $this->filterOrderWaitingDelivery($query); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['orderStatus'])) { |
|
|
|
$query->leftJoin('e.orderStatus', 'os'); |
|
|
|
$query->andWhere('os.alias LIKE :alias'); |
|
|
|
$query->setParameter('alias', $params['orderStatus']); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['user'])) { |
|
|
|
$query->andWhere('e.user = :user')->setParameter('user', $params['user']); |
|
|
|
} |
|
|
|
if (isset($params['user'])) { |
|
|
|
$query->andWhere('e.user = :user')->setParameter('user', $params['user']); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['visitor'])) { |
|
|
|
$query->andWhere('e.visitor = :visitor')->setParameter('visitor', $params['visitor']); |
|
|
|
} |
|
|
|
if (isset($params['address'])) { |
|
|
|
$query->andWhere('e.deliveryAddress = :address OR e.invoiceAddress = :address')->setParameter( |
|
|
|
'address', |
|
|
|
$params['address'] |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
$query = $this->filterOrderCart($query); |
|
|
|
if (isset($params['weekDeliveryTrucks'])) { |
|
|
|
$query->andWhere('e.weekDeliveryTruck IN (:weekDeliveryTrucks)')->setParameter( |
|
|
|
'weekDeliveryTrucks', |
|
|
|
$params['weekDeliveryTrucks'] |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
$query->leftJoin('e.orderReductionCarts', 'orderReductionCarts') |
|
|
|
->addSelect('orderReductionCarts'); |
|
|
|
if (isset($params['estimatedDeliveryDateTime'])) { |
|
|
|
$query->andWhere('e.estimatedDeliveryDateTime >= :deliveryDateStart'); |
|
|
|
$query->andWhere('e.estimatedDeliveryDateTime < :deliveryDateEnd'); |
|
|
|
$date = clone $params['estimatedDeliveryDateTime']; |
|
|
|
$query->setParameter('deliveryDateStart', $date->format('Y-m-d 00:00:00')); |
|
|
|
$query->setParameter('deliveryDateEnd', $date->modify('+1 day')->format('Y-m-d 00:00:00')); |
|
|
|
} |
|
|
|
|
|
|
|
$results = $query->getQuery()->getResult(); |
|
|
|
if (isset($params['deliveryDate'])) { |
|
|
|
$query->andWhere('e.deliveryDate >= :deliveryDateStart'); |
|
|
|
$query->andWhere('e.deliveryDate < :deliveryDateEnd'); |
|
|
|
$date = clone $params['deliveryDate']; |
|
|
|
$query->setParameter('deliveryDateStart', $date->format('Y-m-d 00:00:00')); |
|
|
|
$query->setParameter('deliveryDateEnd', $date->modify('+1 day')->format('Y-m-d 00:00:00')); |
|
|
|
} |
|
|
|
|
|
|
|
if ($results) { |
|
|
|
return $results[0]; |
|
|
|
} |
|
|
|
if (isset($params['mergeComplementaryOrderShops'])) { |
|
|
|
$query->andWhere('e.mainOrderShop IS NULL'); |
|
|
|
$query->leftJoin('e.complementaryOrderShops', 'complementaryOrderShops'); |
|
|
|
} |
|
|
|
|
|
|
|
return null; |
|
|
|
if (isset($params['excludeComplementaryOrderShops'])) { |
|
|
|
$query->andWhere('e.mainOrderShop IS NULL'); |
|
|
|
} |
|
|
|
|
|
|
|
public function findAllBy($params = []) |
|
|
|
{ |
|
|
|
$setParameterHorsTournee = false; |
|
|
|
$setParameterGiftVoucher = false; |
|
|
|
|
|
|
|
if(isset($params['merchant'])){ |
|
|
|
$query = $this->findByMerchantQuery($params['merchant']); |
|
|
|
}else{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
} |
|
|
|
if (isset($params['isCircuit'])) { |
|
|
|
$query->leftJoin('e.deliveryPointSale', 'pointSale'); |
|
|
|
$query->andWhere( |
|
|
|
'e.deliveryPointSale IS NULL OR (pointSale.isDepository = 0 AND (pointSale.devAlias IS NULL OR (pointSale.devAlias != :devAliasHorsTournee AND pointSale.devAlias != :devAliasGiftVoucher)))' |
|
|
|
); |
|
|
|
$setParameterHorsTournee = true; |
|
|
|
$setParameterGiftVoucher = true; |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['count']) && $params['count']) { |
|
|
|
$query->select('count(e.id)'); |
|
|
|
} |
|
|
|
if (isset($params['isDepository'])) { |
|
|
|
$query->innerJoin('e.deliveryPointSale', 'pointSale'); |
|
|
|
$query->andWhere( |
|
|
|
'pointSale IS NOT NULL AND pointSale.isDepository = 1 AND (pointSale.devAlias IS NULL OR (pointSale.devAlias != :devAliasHorsTournee AND pointSale.devAlias != :devAliasGiftVoucher))' |
|
|
|
); |
|
|
|
$setParameterHorsTournee = true; |
|
|
|
$setParameterGiftVoucher = true; |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['select'])) { |
|
|
|
$query->select( $params['select']); |
|
|
|
} |
|
|
|
if (isset($params['isOffCircuit'])) { |
|
|
|
$query->innerJoin('e.deliveryPointSale', 'pointSale'); |
|
|
|
$query->andWhere('pointSale IS NOT NULL AND pointSale.devAlias = :devAliasHorsTournee'); |
|
|
|
$setParameterHorsTournee = true; |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['section'])) { |
|
|
|
$query = $query->andWhere('e.section = :section')->setParameter('section', $params['section']); |
|
|
|
} |
|
|
|
if (isset($params['isGiftVoucher'])) { |
|
|
|
$query->innerJoin('e.deliveryPointSale', 'pointSale'); |
|
|
|
$query->andWhere('pointSale IS NOT NULL AND pointSale.devAlias = :devAliasGiftVoucher'); |
|
|
|
$setParameterGiftVoucher = true; |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['dateStart']) || isset($params['dateEnd'])) { |
|
|
|
$params['dateField'] = isset($params['dateField']) ? $params['dateField'] : 'validationDate'; |
|
|
|
} |
|
|
|
if ($setParameterHorsTournee) { |
|
|
|
$query->setParameter('devAliasHorsTournee', PointSale::DEV_ALIAS_OFF_CIRCUIT); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['dateStart'])) { |
|
|
|
$query->andWhere('e.' . $params['dateField'] . ' >= :dateStart')->setParameter('dateStart', $params['dateStart']); |
|
|
|
} |
|
|
|
if (isset($params['dateEnd'])) { |
|
|
|
$query->andWhere('e.' . $params['dateField'] . ' <= :dateEnd')->setParameter('dateEnd', $params['dateEnd']); |
|
|
|
} |
|
|
|
if ($setParameterGiftVoucher) { |
|
|
|
$query->setParameter('devAliasGiftVoucher', PointSale::DEV_ALIAS_GIFT_VOUCHER); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['weekNumber'])) { |
|
|
|
$query->andWhere('e.weekNumber = :weekNumber')->setParameter('weekNumber', $params['weekNumber']); |
|
|
|
} |
|
|
|
if (isset($params['deliveryAvailability'])) { |
|
|
|
$deliveryAvailability = $params['deliveryAvailability']; |
|
|
|
|
|
|
|
if (isset($params['isCart'])) { |
|
|
|
$query = $this->filterOrderCart($query); |
|
|
|
} |
|
|
|
$deliveryAvailabilityZone = ($deliveryAvailability instanceof DeliveryAvailabilityZone) ? $deliveryAvailability : false; |
|
|
|
$deliveryAvailabilityPointSale = ($deliveryAvailability instanceof DeliveryAvailabilityPointSale) ? $deliveryAvailability : false; |
|
|
|
|
|
|
|
if (isset($params['isValid'])) { |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
} |
|
|
|
if ($deliveryAvailabilityZone) { |
|
|
|
$query->andWhere('e.deliveryAvailabilityZone = :deliveryAvailabilityZone'); |
|
|
|
$query->setParameter('deliveryAvailabilityZone', $deliveryAvailabilityZone); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['isWaitingDelivery'])) { |
|
|
|
$query = $this->filterOrderWaitingDelivery($query); |
|
|
|
} |
|
|
|
if ($deliveryAvailabilityPointSale) { |
|
|
|
$query->andWhere('e.deliveryAvailabilityPointSale = :deliveryAvailabilityPointSale'); |
|
|
|
$query->setParameter('deliveryAvailabilityPointSale', $deliveryAvailabilityPointSale); |
|
|
|
} |
|
|
|
} else { |
|
|
|
$query->leftJoin('e.deliveryAvailabilityZone', 'deliveryAvailabilityZone'); |
|
|
|
$query->leftJoin('deliveryAvailabilityZone.deliverySlot', 'deliverySlotZone'); |
|
|
|
|
|
|
|
if (isset($params['orderStatus'])) { |
|
|
|
$query->leftJoin('e.orderStatus', 'os'); |
|
|
|
$query->andWhere('os.alias LIKE :alias'); |
|
|
|
$query->setParameter('alias', $params['orderStatus']); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['user'])) { |
|
|
|
$query->andWhere('e.user = :user')->setParameter('user', $params['user']); |
|
|
|
} |
|
|
|
|
|
|
|
if(isset($params['address'])) { |
|
|
|
$query->andWhere('e.deliveryAddress = :address OR e.invoiceAddress = :address')->setParameter('address', $params['address']); |
|
|
|
} |
|
|
|
|
|
|
|
if(isset($params['weekDeliveryTrucks'])) { |
|
|
|
$query->andWhere('e.weekDeliveryTruck IN (:weekDeliveryTrucks)')->setParameter('weekDeliveryTrucks', $params['weekDeliveryTrucks']); |
|
|
|
} |
|
|
|
|
|
|
|
if(isset($params['estimatedDeliveryDateTime'])) { |
|
|
|
$query->andWhere('e.estimatedDeliveryDateTime >= :deliveryDateStart'); |
|
|
|
$query->andWhere('e.estimatedDeliveryDateTime < :deliveryDateEnd'); |
|
|
|
$date = clone $params['estimatedDeliveryDateTime']; |
|
|
|
$query->setParameter('deliveryDateStart', $date->format('Y-m-d 00:00:00')); |
|
|
|
$query->setParameter('deliveryDateEnd', $date->modify('+1 day')->format('Y-m-d 00:00:00')); |
|
|
|
} |
|
|
|
|
|
|
|
if(isset($params['deliveryDate'])) { |
|
|
|
$query->andWhere('e.deliveryDate >= :deliveryDateStart'); |
|
|
|
$query->andWhere('e.deliveryDate < :deliveryDateEnd'); |
|
|
|
$date = clone $params['deliveryDate']; |
|
|
|
$query->setParameter('deliveryDateStart', $date->format('Y-m-d 00:00:00')); |
|
|
|
$query->setParameter('deliveryDateEnd', $date->modify('+1 day')->format('Y-m-d 00:00:00')); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['mergeComplementaryOrderShops'])) { |
|
|
|
$query->andWhere('e.mainOrderShop IS NULL'); |
|
|
|
$query->leftJoin('e.complementaryOrderShops', 'complementaryOrderShops'); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['excludeComplementaryOrderShops'])) { |
|
|
|
$query->andWhere('e.mainOrderShop IS NULL'); |
|
|
|
} |
|
|
|
|
|
|
|
$setParameterHorsTournee = false ; |
|
|
|
$setParameterGiftVoucher = false ; |
|
|
|
|
|
|
|
if(isset($params['isCircuit'])) { |
|
|
|
$query->leftJoin('e.deliveryPointSale', 'pointSale'); |
|
|
|
$query->andWhere('e.deliveryPointSale IS NULL OR (pointSale.isDepository = 0 AND (pointSale.devAlias IS NULL OR (pointSale.devAlias != :devAliasHorsTournee AND pointSale.devAlias != :devAliasGiftVoucher)))'); |
|
|
|
$setParameterHorsTournee = true ; |
|
|
|
$setParameterGiftVoucher = true ; |
|
|
|
} |
|
|
|
|
|
|
|
if(isset($params['isDepository'])) { |
|
|
|
$query->innerJoin('e.deliveryPointSale', 'pointSale'); |
|
|
|
$query->andWhere('pointSale IS NOT NULL AND pointSale.isDepository = 1 AND (pointSale.devAlias IS NULL OR (pointSale.devAlias != :devAliasHorsTournee AND pointSale.devAlias != :devAliasGiftVoucher))'); |
|
|
|
$setParameterHorsTournee = true ; |
|
|
|
$setParameterGiftVoucher = true ; |
|
|
|
} |
|
|
|
|
|
|
|
if(isset($params['isOffCircuit'])) { |
|
|
|
$query->innerJoin('e.deliveryPointSale', 'pointSale'); |
|
|
|
$query->andWhere('pointSale IS NOT NULL AND pointSale.devAlias = :devAliasHorsTournee'); |
|
|
|
$setParameterHorsTournee = true ; |
|
|
|
} |
|
|
|
|
|
|
|
if(isset($params['isGiftVoucher'])) { |
|
|
|
$query->innerJoin('e.deliveryPointSale', 'pointSale'); |
|
|
|
$query->andWhere('pointSale IS NOT NULL AND pointSale.devAlias = :devAliasGiftVoucher'); |
|
|
|
$setParameterGiftVoucher = true ; |
|
|
|
} |
|
|
|
|
|
|
|
if($setParameterHorsTournee) { |
|
|
|
$query->setParameter('devAliasHorsTournee', PointSale::DEV_ALIAS_OFF_CIRCUIT) ; |
|
|
|
} |
|
|
|
|
|
|
|
if($setParameterGiftVoucher) { |
|
|
|
$query->setParameter('devAliasGiftVoucher', PointSale::DEV_ALIAS_GIFT_VOUCHER) ; |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['deliveryAvailability'])) { |
|
|
|
$deliveryAvailability = $params['deliveryAvailability'] ; |
|
|
|
|
|
|
|
$deliveryAvailabilityZone = ($deliveryAvailability instanceof DeliveryAvailabilityZone) ? $deliveryAvailability : false; |
|
|
|
$deliveryAvailabilityPointSale = ($deliveryAvailability instanceof DeliveryAvailabilityPointSale) ? $deliveryAvailability : false; |
|
|
|
|
|
|
|
if($deliveryAvailabilityZone){ |
|
|
|
$query->andWhere('e.deliveryAvailabilityZone = :deliveryAvailabilityZone'); |
|
|
|
$query->setParameter('deliveryAvailabilityZone', $deliveryAvailabilityZone); |
|
|
|
} |
|
|
|
|
|
|
|
if($deliveryAvailabilityPointSale) { |
|
|
|
$query->andWhere('e.deliveryAvailabilityPointSale = :deliveryAvailabilityPointSale'); |
|
|
|
$query->setParameter('deliveryAvailabilityPointSale', $deliveryAvailabilityPointSale); |
|
|
|
} |
|
|
|
} |
|
|
|
else{ |
|
|
|
$query->leftJoin('e.deliveryAvailabilityZone', 'deliveryAvailabilityZone'); |
|
|
|
$query->leftJoin('deliveryAvailabilityZone.deliverySlot', 'deliverySlotZone'); |
|
|
|
|
|
|
|
$query->leftJoin('e.deliveryAvailabilityPointSale', 'deliveryAvailabilityPointSale'); |
|
|
|
$query->leftJoin('deliveryAvailabilityPointSale.deliverySlot', 'deliverySlotPointSale'); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['orderBy'])) { |
|
|
|
$query->orderBy('e.' . $params['orderBy'], isset($params['orderByDirection']) ? $params['orderByDirection'] : 'DESC'); |
|
|
|
} else { |
|
|
|
$query->orderBy('e.id', 'DESC'); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['groupBy'])) { |
|
|
|
$query->groupBy( $params['groupBy']); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['count']) && $params['count']) { |
|
|
|
return $query->getQuery()->getSingleScalarResult(); |
|
|
|
} else { |
|
|
|
return $query->getQuery()->getResult(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public function findLastOrderValidOfWeek($weekNumber) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->andWhere('e.weekNumber = :weekNumber'); |
|
|
|
$query->andWhere('e.mainOrderShop = false OR e.mainOrderShop IS NULL'); |
|
|
|
$query->setParameter('weekNumber', $weekNumber); |
|
|
|
$query->orderBy('e.weekId', 'DESC'); |
|
|
|
$query->setMaxResults(1); |
|
|
|
|
|
|
|
return $query->getQuery()->getOneOrNullResult(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public function findLastOrderValid() |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->andWhere('e.mainOrderShop = false OR e.mainOrderShop IS NULL'); |
|
|
|
$query->orderBy('e.idValidOrder', 'DESC'); |
|
|
|
$query->setMaxResults(1); |
|
|
|
|
|
|
|
return $query->getQuery()->getOneOrNullResult(); |
|
|
|
$query->leftJoin('e.deliveryAvailabilityPointSale', 'deliveryAvailabilityPointSale'); |
|
|
|
$query->leftJoin('deliveryAvailabilityPointSale.deliverySlot', 'deliverySlotPointSale'); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['orderBy'])) { |
|
|
|
$query->orderBy( |
|
|
|
'e.'.$params['orderBy'], |
|
|
|
isset($params['orderByDirection']) ? $params['orderByDirection'] : 'DESC' |
|
|
|
); |
|
|
|
} else { |
|
|
|
$query->orderBy('e.id', 'DESC'); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['groupBy'])) { |
|
|
|
$query->groupBy($params['groupBy']); |
|
|
|
} |
|
|
|
|
|
|
|
if (isset($params['count']) && $params['count']) { |
|
|
|
return $query->getQuery()->getSingleScalarResult(); |
|
|
|
} else { |
|
|
|
return $query->getQuery()->getResult(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public function findLastOrderValidOfWeek($weekNumber) |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->andWhere('e.weekNumber = :weekNumber'); |
|
|
|
$currentYear = new \DateTime(); |
|
|
|
$currentYear->setDate($currentYear->format('Y'), 1, 1); |
|
|
|
$query->andWhere('e.validationDate >= :now')->setParameter('now', $currentYear); |
|
|
|
$query->andWhere('e.mainOrderShop = false OR e.mainOrderShop IS NULL'); |
|
|
|
$query->setParameter('weekNumber', $weekNumber); |
|
|
|
$query->orderBy('e.weekId', 'DESC'); |
|
|
|
$query->setMaxResults(1); |
|
|
|
|
|
|
|
return $query->getQuery()->getOneOrNullResult(); |
|
|
|
} |
|
|
|
|
|
|
|
public function findLastOrderValid() |
|
|
|
{ |
|
|
|
$query = $this->findByMerchantQuery(); |
|
|
|
$query = $this->filterOrderValid($query); |
|
|
|
$query->andWhere('e.mainOrderShop = false OR e.mainOrderShop IS NULL'); |
|
|
|
$query->orderBy('e.idValidOrder', 'DESC'); |
|
|
|
$query->setMaxResults(1); |
|
|
|
|
|
|
|
return $query->getQuery()->getOneOrNullResult(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |