<?php
namespace DcSiteBundle\Controller\Toyota;
use CoreBundle\Component\CoreFormFactory;
use CoreBundle\Component\FormManager;
use CoreBundle\Entity\Forms;
use CoreBundle\Factory\Vehicle as VehicleFactory;
use CoreBundle\Model\Api\OnlineService\ApiServer1C;
use CoreBundle\Model\Post;
use CoreBundle\Model\Vehicles\Repository;
use CoreBundle\Model\ViDiWorkerModel;
use CoreBundle\Services\MediaExtensionVidi;
use DateTime;
use DcSiteBundle\Entity\Vacancy;
use DcSiteBundle\Services\NewsService;
use Doctrine\ORM\EntityManagerInterface;
use PortalBundle\Model\SeoMetaTag;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\RouterInterface;
use Twig\Environment;
class AboutController extends BaseController
{
public function __construct(CoreFormFactory $coreFormFactory, SeoMetaTag $seoMetaTag, RequestStack $requestStack, RouterInterface $router, FormManager $formManager, EntityManagerInterface $em, ApiServer1C $apiServer1C, SessionInterface $session, Filesystem $filesystem, MediaExtensionVidi $mediaExtensionVidi, Repository $vehicleRepository, VehicleFactory $vehicleFactory, Environment $twig)
{
parent::__construct($coreFormFactory, $seoMetaTag, $requestStack, $router, $formManager, $em, $apiServer1C, $session, $filesystem, $mediaExtensionVidi, $vehicleRepository, $vehicleFactory, $twig);
}
public function dealerCenter(Request $request, ViDiWorkerModel $viDiWorkerModel): ?Response
{
$workers = $viDiWorkerModel->getAllByDealer($this->getDealer(), $request->getLocale());
return $this->baseToyotaRender('@DcSite/Toyota/About/about-us.html.twig', [
'workers' => $workers,
'privacyUrl' => $this->router->generate('toyota_personal_data_agreement'),
]);
}
public function quality(): ?Response
{
return $this->baseToyotaRender('@DcSite/Toyota/About/quality.html.twig');
}
public function myToyota(): ?Response
{
return $this->baseToyotaRender('@DcSite/Toyota/About/mytoyota.html.twig');
}
public function news(Request $request, NewsService $newsService): ?Response
{
$rows = $newsService
->setLocale($request->getLocale())
->getNews($this->getDealer());
return $this->baseToyotaRender('@DcSite/Toyota/About/news.html.twig', [
'posts' => $rows
]);
}
public function vacancies(): ?Response
{
$vacancies = $this->em->getRepository(Vacancy::class)->getByDealer($this->getDealer());
return $this->baseToyotaRender('@DcSite/Toyota/About/vacancies.html.twig', [
'vacancies' => $vacancies
]);
}
public function contacts(): ?Response
{
return $this->baseToyotaRender('@DcSite/Toyota/About/contacts.html.twig');
}
public function singleNews(Request $request, Post $model, string $url): ?Response
{
$post = $model->initByUrl($this->getDealer(), $url, Post::POST_TYPE_NEWS);
if (empty($post)) {
throw $this->createNotFoundException();
}
return $this->baseToyotaRender('@DcSite/Toyota/Stocks/single-post.html.twig', [
'isNews' => $model->isNews(),
'post' => [
'seoTitle' => $post->getSeoTitle($request->getLocale()),
'seoDescription' => $post->getSeoDescription($request->getLocale()),
'title' => $post->getTitle($request->getLocale()),
'dateStart' => $post->getDateStart(),
'content' => $post->getContent($request->getLocale()),
'image' => $this->mediaExtensionVidi->getPath($post->getImage($request->getLocale()), 'reference'),
'image_webp' => $this->mediaExtensionVidi->pathWebp($post->getImage($request->getLocale()), 'reference')
]
]);
}
public function singleVacancies($id): ?Response
{
$vacancy = $this->em->getRepository(Vacancy::class)->getByID($id);
return $this->baseToyotaRender('@DcSite/Toyota/About/single-vacancies.html.twig', [
'vacancy' => $vacancy,
'vacancyForm' => $this->CoreFormFactory()->vacancyForm($this->getDealer(), $vacancy)->createView()
]);
}
public function staff(Request $request, ViDiWorkerModel $viDiWorkerModel): ?Response
{
$workers = $viDiWorkerModel->getAllByDealer($this->getDealer(), $request->getLocale());
return $this->baseToyotaRender('@DcSite/Toyota/About/staff.html.twig', [
'workers' => $workers,
'callbackForm' => $this->CoreFormFactory()->orderCallForm(null, $this->getDealer())->createView(),
]);
}
public function personalData(): ?Response
{
return $this->baseToyotaRender('@DcSite/Toyota/About/personal-data-policy.html.twig', ['dealer' => $this->getDealer()]);
}
public function saveFeedbackForm(Request $request): JsonResponse
{
$dealer = $this->getDealer();
$feedbackForm = new Forms();
$feedbackForm->setDateCreate(new DateTime());
$feedbackForm->setType(FormManager::TYPE_COMMON_FORM);
$feedbackForm->setName($request->request->get('name'));
$feedbackForm->setPhone($request->request->get('phone'));
$feedbackForm->setEmail($request->request->get('email'));
$feedbackForm->setDomain($request->getHost());
$params = json_encode([
'comment' => $request->request->get('question'),
]);
$feedbackForm->setData($params);
$feedbackForm->setDealer($dealer);
$this->em->persist($feedbackForm);
$this->em->flush();
return new JsonResponse(['success' => true]);
}
public function publicOffer(): ?Response
{
return $this->baseToyotaRender('@DcSite/Toyota/About/public-offer.html.twig', ['dealer' => $this->getDealer()]);
}
public function returnRefundPolicies(): ?Response
{
return $this->baseToyotaRender('@DcSite/Toyota/About/return-refund-policies.html.twig');
}
}