reservation; $dbcfg = \Settings::getDefault(); $items = [ $this->productLoader->loadProductObject($reservation->getProduct()) + ['index' => 1, 'quantity' => 1], ]; $commonData = $this->getCommonData($event); $allDeliveryTypes = \DeliveryType::getAll(true); $deliveryType = $allDeliveryTypes[$dbcfg->reservations['delivery_type']]; $params = $commonData + [ 'currency' => $this->currencyContext->getActiveId(), 'transaction_id' => 'RES'.$reservation->id, 'value' => $this->priceComputer->getPrice($reservation->getPrice()), 'vat' => $this->priceComputer->getPrice($reservation->getPrice()->getVatPrice(), null, false), 'delivery_type' => $deliveryType ? $deliveryType->getDelivery()->getName() : '', 'payment_type' => $deliveryType ? $deliveryType->getPayment()->getName() : '', 'items' => $items, 'shipping' => \DecimalConstants::zero(), ]; return [ 'user_id' => $commonData['user_id'], 'client_id' => $commonData['client_id'], 'ga3_session_id' => $this->getGA3SessionId(), 'events' => [ [ 'name' => 'purchase', 'params' => $params, ], ], ]; } protected function getCommonData(Event $event): array { $dbcfg = \Settings::getDefault(); /** @var Reservation $Reservation */ $Reservation = $event->reservation; $request = $this->requestStack->getCurrentRequest(); return array_merge(parent::getCommonData($event), [ 'ip_override' => $request->getClientIp(), 'page_path' => createScriptURL(['s' => 'product', 'IDproduct' => $Reservation->getProduct()->id, 'TITLE' => $Reservation->getProduct()->title]), 'page_title' => $Reservation->getProduct()->title, 'page_referrer' => $request->getSession()->get('referer'), 'user_agent' => $request->server->get('HTTP_USER_AGENT'), 'shaEmail' => hash('sha256', $Reservation->email.($dbcfg->analytics['google_tag_manager']['sha_salt'] ?? false ?: '')), ]); } protected function getUserData(Event $event): array { return [ 'email_address' => $event->reservation['email'] ?? '', 'phone_number' => $event->reservation['phone'] ?? '', 'address' => [ 'first_name' => $event->reservation['name'] ?? '', 'last_name' => $event->reservation['surname'] ?? '', 'street' => null, 'city' => null, 'region' => null, 'postal_code' => null, 'country' => null, ], ]; } #[Required] public function setPriceComputer(PriceComputer $priceComputer): void { $this->priceComputer = $priceComputer; } }