Added FREE_SHIPPING_FOR_COUNTRIES_LIST and FREE_SHIPPING_FOR_MODULES_LIST

This commit is contained in:
Franck Allimant
2014-05-16 10:07:25 +02:00
parent f2b93334eb
commit ffd842cbf6
2 changed files with 62 additions and 22 deletions

View File

@@ -23,7 +23,9 @@ use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection; use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Coupon\Type\CouponInterface; use Thelia\Coupon\Type\CouponInterface;
use Thelia\Model\Base\CouponModule;
use Thelia\Model\Coupon as MCoupon; use Thelia\Model\Coupon as MCoupon;
use Thelia\Model\CouponCountry;
use Thelia\Model\CouponQuery; use Thelia\Model\CouponQuery;
use Thelia\Model\Map\CouponTableMap; use Thelia\Model\Map\CouponTableMap;
use Thelia\Type\EnumListType; use Thelia\Type\EnumListType;
@@ -193,6 +195,18 @@ class Coupon extends BaseI18nLoop implements PropelSearchLoopInterface
$cleanedConditions[] = $temp; $cleanedConditions[] = $temp;
} }
$freeShippingForCountriesIds = [];
/** @var CouponCountry $couponCountry */
foreach($coupon->getFreeShippingForCountries() as $couponCountry) {
$freeShippingForCountriesIds[] = $couponCountry->getCountryId();
}
$freeShippingForModulesIds = [];
/** @var CouponModule $couponModule */
foreach($coupon->getFreeShippingForModules() as $couponModule) {
$freeShippingForModulesIds[] = $couponModule->getModuleId();
}
$loopResultRow $loopResultRow
->set("ID", $coupon->getId()) ->set("ID", $coupon->getId())
->set("IS_TRANSLATED", $coupon->getVirtualColumn('IS_TRANSLATED')) ->set("IS_TRANSLATED", $coupon->getVirtualColumn('IS_TRANSLATED'))
@@ -211,7 +225,11 @@ class Coupon extends BaseI18nLoop implements PropelSearchLoopInterface
->set("APPLICATION_CONDITIONS", $cleanedConditions) ->set("APPLICATION_CONDITIONS", $cleanedConditions)
->set("TOOLTIP", $couponManager->getToolTip()) ->set("TOOLTIP", $couponManager->getToolTip())
->set("DAY_LEFT_BEFORE_EXPIRATION", max(0, $coupon->getVirtualColumn('days_left'))) ->set("DAY_LEFT_BEFORE_EXPIRATION", max(0, $coupon->getVirtualColumn('days_left')))
->set("SERVICE_ID", $couponManager->getServiceId()); ->set("SERVICE_ID", $couponManager->getServiceId())
->set("FREE_SHIPPING_FOR_COUNTRIES_LIST", implode(',', $freeShippingForCountriesIds))
->set("FREE_SHIPPING_FOR_MODULES_LIST", implode(',', $freeShippingForModulesIds))
;
$loopResult->addRow($loopResultRow); $loopResult->addRow($loopResultRow);
} }

View File

@@ -20,6 +20,8 @@ use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Element\PropelSearchLoopInterface; use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection; use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Model\OrderCouponCountry;
use Thelia\Model\OrderCouponModule;
use Thelia\Model\OrderCouponQuery; use Thelia\Model\OrderCouponQuery;
use Thelia\Model\OrderQuery; use Thelia\Model\OrderQuery;
@@ -52,9 +54,10 @@ class OrderCoupon extends BaseLoop implements PropelSearchLoopInterface
$order = $this->getOrder(); $order = $this->getOrder();
$search->filterByOrderId($order, Criteria::EQUAL); $search
->filterByOrderId($order, Criteria::EQUAL)
$search->orderById(Criteria::ASC); ->orderById(Criteria::ASC)
;
return $search; return $search;
@@ -64,27 +67,46 @@ class OrderCoupon extends BaseLoop implements PropelSearchLoopInterface
{ {
$this->container->get('thelia.condition.factory'); $this->container->get('thelia.condition.factory');
/** @var OrderCoupon $orderCoupon */ if (null !== $order = OrderQuery::create()->findPk($this->getOrder())) {
/** @var \Thelia\Model\OrderCoupon $orderCoupon */
foreach ($loopResult->getResultDataCollection() as $orderCoupon) { foreach ($loopResult->getResultDataCollection() as $orderCoupon) {
$loopResultRow = new LoopResultRow($orderCoupon); $loopResultRow = new LoopResultRow($orderCoupon);
$now = time(); $now = time();
$datediff = $orderCoupon->getExpirationDate()->getTimestamp() - $now; $datediff = $orderCoupon->getExpirationDate()->getTimestamp() - $now;
$daysLeftBeforeExpiration = floor($datediff/(60*60*24)); $daysLeftBeforeExpiration = floor($datediff/(60*60*24));
$freeShippingForCountriesIds = [];
/** @var OrderCouponCountry $couponCountry */
foreach($orderCoupon->getFreeShippingForCountries() as $couponCountry) {
$freeShippingForCountriesIds[] = $couponCountry->getCountryId();
}
$freeShippingForModulesIds = [];
/** @var OrderCouponModule $couponModule */
foreach($orderCoupon->getFreeShippingForModules() as $couponModule) {
$freeShippingForModulesIds[] = $couponModule->getModuleId();
}
$loopResultRow->set("ID", $orderCoupon->getId()) $loopResultRow->set("ID", $orderCoupon->getId())
->set("CODE", $orderCoupon->getCode()) ->set("CODE", $orderCoupon->getCode())
->set("TITLE", $orderCoupon->getTitle()) ->set("TITLE", $orderCoupon->getTitle())
->set("SHORT_DESCRIPTION", $orderCoupon->getShortDescription()) ->set("SHORT_DESCRIPTION", $orderCoupon->getShortDescription())
->set("DESCRIPTION", $orderCoupon->getDescription()) ->set("DESCRIPTION", $orderCoupon->getDescription())
->set("EXPIRATION_DATE", $orderCoupon->getExpirationDate( OrderQuery::create()->findPk($this->getOrder())->getLangId() )) ->set("EXPIRATION_DATE", $orderCoupon->getExpirationDate( $order->getLangId() ))
->set("IS_CUMULATIVE", $orderCoupon->getIsCumulative()) ->set("IS_CUMULATIVE", $orderCoupon->getIsCumulative())
->set("IS_REMOVING_POSTAGE", $orderCoupon->getIsRemovingPostage()) ->set("IS_REMOVING_POSTAGE", $orderCoupon->getIsRemovingPostage())
->set("IS_AVAILABLE_ON_SPECIAL_OFFERS", $orderCoupon->getIsAvailableOnSpecialOffers()) ->set("IS_AVAILABLE_ON_SPECIAL_OFFERS", $orderCoupon->getIsAvailableOnSpecialOffers())
->set("DAY_LEFT_BEFORE_EXPIRATION", $daysLeftBeforeExpiration) ->set("DAY_LEFT_BEFORE_EXPIRATION", $daysLeftBeforeExpiration)
->set("FREE_SHIPPING_FOR_COUNTRIES_LIST", implode(',', $freeShippingForCountriesIds))
->set("FREE_SHIPPING_FOR_MODULES_LIST", implode(',', $freeShippingForModulesIds))
; ;
$loopResult->addRow($loopResultRow); $loopResult->addRow($loopResultRow);
} }
}
return $loopResult; return $loopResult;
} }