. */ /* */ /*************************************************************************************/ namespace LocalPickup; use Propel\Runtime\Connection\ConnectionInterface; use Symfony\Component\DependencyInjection\Loader\Configurator\ServicesConfigurator; use Thelia\Install\Database; use Thelia\Model\Country; use Thelia\Model\Message; use Thelia\Model\MessageQuery; use Thelia\Model\State; use Thelia\Module\AbstractDeliveryModuleWithState; /** * Class LocalPickup * @package LocalPickup * @author Thelia */ class LocalPickup extends AbstractDeliveryModuleWithState { const DOMAIN_NAME = 'localpickup'; const PRICE_VAR_NAME = 'price'; const DESCRIPTION_VAR_NAME = 'description'; const EMAIL_VAR_NAME = 'email'; const EMAIL_CUSTOM_LOCAL_PICKUP = 'email_custom_local_pickup'; /** * @inheritdoc */ public function getPostage(Country $country, State $state = null) { return $this->buildOrderPostage(self::getConfigValue(self::PRICE_VAR_NAME, 0), $country, $this->getRequest()->getSession()->getLang()->getLocale()); } public function update($currentVersion, $newVersion, ConnectionInterface $con = null): void { if (null === MessageQuery::create()->findOneByName(self::EMAIL_CUSTOM_LOCAL_PICKUP)) { $message = new Message(); $message ->setName(self::EMAIL_CUSTOM_LOCAL_PICKUP) ->setHtmlTemplateFileName('order_shipping.html') ->setHtmlLayoutFileName('') ->setTextTemplateFileName('order_shipping.txt') ->setTextLayoutFileName('') ->setSecured(0) ->setLocale('fr_FR') ->setTitle('Confirmation de vote commande') ->setSubject('Commande à récupérer en magasin') ->setLocale('en_GB') ->setTitle('Order confirmation') ->setSubject('Order to pick up in store') ->setLocale('de_DE') ->setTitle('Bestellbestätigung') ->setSubject('Bestellung im Geschäft abholen') ->save() ; } if ($newVersion === '1.2') { $db = new Database($con); // Migrate previous price from database to module config try { $statement = $db->execute("select price from local_pickup_shipping order by id desc limit 1"); $price = (float)$statement->fetchColumn(0); self::setConfigValue(self::PRICE_VAR_NAME, $price); } catch (\Exception $ex) { // Nothing special } } } /** * @inheritdoc */ public function isValidDelivery(Country $country, State $state = null) { return true; } public function getDeliveryMode() { return "localPickup"; } public static function configureServices(ServicesConfigurator $servicesConfigurator): void { $servicesConfigurator->load(self::getModuleCode().'\\', __DIR__) ->exclude([THELIA_MODULE_DIR . ucfirst(self::getModuleCode()). "/I18n/*"]) ->autowire(true) ->autoconfigure(true); } }