src/DcSiteBundle/Controller/Nissan/FinanceController.php line 112

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller\Nissan;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Component\FormManager;
  5. use CoreBundle\Entity\Forms;
  6. use CoreBundle\Factory\Vehicle as VehicleFactory;
  7. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  8. use CoreBundle\Model\Vehicles\Repository;
  9. use CoreBundle\Model\ViDiDepartmentModel;
  10. use CoreBundle\Model\ViDiWorkerModel;
  11. use CoreBundle\Services\MediaExtensionVidi;
  12. use DcSiteBundle\Model\Form\ServicesOrderForm;
  13. use DcSiteBundle\Services\Nissan\Finance\FinanceService;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use PortalBundle\Model\SeoMetaTag;
  16. use Symfony\Component\Filesystem\Filesystem;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\RequestStack;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  21. use Symfony\Component\Routing\RouterInterface;
  22. use Twig\Environment;
  23. class FinanceController extends BaseController
  24. {
  25.     private FinanceService $financeService;
  26.     public function __construct(FinanceService $financeServiceCoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  27.     {
  28.         $this->financeService $financeService;
  29.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  30.     }
  31.     public function insurance(): ?Response
  32.     {
  33.         return $this->baseNissanRender('@DcSite/Nissan/Finance/insurance.html.twig', [
  34.             'insuranceForm' => $this->CoreFormFactory()->fbDefQuestionForm('Запрос консультации по страхованию'ViDiDepartmentModel::DEPARTMENT_TYPE_FINANCEnull$this->getDealer())->createView()
  35.         ]);
  36.     }
  37.     public function korp(): ?Response
  38.     {
  39.         return $this->baseNissanRender('@DcSite/Nissan/Finance/korp-clientam.html.twig', [
  40.             'serviceOrderForm' => $this->CoreFormFactory()->servicesOrderForm(ServicesOrderForm::CORPORATIVE_PROGRAM)->createView()
  41.         ]);
  42.     }
  43.     public function kredit(Request $requestViDiWorkerModel $viDiWorkerModel): ?Response
  44.     {
  45.         $departments $viDiWorkerModel->getAllByDealer($this->getDealer(), $request->getLocale());
  46.         $needDepartment $request->getLocale() == 'ru' 'Отдел продаж' 'Відділ продажу';
  47.         $team array_filter($departments, fn($department) => $department['departmentTitle'] === $needDepartment);
  48.         $form $this->CoreFormFactory()
  49.             ->callMeForm(new Forms(), true);
  50.         $form->get('dealer')->setData($this->getDealer());
  51.         return $this->baseNissanRender('@DcSite/Nissan/Finance/kredit.html.twig', [
  52.             'creditForm' => $this->CoreFormFactory()->creditForm($this->getDealer())->createView(),
  53.             'brandId' => $this->getDealer()->getBrand()->getId(),
  54.             'dealerId' => $this->getDealer()->getId(),
  55.             'team' => current($team),
  56.             'serviceOrderForm' => $this->CoreFormFactory()->servicesOrderForm(ServicesOrderForm::LOYALTY)->createView(),
  57.             'callMeForm' => $form->createView()
  58.         ]);
  59.     }
  60.     public function leasing(): ?Response
  61.     {
  62.         return $this->baseNissanRender('@DcSite/Nissan/Finance/leasing.html.twig', [
  63.             'leasingCalculatorForm' => $this->CoreFormFactory()->leasingForm()->createView(),
  64.         ]);
  65.     }
  66.     public function assistance(): ?Response
  67.     {
  68.         return $this->baseNissanRender('@DcSite/Nissan/Finance/nissan-assistance.html.twig');
  69.     }
  70.     public function nissanFinance(): ?Response
  71.     {
  72.         return $this->baseNissanRender('@DcSite/Nissan/Finance/nissan-finance.html.twig', [
  73.             'serviceOrderForm' => $this->CoreFormFactory()->servicesOrderForm(ServicesOrderForm::CREDIT)->createView()
  74.         ]);
  75.     }
  76.     public function tradeIn(): ?Response
  77.     {
  78.         return $this->baseNissanRender('@DcSite/Nissan/Finance/trade-in.html.twig', [
  79.             'serviceOrderForm' => $this->CoreFormFactory()->servicesOrderForm(ServicesOrderForm::CREDIT)->createView()
  80.         ]);
  81.     }
  82.     public function loyality(): ?Response
  83.     {
  84.         return $this->baseNissanRender('@DcSite/Nissan/Finance/loyality.html.twig', [
  85.             'serviceOrderForm' => $this->CoreFormFactory()->servicesOrderForm(ServicesOrderForm::LOYALTY)->createView()
  86.         ]);
  87.     }
  88.     public function selectPage(): ?Response
  89.     {
  90.         return $this->baseNissanRender('@DcSite/Nissan/Finance/vidi-select.html.twig');
  91.     }
  92.     //FOR BUSSINES
  93.     public function forBussines(): ?Response
  94.     {
  95.         return $this->baseNissanRender('@DcSite/Nissan/Finance/for-bussines.html.twig', [
  96.             'corpSalesForm' => $this->CoreFormFactory()->corpSalesForm($this->getDealer())->createView(),
  97.             'cars' => $this->financeService->getVehicles($this->getDealer())
  98.         ]);
  99.     }
  100.     //landing page
  101.     public function landingTradeIn(): ?Response
  102.     {
  103.         return $this->baseNissanRender('@DcSite/Nissan/Finance/landing-trade-in.html.twig');
  104.     }
  105.     public function landingSelectPage(): ?Response
  106.     {
  107.         return $this->baseNissanRender('@DcSite/Nissan/Finance/landing-vidi-select.html.twig');
  108.     }
  109.     // Sms landing page
  110.     public function SmsLandingTradeIn(Request $request): ?Response
  111.     {
  112.         if ($this->checkSend($request)) {
  113.             return $this->baseNissanRender('@DcSite/Nissan/Finance/sms-landing-vidi-select.html.twig');
  114.         }
  115.         $this->sendSmsLead($request);
  116.         return $this->baseNissanRender('@DcSite/Nissan/Finance/sms-landing-vidi-select.html.twig');
  117.     }
  118. }