webhookManipulatorLocator = $webhookEventManipulatorLocator; } /** * @return WebhookEventManipulator */ private function getManipulator() { $factory = $this->webhookManipulatorLocator; return $factory(); } /** * @param Order $order * @param User $recipient */ public function notifyCreation(Order $order, User $recipient) { $eventData = [ 'order_id' => $order->getId(), 'user_id' => $recipient->getId(), ]; $this->getManipulator()->create(WebhookEvent::ORDER_CREATED, WebhookEvent::ORDER_TYPE, $eventData); } /** * @param OrderDelivery $delivery */ public function notifyDelivery(OrderDelivery $delivery) { $eventData = [ 'order_id' => $delivery->getOrder()->getId(), 'admin_id' => $delivery->getAdmin()->getId(), 'quantity' => $delivery->getQuantity() ]; $this->getManipulator()->create(WebhookEvent::ORDER_DELIVERED, WebhookEvent::ORDER_TYPE, $eventData); } /** * @param OrderDelivery $delivery */ public function notifyDenial(OrderDelivery $delivery) { $eventData = [ 'order_id' => $delivery->getOrder()->getId(), 'admin_id' => $delivery->getAdmin()->getId(), 'quantity' => $delivery->getQuantity() ]; $this->getManipulator()->create(WebhookEvent::ORDER_DENIED, WebhookEvent::ORDER_TYPE, $eventData); } }