|
- <?php
-
- namespace Lc\ShopBundle\Services\Order;
-
- use Lc\ShopBundle\Context\OrderReductionCartInterface;
- use Lc\ShopBundle\Context\OrderReductionCreditInterface;
- use Lc\ShopBundle\Context\OrderShopInterface;
- use Lc\ShopBundle\Context\ReductionCartInterface;
- use Lc\ShopBundle\Context\ReductionCreditInterface;
-
- trait OrderUtilsReductionTrait
- {
- public function compareOrderProductReductionCatalog($orderProductReductionCatalog1, $orderProductReductionCatalog2)
- {
- return (!$orderProductReductionCatalog1 && !$orderProductReductionCatalog2)
- || ($orderProductReductionCatalog1
- && $orderProductReductionCatalog2
- && $orderProductReductionCatalog1->getUnit() == $orderProductReductionCatalog2->getUnit()
- && (string)$orderProductReductionCatalog1->getValue() == (string)$orderProductReductionCatalog2->getValue()
- && $orderProductReductionCatalog1->getBehaviorTaxRate() == $orderProductReductionCatalog2->getBehaviorTaxRate());
- }
-
-
- public function getSummaryOrderProductReductionCatalog($orderProductReductionCatalog)
- {
- $text = '';
-
- if ($orderProductReductionCatalog) {
- if ($orderProductReductionCatalog->getUnit() == 'amount') {
- $text .= '- ' . $orderProductReductionCatalog->getValue() . ' €';
- }
-
- if ($orderProductReductionCatalog->getUnit() == 'percent') {
- $text .= '- ' . $orderProductReductionCatalog->getValue() . ' %';
- }
- }
-
- return $text;
- }
-
-
- public function createOrderReductionCart(OrderShopInterface $orderShop, ReductionCartInterface $reductionCart)
- {
- $orderReductionCartClass = $this->em->getClassMetadata(OrderReductionCartInterface::class);
- $orderReductionCart = new $orderReductionCartClass->name;
-
- $orderReductionCart->setOrderShop($orderShop);
- $orderReductionCart->setReductionCart($reductionCart);
-
- $orderReductionCart->setTitle($reductionCart->getTitle());
- $orderReductionCart->setValue($reductionCart->getValue());
- $orderReductionCart->setUnit($reductionCart->getUnit());
- $orderReductionCart->setBehaviorTaxRate($reductionCart->getBehaviorTaxRate());
- $orderReductionCart->setFreeShipping($reductionCart->getFreeShipping());
- $orderReductionCart->setAppliedTo($reductionCart->getAppliedTo());
- $orderReductionCart->setType($reductionCart->getType());
-
- $orderShop->addOrderReductionCart($orderReductionCart) ;
-
- if($this->isOrderShopPositiveAmount($orderShop)) {
- $this->em->persist($orderReductionCart);
- $this->em->flush();
- return $orderReductionCart ;
- }
-
- return false;
- }
-
- public function isReductionCreditAllowAddToOrder($orderShop, $reductionCredit)
- {
- $user = $orderShop->getUser() ;
-
- // appartient à l'utilisateur
- if(!$reductionCredit->getUsers()->contains($user)) {
- $this->utils->addFlash('error', 'error.reductionCredit.userNotAllow');
- return false ;
- }
-
- // n'a pas été utilisé
- if ($this->orderShopRepo->countValidOrderWithReductionCredit($reductionCredit, $user) > 0) {
- $this->utils->addFlash('error', 'error.reductionCredit.alreadyUse');
- return false;
- }
-
- return true;
- }
-
- public function getReductionCartRemainingQuantity($reductionCart) :float
- {
- return $reductionCart->getAvailableQuantity() - $this->orderShopRepo->countValidOrderWithReductionCart();
- }
-
- public function getReductionCartRemainingQuantityPerUser($reductionCart) :float
- {
- return $reductionCart->getAvailableQuantityPerUser() - $this->orderShopRepo->countValidOrderWithReductionCartPerUser();
- }
-
-
- public function createOrderReductionCredit(OrderShopInterface $orderShop, ReductionCreditInterface $reductionCredit)
- {
- $orderReductionCreditClass = $this->em->getClassMetadata(OrderReductionCreditInterface::class);
- $orderReductionCredit = new $orderReductionCreditClass->name;
-
- $orderReductionCredit->setOrderShop($orderShop);
- $orderReductionCredit->setReductionCredit($reductionCredit);
-
- $orderReductionCredit->setTitle($reductionCredit->getTitle());
- $orderReductionCredit->setValue($reductionCredit->getValue());
- $orderReductionCredit->setUnit($reductionCredit->getUnit());
- $orderReductionCredit->setBehaviorTaxRate($reductionCredit->getBehaviorTaxRate());
-
- $orderShop->addOrderReductionCredit($orderReductionCredit) ;
-
- if($this->isOrderShopPositiveAmount($orderShop)) {
- $this->em->persist($orderReductionCredit);
- $this->em->flush();
- return $orderReductionCredit;
- }
-
- return false ;
- }
-
- /*public function getReductionCreditsAvailable($order)
- {
- $reductionCreditRepo = $this->em->getRepository(ReductionCreditInterface::class);
-
- $reductionCredits = $reductionCreditRepo->getReductionCreditByUser($order->getUser());
- foreach ($reductionCredits as $reductionCredit){
-
- }
- }*/
- public function getReductionCreditsAvailableByUser($user)
- {
- $reductionCredits = $this->reductionCreditRepo->findReductionCreditsByUser($user) ;
-
- $reductionCreditsArray = [] ;
- foreach($reductionCredits as $reductionCredit) {
- if(!$this->orderShopRepo->countValidOrderWithReductionCredit($reductionCredit, $user)) {
- $reductionCreditsArray[] = $reductionCredit ;
- }
- }
-
- return $reductionCreditsArray ;
- }
-
- public function isReductionCreditAddedToOrder($orderShop, $reductionCredit)
- {
- foreach($orderShop->getOrderReductionCredits() as $orderReductionCredit) {
- if($orderReductionCredit->getReductionCredit() == $reductionCredit) {
- return true ;
- }
- }
-
- return false ;
- }
-
- }
|