core/lib/Thelia/Action/CustomerTitle.php line 41
<?php/** This file is part of the Thelia package.* http://www.thelia.net** (c) OpenStudio <info@thelia.net>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Thelia\Action;use Propel\Runtime\Propel;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Thelia\Core\Event\CustomerTitle\CustomerTitleEvent;use Thelia\Core\Event\TheliaEvents;use Thelia\Model\CustomerTitle as CustomerTitleModel;use Thelia\Model\Map\CustomerTitleTableMap;/*** Class CustomerTitle.** @author Benjamin Perche <bperche@openstudio.fr>*/class CustomerTitle extends BaseAction implements EventSubscriberInterface{public function create(CustomerTitleEvent $event): void{$this->createOrUpdate($event, new CustomerTitleModel());}public function update(CustomerTitleEvent $event): void{$this->checkCustomerTitle($event);$this->createOrUpdate($event, $event->getCustomerTitle());}public function delete(CustomerTitleEvent $event): void{$this->checkCustomerTitle($event);$con = Propel::getConnection(CustomerTitleTableMap::DATABASE_NAME);$con->beginTransaction();try {$event->getCustomerTitle()->delete();$con->commit();} catch (\Exception $e) {$con->rollBack();throw $e;}$event->setCustomerTitle(null);}protected function checkCustomerTitle(CustomerTitleEvent $event): void{if (null === $event->getCustomerTitle()) {throw new \LogicException('You must set the customer title before its update');}}protected function createOrUpdate(CustomerTitleEvent $event, CustomerTitleModel $customerTitle): void{$con = Propel::getConnection(CustomerTitleTableMap::DATABASE_NAME);$con->beginTransaction();$i18n = $customerTitle->getTranslation($event->getLocale(), $con);try {$i18n->setShort($event->getShort())->setLong($event->getLong());$customerTitle->save($con);if ($event->isDefault()) {$customerTitle->toggleDefault($con);$event->setDefault(false);}$con->commit();} catch (\Exception $e) {$con->rollBack();throw $e;}$event->setCustomerTitle($customerTitle);}/*** {@inheritdoc}*/public static function getSubscribedEvents(){return [TheliaEvents::CUSTOMER_TITLE_CREATE => ['create'],TheliaEvents::CUSTOMER_TITLE_UPDATE => ['update'],TheliaEvents::CUSTOMER_TITLE_DELETE => ['delete'],];}}