public function updateStatus(OrderEvent $event) { $order = $event->getOrder(); $Predict = new Predict(); if ($order->isSent() && $order->getDeliveryModuleId() == $Predict->getModuleModel()->getId()) { $contact_email = ConfigQuery::read('store_email'); if ($contact_email) { $message = MessageQuery::create()->filterByName('mail_predict')->findOne(); if (false === $message) { throw new \Exception(Translator::getInstance()->trans("Failed to load message '%mail_tpl_name'.", ["%mail_tpl_name" => "mail_predict"], Predict::MESSAGE_DOMAIN)); } $order = $event->getOrder(); $customer = $order->getCustomer(); $this->parser->assign('customer_id', $customer->getId()); $this->parser->assign('order_ref', $order->getRef()); $this->parser->assign('order_date', $order->getCreatedAt()); $this->parser->assign('order_id', $order->getId()); $this->parser->assign('update_date', $order->getUpdatedAt()); $this->parser->assign('package', $order->getDeliveryRef()); $message->setLocale($order->getLang()->getLocale()); $instance = \Swift_Message::newInstance()->addTo($customer->getEmail(), $customer->getFirstname() . " " . $customer->getLastname())->addFrom($contact_email, ConfigQuery::read('store_name')); // Build subject and body $message->buildMessage($this->parser, $instance); $this->mailer->send($instance); Tlog::getInstance()->debug("Predict shipping message sent to customer " . $customer->getEmail()); } else { $customer = $order->getCustomer(); Tlog::getInstance()->debug("Predict shipping message no contact email customer_id", $customer->getId()); } } }
public function replace() { $country = $this->getRequest()->get('country_id', $this->container->get('thelia.taxEngine')->getDeliveryCountry()->getId()); $this->checkXmlHttpRequest(); /** @var \Thelia\Model\Customer $customer */ $customer = $this->getSession()->getCustomerUser(); $args = array('country' => $country, "predict_id" => Predict::getModuleId(), "customer_cellphone" => $customer->getDefaultAddress()->getCellphone()); return $this->render('ajax/order-delivery-module-list', $args); }
/** * @param OrderEvent $event * @throws \Thelia\Form\Exception\FormValidationException */ public function cellphoneCheck(OrderEvent $event) { if (Predict::getModuleId() === $event->getDeliveryModule()) { $cellphone = $this->request->request->get("predict_cellphone"); $cellphone = str_replace(array(' ', '.', '-', ',', ';', '/', '\\', '(', ')'), '', $cellphone); $partial_number = ""; if (empty($cellphone) || !preg_match('#^[0|\\+33][6-7]([0-9]{8})$#', $cellphone, $partial_number)) { throw new FormValidationException(Translator::getInstance()->trans("You must give a cellphone number in order to use Predict services", [], Predict::MESSAGE_DOMAIN)); } $cellphone = str_replace("+33", "0", $cellphone); $banned_cellphones = array('00000000', '11111111', '22222222', '33333333', '44444444', '55555555', '66666666', '77777777', '88888888', '99999999', '12345678', '23456789', '98765432'); if (in_array($partial_number[1], $banned_cellphones)) { throw new FormValidationException(Translator::getInstance()->trans("This phone number is not valid", [], Predict::MESSAGE_DOMAIN)); } /** @var \Thelia\Model\Customer $customer */ $customer = $this->getRequest()->getSession()->getCustomerUser(); $address = $customer->getDefaultAddress(); $addressEvent = new AddressCreateOrUpdateEvent($address->getLabel(), $address->getTitleId(), $address->getFirstname(), $address->getLastname(), $address->getAddress1(), $address->getAddress2(), $address->getAddress3(), $address->getZipcode(), $address->getCity(), $address->getCountryId(), $cellphone, $address->getPhone(), $address->getCompany()); $addressEvent->setAddress($address); $dispatcher = $event->getDispatcher(); $dispatcher->dispatch(TheliaEvents::ADDRESS_UPDATE, $addressEvent); } }