src/AdminBundle/Controller/AjaxController.php line 115

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Controller;
  3. use CoreBundle\Entity\AdminLog;
  4. use CoreBundle\Entity\Dealer;
  5. use CoreBundle\Model\Api\AutoRia\AutoRia;
  6. use DateTime;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use InsuranceBundle\Entity\Coefficient;
  9. use InsuranceBundle\Model\Program;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\Finder\Exception\AccessDeniedException;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  15. class AjaxController extends AbstractController
  16. {
  17.     public function add(Request $RequestProgram $programModel): JsonResponse
  18.     {
  19.         $programModel->addOrUpdateBase($Request);
  20.         return new JsonResponse(['success' => 'true']);
  21.     }
  22.     public function getModels(Request $RequestAutoRia $autoRia): JsonResponse
  23.     {
  24.         $brandId $Request->get('brandId');
  25.         $models $autoRia->getModels($brandId);
  26.         return $this->json(['data' => $models]);
  27.     }
  28.     public function editOption(Request $RequestProgram $programModel): JsonResponse
  29.     {
  30.         $type $Request->request->get('type');
  31.         switch ($type) {
  32.             case 'option':
  33.                 $programModel->addOrUpdateOption($Request);
  34.                 break;
  35.             case 'list':
  36.                 $programModel->addOrUpdateList($Request);
  37.                 break;
  38.         }
  39.         return new JsonResponse(['success' => 'true']);
  40.     }
  41.     public function data(Request $RequestEntityManagerInterface $emProgram $programModel): JsonResponse
  42.     {
  43.         $id $Request->get('id');
  44.         $Coefficient $em->getRepository(Coefficient::class)->find($id);
  45.         if (!$Coefficient) {
  46.             return new JsonResponse(['success' => 'false']);
  47.         }
  48.         return new JsonResponse(['success' => true'data' => $programModel->coefficientToArray($Coefficient)]);
  49.     }
  50.     public function state(Request $RequestEntityManagerInterface $em): JsonResponse
  51.     {
  52.         $id $Request->get('id');
  53.         $Coefficient $em->getRepository(Coefficient::class)->find($id);
  54.         if (!$Coefficient) {
  55.             return new JsonResponse(['success' => 'false']);
  56.         }
  57.         $Coefficient->setState($Request->request->get('state'));
  58.         $em->persist($Coefficient);
  59.         $em->flush();
  60.         return new JsonResponse(['success' => 'true']);
  61.     }
  62.     public function deleteRateSave(Request $RequestEntityManagerInterface $em): JsonResponse
  63.     {
  64.         $dealerId $Request->request->get('dealer');
  65.         $rate $Request->request->get('rate');
  66.         $rateIn $Request->request->get('rate_in_delivery');
  67.         $user $this->getUser();
  68.         $dealer $user->getDealer();
  69.         if (
  70.             (!$user->hasRole('ROLE_SUPER_ADMIN') && !$dealer) ||
  71.             (!$user->hasRole('ROLE_SUPER_ADMIN') && $dealer && $dealer->getId() != $dealerId)
  72.         ) {
  73.             throw new AccessDeniedException;
  74.         }
  75.         $dealer $em->getRepository(Dealer::class)->find($dealerId);
  76.         if (!$dealer) {
  77.             throw new NotFoundHttpException;
  78.         }
  79.         $log = new AdminLog();
  80.         $log->setDateCreate(new DateTime());
  81.         $log->setUser($user);
  82.         $log->setAfterData(json_encode(['rate' => $rate'in_rate' => $rateIn]));
  83.         $log->setBeforeData(json_encode(['rate' => $dealer->getRate(), 'in_rate' => $dealer->getRateInDelivery()]));
  84.         $log->setEntityId($dealer->getId());
  85.         $log->setEntityType(get_class($dealer));
  86.         $log->setDealer($user->getDealer());
  87.         $em->persist($log);
  88.         //TODO remove unnecessary flushes
  89.         $em->flush();
  90.         $dealer->setRate((float)$rate);
  91.         $dealer->setRateInDelivery((float)$rateIn);
  92.         $em->persist($log);
  93.         //TODO remove unnecessary flushes
  94.         $em->flush();
  95.         $em->persist($dealer);
  96.         $em->flush();
  97.         return new JsonResponse(['success' => true]);
  98.     }
  99.     public function getDealers(EntityManagerInterface $em): JsonResponse
  100.     {
  101.         $dealers = [
  102.             'dealers' => [],
  103.             'subDealers' => [],
  104.         ];
  105.         $dealersEntities =
  106.             $em->getRepository(Dealer::class)->findAll();
  107.         foreach ($dealersEntities as $dealer) {
  108.             $dealers['dealers'][] = [
  109.                 'id' => $dealer->getId(),
  110.                 'name' => $dealer->getName(),
  111.             ];
  112.         }
  113.         $subDealersEntities =
  114.             $em->getRepository(\ImporterBundle\Entity\Dealer::class)->findAll();
  115.         foreach ($subDealersEntities as $subDealer) {
  116.             $dealers['subDealers'][] = [
  117.                 'id' => $subDealer->getId(),
  118.                 'name' => $subDealer->getName(),
  119.             ];
  120.         }
  121.         return new JsonResponse($dealers);
  122.     }
  123.     public function setUserDealer(Request $requestEntityManagerInterface $em)
  124.     {
  125.         $dealerId $request->request->get('user_dealer');
  126.         $subDealerId $request->request->get('user_sub_dealer');
  127.         $user $this->getUser();
  128.         if ($dealerId) {
  129.             $dealerEntity $em->getRepository(Dealer::class)->find($dealerId);
  130.             if (!$dealerEntity) {
  131.                 return new JsonResponse(['success' => false]);
  132.             }
  133.             $user->setDealer($dealerEntity);
  134.         }
  135.         if ($subDealerId) {
  136.             $subDealerEntity $em->getRepository(\ImporterBundle\Entity\Dealer::class)->find($subDealerId);
  137.             if (!$subDealerEntity) {
  138.                 return new JsonResponse(['success' => false]);
  139.             }
  140.             $user->setSubDealer($subDealerEntity);
  141.         }
  142.         $em->persist($user);
  143.         $em->flush();
  144.         return new JsonResponse(['success' => true]);
  145.     }
  146. }