<?php
namespace AutomarketBundle\Controller;
use AutomarketBundle\Services\CatalogService;
use AutomarketBundle\Services\MainService;
use CoreBundle\Component\CoreFormFactory;
use CoreBundle\Entity\Forms;
use CoreBundle\Entity\Vehicles\Vehicle;
use CoreBundle\Factory\Vehicle as VehicleFactory;
use CoreBundle\Model\ViDiDepartmentModel;
use DcSiteBundle\Model\CreditModel;
use Doctrine\ORM\EntityManagerInterface;
use PortalBundle\Model\SeoMetaTag;
use PortalBundle\Services\DepartmentService;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class ServicesController extends MainController
{
private DepartmentService $departmentService;
private VehicleFactory $factoryVehicle;
private CreditModel $creditModel;
public function __construct(CoreFormFactory $coreFormFactory, RequestStack $requestStack, EntityManagerInterface $em,
SeoMetaTag $seoMetaTag, CatalogService $catalogService, MainService $mainService,
DepartmentService $departmentService, VehicleFactory $factoryVehicle,
CreditModel $creditModel)
{
parent::__construct($coreFormFactory, $requestStack, $em, $seoMetaTag, $catalogService, $mainService);
$this->departmentService = $departmentService;
$this->factoryVehicle = $factoryVehicle;
$this->creditModel = $creditModel;
}
public function creditInit(Request $request): JsonResponse
{
$vehicleId = $request->request->get('vehicleId');
if (!$vehicleId) {
throw new NotFoundHttpException();
}
$vehicle = $this->em->getRepository(Vehicle::class)->find($vehicleId);
$vehicleModel = $this->factoryVehicle->createByEntity($vehicle);
$programs = $this->creditModel->findCreditInDb($vehicleModel->getDealer(), $vehicleModel);
return $this->json($programs);
}
public function credit(Request $request): Response
{
$form = $this->CoreFormFactory()
->callMeForm(new Forms(), true);
$form->get('dealer')->setData($this->getDealer());
$dealer = $this->getDealer();
return $this->baseAutomarketRender('@Automarket/Services/credit.html.twig', [
'dealerId' => $dealer->getId(),
'dealer' => $dealer,
'creditForm' => $this->CoreFormFactory()->creditForm($dealer)->createView(),
'callMeForm' => $form->createView(),
'callMeFormBottom' => $form->createView(),
'financialConsultants' => $this->departmentService->getWorkersOfDepartment($dealer->getId(), ViDiDepartmentModel::DEPARTMENT_TYPE_FINANCE, $request->getLocale()),
'feedbackForm' => $this->CoreFormFactory()->fbDefQuestionForm('Запрос консультации о кредите', ViDiDepartmentModel::DEPARTMENT_TYPE_SALE, null, $this->getDealer())->createView(),
]);
}
public function insurance(): Response
{
return $this->baseAutomarketRender('@Automarket/Services/insurance.html.twig', [
'kascoForm' => $this->CoreFormFactory()->orderCascoForm()->createView(),
]);
}
public function forBusiness(): Response
{
return $this->baseAutomarketRender('@Automarket/Services/for-business.html.twig', [
'corpSalesForm' => $this->CoreFormFactory()->corpSalesForm($this->getDealer())->createView()
]);
}
}