. */ /* */ /*************************************************************************************/ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Core\Event\AddressCreateOrUpdateEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Model\Address as AddressModel; /** * Class Address * @package Thelia\Action * @author Manuel Raynaud */ class Address extends BaseAction implements EventSubscriberInterface { public function create(AddressCreateOrUpdateEvent $event) { $address = new AddressModel(); $address->setCustomer($event->getCustomer()); $this->createOrUpdate($address, $event); } public function update(AddressCreateOrUpdateEvent $event) { $addressModel = $event->getAddress(); $this->createOrUpdate($addressModel, $event); } protected function createOrUpdate(AddressModel $addressModel, AddressCreateOrUpdateEvent $event) { $addressModel->setDispatcher($this->getDispatcher()); if ($addressModel->isNew()) { $addressModel->setLabel($event->getLabel()); } $addressModel ->setTitleId($event->getTitle()) ->setFirstname($event->getFirstname()) ->setLastname($event->getLastname()) ->setAddress1($event->getAddress1()) ->setAddress2($event->getAddress2()) ->setAddress3($event->getAddress3()) ->setZipcode($event->getZipcode()) ->setCity($event->getCity()) ->setCountryId($event->getCountry()) ->setCellphone($event->getCellphone()) ->setPhone($event->getPhone()) ->setCompany($event->getCompany()) ->save() ; $event->setAddress($addressModel); } /** * Returns an array of event names this subscriber wants to listen to. * * The array keys are event names and the value can be: * * * The method name to call (priority defaults to 0) * * An array composed of the method name to call and the priority * * An array of arrays composed of the method names to call and respective * priorities, or 0 if unset * * For instance: * * * array('eventName' => 'methodName') * * array('eventName' => array('methodName', $priority)) * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) * * @return array The event names to listen to * * @api */ public static function getSubscribedEvents() { return array( TheliaEvents::ADDRESS_CREATE => array("create", 128), TheliaEvents::ADDRESS_UPDATE => array("update", 128) ); } }