<?php
namespace PortalBundle\Controller;
use CoreBundle\Component\CoreFormFactory;
use CoreBundle\Component\FormManager;
use CoreBundle\Entity\Dealer;
use CoreBundle\Model\Vehicles\Repository;
use CoreBundle\Services\MediaExtensionVidi;
use Doctrine\ORM\EntityManagerInterface;
use PortalBundle\Services\ServiceService;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\RouterInterface;
class ContactsController extends BaseController
{
public function __construct(CoreFormFactory $coreFormFactory, RequestStack $requestStack, RouterInterface $router,
Repository $vehicleRepository, ServiceService $serviceService)
{
parent::__construct($coreFormFactory, $requestStack, $router, $vehicleRepository, $serviceService);
}
public function contacts(Request $request, EntityManagerInterface $em, MediaExtensionVidi $mediaExtensionVidi): Response
{
$locale = $request->getLocale();
$dealers = $em->getRepository(Dealer::class)->getCarDealerOutputOrder();
$dealers = array_filter($dealers, fn($dealer) => $dealer->getId() !== 39);
usort($dealers, fn($dealer1, $dealer2) => $dealer1->getOutputOrder() === null ? 1 :
($dealer2->getOutputOrder() === null ? -1 :
$dealer1->getOutputOrder() <=> $dealer2->getOutputOrder()
));
foreach ($dealers as $dealer){
$vueDealers[] = [
'id' => $dealer->getId(),
'name' => $dealer->getNameByLocale($locale),
'brandId' => $dealer->getBrand()->getId(),
'brandName' => $dealer->getBrand()->getName(),
'domain' => $dealer->getDomain(),
'cityId' => ($dealer->getCity()) ? $dealer->getCity()->getId() : null,
'cityName' => ($dealer->getCity()) ? $dealer->getCity()->getCityByLocale($locale) : null,
'logo' => $mediaExtensionVidi->getPath($dealer->getBrand()->getLogo(), 'reference'),
'img' => $mediaExtensionVidi->getPath($dealer->getImageServiceCenter(), 'reference'),
'address' => $dealer->getAddressByLocale($locale),
'phone' => $dealer->getPhone(),
'openTime' => $dealer->getOpenTime(),
'closeTime' => $dealer->getCloseTime(),
'mapUrl' => 'https://maps.google.com/maps?q=' . $dealer->getLat() . ',' . $dealer->getLng() . '&hl='.$locale,
'detail_url' => $dealer->getSeoUrl()?$this->generateUrl('portal_contacts_single', ['seo_url' => $dealer->getSeoUrl()]):'',
];
}
return $this->basePortalRender('@Portal/Contacts/contacts.html.twig',[
'vueDealers' => $vueDealers,
]);
}
public function supportSave(Request $request, FormManager $formManager): JsonResponse
{
return $formManager->saveSupportForm($request);
}
}