<?php
namespace Slivki\Controller;
use Slivki\Entity\City;
use Slivki\Services\City\CityProvider;
use Symfony\Component\HttpFoundation\Response;
use Slivki\Entity\InfoPage;
use Slivki\Util\CommonUtil;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\KernelInterface;
class PageController extends SiteController
{
private const CONTACTS_PHONE_VERSION_SESSION_KEY = 'contactsPhoneNumbersVersion';
public CityProvider $cityProvider;
public KernelInterface $kernel;
public function __construct(CityProvider $cityProvider, KernelInterface $kernel)
{
parent::__construct($kernel);
$this->cityProvider = $cityProvider;
}
public function detailsAction(Request $request): Response
{
$response = new Response();
$defaultCityId = $this->cityProvider->getDefaultCityId();
$isMobileDevice = CommonUtil::isMobileDevice($request);
$pathInfo = $request->getPathInfo();
$seoEntityID = $this->getSeoRepository()->getByAlias($pathInfo)->getEntityID();
$data['infoPage'] = $this->getDoctrine()->getManager()->getRepository(InfoPage::class)->find($seoEntityID);
$data['text'] = $data['infoPage']->getContent();
$data['director'] = $data['infoPage']->getDirector();
if ($seoEntityID == InfoPage::ADVERTISER_PAGE_ID) {
$data['text'] = $this->renderView($isMobileDevice ? 'Slivki/mobile/info_pages/advertiser.html.twig'
: 'Slivki/pages/content/advertiser.html.twig');
} elseif ($seoEntityID == InfoPage::INSTAGRAM_PAGE_ID) {
$data['text'] = $this->renderView($isMobileDevice ? 'Slivki/mobile/info_pages/instagram.html.twig'
: 'Slivki/pages/content/instagram.html.twig');
} elseif (InfoPage::USER_AGREEMENT_PAGE_ID === $seoEntityID && $defaultCityId === City::TASHKENT_CITY_ID) {
$data['text'] = $this->renderView('Slivki/uz/pages/user_agreement.twig');
}
if (InfoPage::CONTACT_PAGE_ID === $seoEntityID) {
$data['text'] = \str_replace(
'[user_email]',
$this->getUser() ? $this->getUser()->getEmail() : '',
$data['text']
);
}
$view = 'Slivki/pages/pages.html.twig';
if ($seoEntityID == InfoPage::CONTACT_PAGE_ID && self::getMobileDevice($request)) {
$session = $request->getSession();
$contactsPhoneNumbersVersion = $session->get(self::CONTACTS_PHONE_VERSION_SESSION_KEY, 0);
$contactsPhoneNumbersVersion++;
if ($contactsPhoneNumbersVersion > 2) {
$contactsPhoneNumbersVersion = 1;
}
$session->set(self::CONTACTS_PHONE_VERSION_SESSION_KEY, $contactsPhoneNumbersVersion);
$data['text'] = $this->renderView('Slivki/mobile/info_pages/contacts.html.twig', ['contactsPhoneNumbersVersion' => $contactsPhoneNumbersVersion]);
}
if ($isMobileDevice) {
$view = 'Slivki/mobile/info_pages/base.html.twig';
}
$response->setContent($this->renderView($view, $data));
return $response;
}
}