Files
le-matelot/local/modules/SoColissimo/Smarty/Plugins/SocolissimoDeliveryPrice.php
2020-09-09 12:52:39 +02:00

59 lines
1.7 KiB
PHP

<?php
namespace SoColissimo\Smarty\Plugins;
use SoColissimo\SoColissimo;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Thelia\Core\HttpFoundation\Request;
use Thelia\Model\CountryQuery;
use Thelia\Model\Country;
use Thelia\Module\Exception\DeliveryException;
use TheliaSmarty\Template\AbstractSmartyPlugin;
use TheliaSmarty\Template\SmartyPluginDescriptor;
class SocolissimoDeliveryPrice extends AbstractSmartyPlugin
{
protected $request;
protected $dispatcher;
public function __construct(
Request $request,
EventDispatcherInterface $dispatcher = null
) {
$this->request = $request;
$this->dispatcher = $dispatcher;
}
public function getPluginDescriptors()
{
return array(
new SmartyPluginDescriptor("function", "socolissimoDeliveryPrice", $this, "socolissimoDeliveryPrice")
);
}
public function socolissimoDeliveryPrice($params, $smarty)
{
$deliveryMode = $params["delivery-mode"];
$country = Country::getShopLocation();
if (isset($params["country"])) {
$country = CountryQuery::create()->findOneById($params["country"]);
}
$cartWeight = $this->request->getSession()->getSessionCart($this->dispatcher)->getWeight();
$cartAmount = $this->request->getSession()->getSessionCart($this->dispatcher)->getTaxedAmount($country);
try {
$price = SoColissimo::getPostageAmount(
$country->getAreaId(),
$cartWeight,
$cartAmount,
$deliveryMode
);
} catch (DeliveryException $ex) {
$smarty->assign('isValidMode', false);
}
$smarty->assign('deliveryModePrice', $price);
}
}