src/DcSiteBundle/Controller/FormController.php line 107

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Component\FormManager;
  5. use CoreBundle\Entity\Dealer;
  6. use CoreBundle\Entity\Forms;
  7. use CoreBundle\Entity\Vehicles\InStock;
  8. use CoreBundle\Entity\Vehicles\Vehicle;
  9. use CoreBundle\Factory\Vehicle as VehicleFactory;
  10. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  11. use CoreBundle\Model\Vehicles\Repository;
  12. use CoreBundle\Services\MediaExtensionVidi;
  13. use DateTime;
  14. use DcSiteBundle\Entity\Events;
  15. use DcSiteBundle\Entity\LeasingCalcLog;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Exception;
  18. use MyBundle\Entity\Basket;
  19. use PortalBundle\Model\SeoMetaTag;
  20. use Symfony\Component\Filesystem\Filesystem;
  21. use Symfony\Component\HttpFoundation\JsonResponse;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\HttpFoundation\RequestStack;
  24. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  25. use Symfony\Component\Mailer\MailerInterface;
  26. use Symfony\Component\Mime\Email;
  27. use Symfony\Component\Routing\RouterInterface;
  28. use Twig\Environment;
  29. class FormController extends BaseDcController
  30. {
  31.     const INSURANCE_DEALER 5;
  32.     const BODY_REPAIR_UNIQUE_ID 'BODY_SERVICE';
  33.     public function __construct(CoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  34.     {
  35.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  36.     }
  37.     public function testDriveForm(Request $request): JsonResponse
  38.     {
  39.         return $this->formManager->saveTestDriveForm($request);
  40.     }
  41.     public function serviceForm(Request $request): JsonResponse
  42.     {
  43.         return $this->formManager->saveServiceForm($request$this->getDealer());
  44.     }
  45.     public function feedBackForm(Request $request): JsonResponse
  46.     {
  47.         return $this->formManager->saveFeedbackForm($request$this->getDealer());
  48.     }
  49.     public function extendedWarrantyForm(Request $request): JsonResponse
  50.     {
  51.         return $this->formManager->saveExtendedWarrantyForm($request$this->getDealer());
  52.     }
  53.     public function orderCallForm(Request $request): JsonResponse
  54.     {
  55.         return $this->formManager->saveCallbackForm($request$this->getDealer());
  56.     }
  57.     public function buyForm(Request $request): JsonResponse
  58.     {
  59.         return $this->formManager->saveBuyCarForm($request);
  60.     }
  61.     public function buyUsedCar(Request $request): JsonResponse
  62.     {
  63.         return $this->formManager->saveBuyUsedCarForm($request);
  64.     }
  65.     public function buyInStockForm(Request $request): JsonResponse
  66.     {
  67.         $data $request->request->get('buy_in_stock');
  68.         $carId $data['car'] ?? false;
  69.         $car $this->em->getRepository(InStock::class)->find($carId);
  70.         if (!$car) {
  71.             $car $this->em->getRepository(Vehicle::class)->find($carId);
  72.             if ($car && !$car->getIsUsed()) {
  73.                 $car null;
  74.             }
  75.         }
  76.         return $this->formManager->saveBuyInStockCarForm($request$this->getDealer(), $car);
  77.     }
  78.     public function captchaInit(Request $requestSessionInterface $session): JsonResponse
  79.     {
  80.         $type $request->request->get('type');
  81.         $types $request->request->all('types');
  82.         if ($type) {
  83.             $key md5($type time());
  84.             $token md5('ti_form_key' time() . 'salt_rs5##%frsgh');
  85.             $session->set($key$token);
  86.             return new JsonResponse(['token' => $key '#' $token]);
  87.         }
  88.         $result = [];
  89.         if ($types) {
  90.             foreach ($types as $type) {
  91.                 $key md5($type time());
  92.                 $token md5('ti_form_key' time() . 'salt_rs5##%frsgh');
  93.                 $session->set($key$token);
  94.                 $result[$type] = $key '#' $token;
  95.             }
  96.         }
  97.         return new JsonResponse(['tokens' => $result]);
  98.     }
  99.     public function tradeInForm(Request $request): JsonResponse
  100.     {
  101.         return $this->formManager->saveTradeInForm($request$this->getDealer());
  102.     }
  103.     public function creditForm(Request $request): JsonResponse
  104.     {
  105.         return $this->formManager->saveCreditForm($request$this->getDealer());
  106.     }
  107.     public function buyPartsForm(Request $request): JsonResponse
  108.     {
  109.         $dealerId $request->get('buy_parts')['dealer'];
  110.         if ($dealerId) {
  111.             $dealer $this->em->getRepository(Dealer::class)->find($dealerId);
  112.         } else {
  113.             $dealer $this->getDealer();
  114.         }
  115.         return $this->formManager->saveBuyPartsForm($request$dealer);
  116.     }
  117.     public function VacancyForm(Request $request): JsonResponse
  118.     {
  119.         $dealerId $request->get('dealerId');
  120.         $dealer null;
  121.         if ($dealerId) {
  122.             $dealer $this->getDealer();
  123.         }
  124.         return $this->formManager->saveVacancyForm($request$dealer);
  125.     }
  126.     public function servicesOrderForm(Request $request): JsonResponse
  127.     {
  128.         $servicesType $request->get('services_order')['service_type'];
  129.         return $this->formManager->saveServiceOrderForm($request$this->getDealer(), $servicesType);
  130.     }
  131.     public function repairCalcSave(Request $request): JsonResponse
  132.     {
  133.         $dealer $this->em->getRepository(Dealer::class)->findOneBy(['unique_id' => self::BODY_REPAIR_UNIQUE_ID]);
  134.         $Form = new Forms();
  135.         $parts $request->request->get('selectedParts');
  136.         $type $request->request->get('carType');
  137.         $Form->setDateCreate(new DateTime());
  138.         $Form->setDealer($dealer);
  139.         $Form->setDomain($request->getHost());
  140.         $Form->setType(FormManager::TYPE_REPAIR_CALC);
  141.         $Form->setPhone($request->request->get('phone'));
  142.         $Form->setEmail($request->request->get('email'));
  143.         $Form->setName($request->request->get('name'));
  144.         $Form->setData(json_encode([
  145.             'parts' => $parts,
  146.             'car_type' => $type,
  147.             'amount' => $request->request->get('amount'),
  148.         ]));
  149.         $this->em->persist($Form);
  150.         $this->em->flush($Form);
  151.         return $this->json(['success' => true]);
  152.     }
  153.     public function repairPhotoSave(Request $request): JsonResponse
  154.     {
  155.         $dealerId $request->get('dealerId');
  156.         //TODO remove dealer hard code
  157.         try {
  158.             $dealer $this->getDealer();
  159.         } catch (Exception $e) {
  160.             $dealer $this->em->getRepository(Dealer::class)->findOneBy(['unique_id' => self::BODY_REPAIR_UNIQUE_ID]);
  161.         }
  162.         if (!in_array($dealer->getId(), [3233])) {
  163.             $dealer $this->em->getRepository(Dealer::class)->findOneBy(['unique_id' => self::BODY_REPAIR_UNIQUE_ID]);
  164.         }
  165.         return $this->formManager->saveRepairPhoto($request$dealer);
  166.     }
  167.     public function EventForm(Request $requestMailerInterface $mailer): JsonResponse
  168.     {
  169.         $id $request->get('eventId');
  170.         $email $request->get('email');
  171.         $event $this->em->getRepository(Events::class)->find($id);
  172.         $message = (new Email())
  173.             ->subject('kyiv-west.lexus.ua | ' $event->getName($request->getLocale()))
  174.             ->from('info@vidi.ua')
  175.             ->to($email)
  176.             ->html($this->renderView('@DcSite/Emails/event_to_email.html.twig', ['event' => $event]));
  177.         if (!$mailer->send($message)) {
  178.             return $this->json(['success' => false]);
  179.         }
  180.         return $this->json(['success' => true]);
  181.     }
  182.     public function rentForm(Request $request): JsonResponse
  183.     {
  184.         return $this->formManager->saveRentForm($request$this->getDealer());
  185.     }
  186.     public function personalSave(Request $request): JsonResponse
  187.     {
  188.         return $this->formManager->savePersonal($request$this->getDealer());
  189.     }
  190.     public function findPartSave(Request $request): JsonResponse
  191.     {
  192.         return $this->formManager->saveFindPart($request$this->getDealer());
  193.     }
  194.     public function orderGoodsForm(Request $request): JsonResponse
  195.     {
  196.         return $this->formManager->saveOrderGoodsForm($request$this->getDealer());
  197.     }
  198.     public function insuranceExtendSave(Request $request): JsonResponse
  199.     {
  200.         try {
  201.             $dealer $this->getDealer();
  202.         } catch (Exception $e) {
  203.             $dealer $this->em->getRepository(Dealer::class)->find(self::INSURANCE_DEALER);
  204.         }
  205.         return $this->formManager->saveInsuranceExtend($request$dealer);
  206.     }
  207.     public function commissionTechnologySave(Request $request): JsonResponse
  208.     {
  209.         return $this->formManager->saveCommissionTechnology($request$this->getDealer());
  210.     }
  211.     public function buySpareParts(Request $request): JsonResponse
  212.     {
  213.         return $this->formManager->saveBuySpareParts($request$this->getDealer());
  214.     }
  215.     public function tiresConfigurator(Request $request): JsonResponse
  216.     {
  217.         return $this->formManager->saveTiresConfigurator($request$this->getDealer());
  218.     }
  219.     public function corpSales(Request $request): JsonResponse
  220.     {
  221.         return $this->formManager->saveCorpSalesForm($request$this->getDealer());
  222.     }
  223.     public function leasingSave(Request $request): JsonResponse
  224.     {
  225.         try {
  226.             $dealer $this->getDealer();
  227.         } catch (Exception $e) {
  228.             $dealer $this->em->getRepository(Dealer::class)->find(36);
  229.         }
  230.         $response $this->formManager->saveLeasingForm($request$dealer);
  231.         $responseData json_decode($response->getContent(), true);
  232.         if ($responseData['success']) {
  233.             $leasing $request->get('leasing');
  234.             $leasingPhone $leasing['phone'];
  235.             $leasingPhone preg_replace('/\D+/'''$leasingPhone);
  236.             $this->em->getRepository(LeasingCalcLog::class)
  237.                 ->updateFormByPhone($leasingPhone$responseData['form_id']);
  238.         }
  239.         return $response;
  240.     }
  241.     public function feadBackForm(Request $request): JsonResponse
  242.     {
  243.         return $this->formManager->saveFeedbackForm($request$this->getDealer());
  244.     }
  245.     public function motoTestDrive(Request $request): JsonResponse
  246.     {
  247.         return $this->formManager->saveMotoTestDriveForm($request$this->getDealer());
  248.     }
  249.     public function waterTestDrive(Request $request): JsonResponse
  250.     {
  251.         $data $request->request->get('water_test_drive');
  252.         $vehicle $data['vehicle'];
  253.         $vehicle $this->em->getRepository(Vehicle::class)->find($vehicle);
  254.         return $this->formManager->saveWaterTestDriveForm($request$this->getDealer(), $vehicle);
  255.     }
  256.     public function OilTOForm(Request $request): JsonResponse
  257.     {
  258.         return $this->formManager->saveOilTOForm($request$this->getDealer());
  259.     }
  260.     public function ServiceCampaingCarForm(Request $request): JsonResponse
  261.     {
  262.         return $this->formManager->saveServiceCampaingCarForm($request$this->getDealer());
  263.     }
  264.     public function saveDesignForm(Request $request): JsonResponse
  265.     {
  266.         $data $request->request->get('save_design');
  267.         $vehicle $data['vehicle'];
  268.         $vehicle $this->em->getRepository(Vehicle::class)->find($vehicle);
  269.         return $this->formManager->saveSaveDesignForm($request$this->getDealer(), $vehicle);
  270.     }
  271.     public function saveSendQuestionForm(Request $request): JsonResponse
  272.     {
  273.         return $this->formManager->saveSendQuestionForm($request$this->getDealer());
  274.     }
  275.     public function saveSendCarQuestionForm(Request $request): JsonResponse
  276.     {
  277.         $requestData $request->request->get('send_question', []);
  278.         $requestData['select_subject_question'] = 8;
  279.         $request->request->set('send_question'$requestData);
  280.         return $this->formManager->saveSendQuestionForm($request$this->getDealer());
  281.     }
  282.     public function saveOnlineServiceRegistrationForm(Request $request): JsonResponse
  283.     {
  284.         return $this->formManager->saveOnlineServiceRegistrationForm($request$this->getDealer());
  285.     }
  286.     public function saveWithoutPay(Request $request): JsonResponse
  287.     {
  288.         if (!$this->getUser()) {
  289.             return $this->json(['success' => false'error' => 'Авторизуйтесь для створення замовлення']);
  290.         }
  291.         $Basket $this->em->getRepository(Basket::class)->findBy(['dealer' => $this->getDealer(), 'user' => $this->getUser(), 'status' => Basket::STATUS_NEW]);
  292.         if (count($Basket) < 1) {
  293.             return new JsonResponse(['success' => false'error' => 'Кошик пустий']);
  294.         }
  295.         foreach ($Basket as $item) {
  296.             $item->setStatus(Basket::STATUS_WITHOUT_PAYED_PENDING);
  297.             $item->setUpdatedAt(new DateTime());
  298.             $this->em->persist($item);
  299.             $this->em->flush();
  300.         }
  301.         return $this->formManager->saveWithoutPayOrderForm($request$this->getDealer(), $this->getUser());
  302.     }
  303.     public function callMeForm(Request $request): JsonResponse
  304.     {
  305.         return $this->formManager->saveCallMeForm($request$request->get('formType') ?? FormManager::TYPE_CREDIT_FORM);
  306.     }
  307.     public function callMeFormWithDealers(Request $request): JsonResponse
  308.     {
  309.         return $this->formManager->saveCallMeFormWithDealers($request);
  310.     }
  311.     public function tiresHotelForm(Request $request): JsonResponse
  312.     {
  313.         $dealer $this->em->getRepository(Dealer::class)->findOneBy(['id' => $request->get('tires_hotel')['dealers']]);
  314.         return $this->formManager->saveTiresHotelForm($request$dealer);
  315.     }
  316.     public function serviceConsultForm(Request $request): JsonResponse
  317.     {
  318.         $dealer $this->em->getRepository(Dealer::class)->findOneBy(['id' => $request->get('service_consult')['services']]);
  319.         return $this->formManager->saveServiceConsultForm($request$request->get('formType') ?? FormManager::TYPE_SERVICE_FORM$dealer);
  320.     }
  321. }