src/Controller/Afd/ContratController.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Afd;
  3. use App\Repository\AdditionnalSurveyRepository;
  4. use App\Repository\ContractRepository;
  5. use App\Repository\ContractStepRepository;
  6. use App\Repository\InsurerRepository;
  7. use App\Repository\CriteriaRepository;
  8. use App\Repository\DocumentRepository;
  9. use App\Repository\DocumentTypeRepository;
  10. use App\Repository\GarantyRepository;
  11. use App\Repository\JsonSurveyRepository;
  12. use App\Repository\LoanRepository;
  13. use App\Repository\QuoteApiRepository;
  14. use App\Service\Afd\ChartService;
  15. use App\Form\UploadFilesToPersoType;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Validator\Validator\ValidatorInterface;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\JsonResponse;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\RequestStack;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use App\Service\Afd\EncryptorService;
  25. use App\Entity\Document;
  26. use App\Service\Afd\DocumentService;
  27. /**
  28.  * @Route("/contract", name="contract")
  29.  */
  30. class ContratController extends AbstractController
  31. {
  32.     public function __construct(RequestStack $requestStackChartService $chartService)
  33.     {
  34.         $this->session $requestStack->getSession();
  35.         $this->chartService $chartService;
  36.     }
  37.     /**
  38.      * @Route("/index", name="_index")
  39.      */
  40.     public function index(ContractRepository $contractRepository): Response
  41.     {
  42.         $contracts $contractRepository->getContractNotDeleted();
  43.         return $this->render('/contract/index.html.twig', [
  44.             'contracts' => array_reverse($contracts),
  45.             'uniqUsers' => $this->chartService->getUniqUsers()
  46.         ]);
  47.     }
  48.     /**
  49.      * @Route("/show/{id}", name="_show")
  50.      */
  51.     public function show(
  52.         ContractRepository     $contractRepository,
  53.         ContractStepRepository $contractStepRepository,
  54.         QuoteApiRepository     $quoteApiRepository,
  55.         LoanRepository         $loanRepository,
  56.         JsonSurveyRepository   $jsonSurveyRepository,
  57.         DocumentTypeRepository $documentTypeRepository,
  58.                                $id
  59.     ): Response
  60.     {
  61.         $contract $contractRepository->find($id);
  62.         $step $contractStepRepository->findOneBy(['contract' => $contract]);
  63.         $jsonSurvey $jsonSurveyRepository->findOneBy(['contractId' => $contract]);
  64.         $jsonQuote $quoteApiRepository->findOneBy(['contractId' => $contract]);
  65.         $documentsType $documentTypeRepository->findall();
  66.         $periodicity "";
  67.         if ($jsonSurvey != null) {
  68.             $survey json_decode($jsonSurvey->getSurvey());
  69.             if (!isset($survey->question39)) {
  70.                 $survey->question39 "Prélèvement";
  71.                 $survey->question40 "Mensuel";
  72.             }
  73.             if ($survey->question39 == "Prélèvement") {
  74.                 $periodicity $survey->question40;
  75.             } else {
  76.                 $periodicity $survey->question41;
  77.             }
  78.         }
  79.         $loans $loanRepository->findBy(['contractIdcontract' => $contract]);
  80.         $lemoine = [00];
  81.         $json_qs json_decode($jsonSurvey->getSurvey());
  82.         if ($contract->getCompany()->getIdcompany() == 2) {
  83.             $lemoine = [(isset($json_qs->question005) and $json_qs->question005 === "Oui"), (isset($json_qs->question010) and $json_qs->question010 === "Oui")];
  84.         }
  85.         if($step != null) {
  86.             return $this->render('/contract/show.html.twig', [
  87.                 'contract' => $contract,
  88.                 'loans' => $loans,
  89.                 'periodicity' => $periodicity,
  90.                 'quote' => json_decode($jsonQuote->getQuote()),
  91.                 'survey' => json_decode($jsonSurvey->getSurvey()),
  92.                 'documentsType' => $documentsType,
  93.                 'lemoine' => $lemoine,
  94.                 'step' => $step->getCount()
  95.             ]);
  96.         }else{
  97.             return $this->render('/contract/show.html.twig', [
  98.                 'contract' => $contract,
  99.                 'loans' => $loans,
  100.                 'periodicity' => $periodicity,
  101.                 'quote' => json_decode($jsonQuote->getQuote()),
  102.                 'survey' => json_decode($jsonSurvey->getSurvey()),
  103.                 'documentsType' => $documentsType,
  104.                 'lemoine' => $lemoine,
  105.                 'step' => '0'
  106.             ]);
  107.         }
  108.     }
  109.     /**
  110.      * @Route("/delete2/{id}", name="_delete2")
  111.      */
  112.     public function deleteContract(
  113.         $id,
  114.         ContractRepository $contractRepository,
  115.         EntityManagerInterface $em
  116.     ): Response
  117.     {
  118.         $contrat $contractRepository->find($id);
  119.         $contrat->setIsDeleted(true);
  120.         $em->persist($contrat);
  121.         $em->flush();
  122.         return $this->redirectToRoute('contract_index');
  123.     }
  124.     /**
  125.      * @Route("/delete/{id}", name="_delete")
  126.      */
  127.     public function delete(
  128.         int                         $id,
  129.         ContractRepository          $contractRepository,
  130.         JsonSurveyRepository        $jsonSurveyRepository,
  131.         LoanRepository              $loanRepository,
  132.         GarantyRepository           $garantyRepository,
  133.         QuoteApiRepository          $quoteApiRepository,
  134.         CriteriaRepository          $criteriaRepository,
  135.         EntityManagerInterface      $em,
  136.         AdditionnalSurveyRepository $additionnalSurveyRepository,
  137.         DocumentRepository          $documentRepository
  138.     ): Response
  139.     {
  140.         $contrats $contractRepository->findby(['folderId' => $id]);
  141.         foreach ($contrats as $contrat) {
  142.             $json $jsonSurveyRepository->findBy(['contractId' => $contrat]);
  143.             $loans $loanRepository->findBy(['contractIdcontract' => $contrat]);
  144.             $criteria $criteriaRepository->findBy(['contract' => $contrat]);
  145.             $additionnalSurey $additionnalSurveyRepository->findBy(['contract' => $contrat]);
  146.             $quoteApi $quoteApiRepository->findBy(['contractId' => $contrat]);
  147.             $documents $documentRepository->findBy(['contract' => $contrat]);
  148.             foreach ($additionnalSurey as $s) {
  149.                 $em->remove($s);
  150.             }
  151.             foreach ($documents as $d) {
  152.                 $em->remove($d);
  153.             }
  154.             $em->flush();
  155.             $em->remove($contrat);
  156.             foreach ($loans as $loan) {
  157.                 $garanties $garantyRepository->findBy(['fkLoan' => $loan->getIdloan()]);
  158.                 foreach ($garanties as $garanty) {
  159.                     $em->remove($garanty);
  160.                 }
  161.                 $em->remove($loan);
  162.             }
  163.             foreach ($criteria as $criterion) {
  164.                 $em->remove($criterion);
  165.             }
  166.             foreach ($additionnalSurey as $survey) {
  167.                 $em->remove($survey);
  168.             }
  169.             foreach ($json as $j) {
  170.                 $em->remove($j);
  171.             }
  172.             if (count($quoteApi) > 0) {
  173.                 foreach ($quoteApi as $q) {
  174.                     $em->remove($q);
  175.                 }
  176.             }
  177.             try {
  178.                 $em->flush();
  179.             } catch (\Exception $e) {
  180.                 dd($e);
  181.             };
  182.         }
  183.         return $this->json([
  184.             'response' => 200
  185.         ]);
  186.     }
  187.     /**
  188.      * @param Request $request
  189.      * @param ValidatorInterface $validator
  190.      * @param ContractRepository $contractRepository
  191.      * @param EntityManagerInterface $em
  192.      * @param $id
  193.      * @return Response
  194.      *
  195.      * @Route("/adComment/{id}", name="_add_comment")
  196.      */
  197.     function editComment(
  198.         Request                $request,
  199.         ValidatorInterface     $validator,
  200.         ContractRepository     $contractRepository,
  201.         EntityManagerInterface $em,
  202.                                $id): Response
  203.     {
  204.         if ($request->isXmlHttpRequest()) {
  205.             $contract $contractRepository->find($id);
  206.             $comment $request->request->get('comment');
  207.             $contract->setComment($comment);
  208.             $errors $validator->validate($contract);
  209.             if (count($errors) > 0) {
  210.                 return new JsonResponse(["response" => 400"error" => $errors[0]->getMessage()]);
  211.             } else {
  212.                 $em->persist($contract);
  213.                 $em->flush();
  214.             }
  215.         }
  216.         return new JsonResponse(["response" => 200]);
  217.     }
  218.     /**
  219.      * @param Request $request
  220.      * @return Response
  221.      *
  222.      * @Route("/addDocument/{id}/{co}", name="_add_doc")
  223.      */
  224.     function addDocument(Request $request$id$co,
  225.                          ContractRepository     $contractRepository,
  226.                          ContractStepRepository $contractStepRepository,
  227.                          InsurerRepository      $insurerRepository,
  228.                          DocumentService        $documentService
  229.                         ): Response
  230.     {
  231.         $contract $contractRepository->find($id);
  232.         $insurer $insurerRepository->find($co);
  233.         $form $this->createForm(UploadFilesToPersoType::class);
  234.         $form->handleRequest($request);
  235.         if ($form->isSubmitted() && $form->isValid()) {
  236.             $task $form->getData();
  237.             foreach (['BPA' => 21'CIA' => 20] as $toFetch => $type) {
  238.                 $documentService->uploadDocument($insurer$task[$toFetch], $type$toFetch$id);
  239.             }
  240.             $contractStep $contractStepRepository->findOneBy(['contract' => $contract'insurer' => $insurer]);
  241.             $contractStep->setCount(1);
  242.             $em $this->getDoctrine()->getManager();
  243.             $em->persist($contractStep);
  244.             $em->flush();
  245.             return $this->redirectToRoute('contract_show', ['id' => $id]);
  246.         }
  247.         return $this->render('/contract/addDoc.html.twig', [
  248.             'form' => $form->createView(),
  249.         ]);
  250.     }
  251. }