application = $application; } /** * @return Deliverer */ private function getDeliverer() { return $this->application['notification.deliverer']; } /** * @param Order $order * @param User $recipient */ public function notifyCreation(Order $order, User $recipient) { $mail = MailInfoNewOrder::create($this->application, Receiver::fromUser($recipient)); $mail->setUser($order->getUser()); $this->getDeliverer()->deliver($mail); } /** * @param OrderDelivery $delivery */ public function notifyDelivery(OrderDelivery $delivery) { $order = $delivery->getOrder(); $recipient = Receiver::fromUser($order->getUser()); $sender = Emitter::fromUser($delivery->getAdmin()); $basket = $order->getBasket(); $token = $this->application['manipulator.token']->createBasketAccessToken($basket, $order->getUser()); $url = $this->application->url('lightbox_compare', [ 'basket' => $basket->getId(), 'LOG' => $token->getValue(), ]); $mail = MailInfoOrderDelivered::create($this->application, $recipient, $sender, null); $mail->setButtonUrl($url); $mail->setBasket($basket); $mail->setDeliverer($delivery->getAdmin()); $this->getDeliverer()->deliver($mail); } /** * @param OrderDelivery $delivery */ public function notifyDenial(OrderDelivery $delivery) { $sender = Emitter::fromUser($delivery->getAdmin()); $recipient = Receiver::fromUser($delivery->getOrder()->getUser()); $mail = MailInfoOrderCancelled::create($this->application, $recipient, $sender); $mail->setQuantity($delivery->getQuantity()); $mail->setDeliverer($delivery->getAdmin()); $this->getDeliverer()->deliver($mail); } }