src/Controller/SuiviInstallationTransformationController.php line 902

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Formation;
  4. use App\Entity\User;
  5. use App\Helper\Helper;
  6. use App\Entity\Fiche\Infrastructure\RemplisseurTransformation;
  7. use App\Repository\OpCommunalRepository;
  8. use App\Repository\OpRegionaleRepository;
  9. use App\Repository\OrganisationPaysanneFiliereRepository;
  10. use App\Service\Fiche\InstallationTransformationService;
  11. use DateTime;
  12. use Doctrine\ORM\NonUniqueResultException;
  13. use Ramsey\Uuid\Uuid;
  14. use App\Helper\ConstApp;
  15. use App\Service\FicheService;
  16. use App\Entity\EquipementMachine;
  17. use App\Repository\PoleRepository;
  18. use App\Repository\UserRepository;
  19. use App\Repository\RegionRepository;
  20. use App\Entity\FactureTransformation;
  21. use App\Service\Fiche\FactureService;
  22. use App\Service\Fiche\FichierService;
  23. use App\Repository\FokontanyRepository;
  24. use Doctrine\ORM\EntityManagerInterface;
  25. use App\Repository\StatutFicheRepository;
  26. use App\Entity\InstallationTransformation;
  27. use App\Form\InstallationTransformationType;
  28. use Symfony\Component\HttpFoundation\Request;
  29. use App\Repository\CanalFinancementRepository;
  30. use Symfony\Component\HttpFoundation\Response;
  31. use App\Repository\EquipementMachineRepository;
  32. use Symfony\Component\Routing\Annotation\Route;
  33. use App\Service\Fiche\ResumeBeneficiaireService;
  34. use Symfony\Component\HttpFoundation\JsonResponse;
  35. use App\Repository\FactureTransformationRepository;
  36. use App\Repository\SuiviProductionTransfoRepository;
  37. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  38. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  39. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  40. /**
  41.  * @Route("/suivi/installation/transformation")
  42.  */
  43. class SuiviInstallationTransformationController extends AbstractController
  44. {
  45.     private ParameterBagInterface $params;
  46.     private FicheService $ficheService;
  47.     private FactureService $factureService;
  48.     private FichierService $fichierService;
  49.     private FactureTransformationRepository $factureTransformationRepo;
  50.     private ResumeBeneficiaireService $resumeBeneficiaireService;
  51.     private CanalFinancementRepository $canalFinancementRepository;
  52.     private EquipementMachineRepository $equipementMachineRepository;
  53.     private ConstApp $constApp;
  54.     private InstallationTransformationService $installationTransformationService;
  55.     private UserRepository $userRepository;
  56.     private OrganisationPaysanneFiliereRepository $organisationPaysanneFiliereRepository;
  57.     private Helper $helper;
  58.     public function __construct(
  59.         ParameterBagInterface                   $params,
  60.         FicheService                            $ficheService,
  61.         FactureService                          $factureService,
  62.         FichierService                          $fichierService,
  63.         FactureTransformationRepository         $factureTransformationRepo,
  64.         ResumeBeneficiaireService               $resumeBeneficiaireService,
  65.         CanalFinancementRepository              $canalFinancementRepository,
  66.         EquipementMachineRepository             $equipementMachineRepository,
  67.         ConstApp                                $constApp,
  68.         InstallationTransformationService       $installationTransformationService,
  69.         UserRepository                          $userRepository,
  70.         OrganisationPaysanneFiliereRepository $organisationPaysanneFiliereRepository,
  71.         Helper $helper
  72.     )
  73.     {
  74.         $this->params $params;
  75.         $this->ficheService $ficheService;
  76.         $this->factureService $factureService;
  77.         $this->fichierService $fichierService;
  78.         $this->factureTransformationRepo $factureTransformationRepo;
  79.         $this->resumeBeneficiaireService $resumeBeneficiaireService;
  80.         $this->canalFinancementRepository $canalFinancementRepository;
  81.         $this->equipementMachineRepository $equipementMachineRepository;
  82.         $this->constApp $constApp;
  83.         $this->installationTransformationService $installationTransformationService;
  84.         $this->userRepository $userRepository;
  85.         $this->organisationPaysanneFiliereRepository $organisationPaysanneFiliereRepository;
  86.         $this->helper $helper;
  87.     }
  88.     /**
  89.      * @Route("/", name="app_suivi_installation_transformation_index")
  90.      */
  91.     public function index(): Response
  92.     {
  93.         return $this->render('suivi_installation_transformation/index.html.twig', []);
  94.     }
  95.     /**
  96.      * @Route("/api/installation-transformation-list", name="app_suivi_installation_transformation_list")
  97.      */
  98.     public function getAllInstallationTransformation(Request $request): JsonResponse
  99.     {
  100.         $currentUser $this->getUser();
  101.         $user $this->userRepository->find($currentUser);
  102.         $profilUser $user->getProfil()->getId();
  103.         $profilName $user->getProfil()->getName();
  104.         $column $request->query->get("column") ?? "";
  105.         $value $request->query->get("value") ?? "";
  106.         $limit $request->query->get("limit") ? intval($request->query->get("limit")) : 0;
  107.         $page $request->query->get("page") ? intval($request->query->get("page")) : 0;
  108.         $offset = ($limit $page) - $limit;
  109.         $totalRows = [];
  110.         $ceps = [];
  111.         //-------Beginning of filter data by Locality level-------------
  112.         $userLevelLocality $user->getProfil()->getNiveauLocalite();
  113.         $userLocality = [];
  114.         $localityMethods $this->constApp->localityMethods();
  115.         if (isset($localityMethods[$userLevelLocality])) {
  116.             $method $localityMethods[$userLevelLocality];
  117.             foreach ($user->$method() as $locality) {
  118.                 $userLocality[] = $locality->getId();
  119.             }
  120.         }
  121.         //-------End of filter data by Locality level-------------
  122.         //Récuperation des données à afficher si l'utilisateur connecté est admin
  123.         if ($user->getProfil()->getNiveauLocalite() == "nat_") {
  124.             $ceps $this->installationTransformationService->getAllInstallationTransformation(
  125.                 $column$value$limit$offset, [], null
  126.             );
  127.             $totalRows $this->installationTransformationService->getAllInstallationTransformation(
  128.                 $column$valuenullnull, [], null
  129.             );
  130.         } else {
  131.             $ceps $this->installationTransformationService->getAllInstallationTransformation(
  132.                 $column$value$limit$offset,
  133.                 $userLocality,
  134.                 $userLevelLocality
  135.             );
  136.             $totalRows $this->installationTransformationService->getAllInstallationTransformation(
  137.                 $column$valuenullnull,
  138.                 $userLocality,
  139.                 $userLevelLocality
  140.             );
  141.         }
  142.         return new JsonResponse(
  143.             [
  144.                 'title' => 'Récuperation liste installation transformation',
  145.                 'message' => 'Récuperation avec succès',
  146.                 'status' => 'success',
  147.                 'data' => [
  148.                     'rows' => $ceps,
  149.                     'dataInfo' => [
  150.                         'totalRows' => count($totalRows),
  151.                         'limit' => $limit,
  152.                         'page' => $page,
  153.                     ]
  154.                 ]
  155.             ],
  156.             200,
  157.             ['Content-Type' => 'application/json']
  158.         );
  159.     }
  160.     /**
  161.      * @Route("/{id}/show", name="app_suivi_installation_transformation_show", methods={"GET", "POST"})
  162.      */
  163.     public function show(InstallationTransformation $installationTransformationRequest $requestRegionRepository $regionRepository): Response
  164.     {
  165.         $route $request->attributes->get("_route");
  166.         $form $this->createForm(InstallationTransformationType::class, $installationTransformation, [
  167.             'action' => $this->generateUrl('app_installation_transformation_new'),
  168.             'method' => 'POST'
  169.         ]);
  170.         $form->handleRequest($request);
  171.         $remplisseur $installationTransformation->getRemplisseurInitiale();
  172.         $dateNow = new DateTime();
  173.         $userConnect $this->getUser();
  174.         $user $this->userRepository->find($userConnect);
  175.         //Get region cir only for all infrastructure
  176.         $regions $user->getCoordinationZone() ? $user->getCoordinationZone()->getRegions() : $regionRepository->findAll();
  177.         $pole $installationTransformation->getPole();
  178.         $district $installationTransformation->getPole() && isset($installationTransformation->getPole()->getDistrict()[0]) ? $installationTransformation->getPole()->getDistrict()[0] : [];
  179.         $communes $district $district->getCommunes() : [];
  180.         //Filter commune
  181.         foreach ($communes as $commune) {
  182.             //Push if remplisseur found
  183.             foreach ($commune->getUsers() as $user) {
  184.                 //Get user CGEAF by commune
  185.                 if ($user->getProfil()->getId() == $this->params->get('profil_cgeaf')) {
  186.                     $dataCommunes[] = [
  187.                         'id' => $commune->getId(),
  188.                         'name' => $commune->getName(),
  189.                         'remplisseurs' => [
  190.                             'id' => $user->getId(),
  191.                             'name' => $user->getLastName()
  192.                         ]
  193.                     ];
  194.                 }
  195.             }
  196.         }
  197.         //Combine rempliseur meme commune
  198.         $communeList = [];
  199.         foreach ($dataCommunes as $item) {
  200.             $idCommune $item['id'];
  201.             if (!isset($communeList[$idCommune])) {
  202.                 $communeList[$idCommune] = [
  203.                     'id' => $item['id'],
  204.                     'name' => $item['name'],
  205.                     'remplisseurs' => []
  206.                 ];
  207.             }
  208.             // Ajouter le remplisseur dans la liste
  209.             $communeList[$idCommune]['remplisseurs'][] = $item['remplisseurs'];
  210.         }
  211.         $remplisseurs $installationTransformation->getRemplisseurTransformations();
  212.         $equipementMachine $this->equipementMachineRepository->findBy(['installationTransformation' => $installationTransformation]);
  213.         $canalFinancement $this->canalFinancementRepository->findAll();
  214.         $htmlViewFormFiche $this->renderView('suivi_installation_transformation/show.html.twig', [
  215.             'installationTransformation' => $installationTransformation,
  216.             'equipementMachines' => $equipementMachine,
  217.             'sourceFinancements' => $canalFinancement,
  218.             'dateNow' => $dateNow->format('d - m - Y'),
  219.             'user' => $remplisseur,
  220.             'form' => $form->createView(),
  221.             'route' => $route,
  222.             'remplisseurs' => $remplisseurs,
  223.             'regions' => $regions,
  224.             'pole' => $pole,
  225.             'district' => $district,
  226.             'communes' => $communeList,
  227.             'region' => $installationTransformation->getPole()->getRegion(),
  228.             'editMode' => true,
  229.             'show' => true
  230.         ]);
  231.         return new JsonResponse(
  232.             [
  233.                 'title' => 'Affichage suivi installation transformation',
  234.                 'message' => 'Affichage suivi installation transformation avec succès',
  235.                 'status' => 'success',
  236.                 'htmlViewFormFiche' => $htmlViewFormFiche,
  237.             ],
  238.             200,
  239.             ['Content-Type' => 'application/json']
  240.         );
  241.     }
  242.     /**
  243.      * @Route("/new", name="app_installation_transformation_new", methods={"GET", "POST"})
  244.      */
  245.     public function new(
  246.         Request                $request,
  247.         StatutFicheRepository  $statutFicheRepository,
  248.         RegionRepository       $regionRepository,
  249.         EntityManagerInterface $entityManager,
  250.         PoleRepository         $poleRepository,
  251.         FokontanyRepository    $fokontanyRepository,
  252.         OpCommunalRepository   $opCommunalRepository,
  253.         OpRegionaleRepository  $opRegionaleRepository
  254.     ): Response
  255.     {
  256.         $route $request->attributes->get("_route");
  257.         $installationTransformation = new InstallationTransformation();
  258.         $form $this->createForm(InstallationTransformationType::class, $installationTransformation, [
  259.             'action' => $this->generateUrl('app_installation_transformation_new'),
  260.             'method' => 'POST'
  261.         ]);
  262.         $form->handleRequest($request);
  263.         $remplisseur $this->getUser();
  264.         $userConnect $this->getUser();
  265.         $user $this->userRepository->find($userConnect);
  266.         //Get region cir only for all infrastructure
  267.         $regions $user->getCoordinationZone() ? $user->getCoordinationZone()->getRegions() : $regionRepository->findAll();
  268.         $dateNow = new DateTime();
  269.         $facture = new FactureTransformation();
  270.         $sourcesFinancement $this->canalFinancementRepository->findAll();
  271.         $htmlViewFormFiche $this->renderView('suivi_installation_transformation/new.html.twig', [
  272.             'installationTransformation' => $installationTransformation,
  273.             'sourcesFinancements' => $sourcesFinancement,
  274.             'dateNow' => $dateNow->format('d - m - Y'),
  275.             'user' => $remplisseur,
  276.             'form' => $form->createView(),
  277.             'route' => $route,
  278.             'fokontany' => null,
  279.             'regions' => $regions,
  280.             'editMode' => false
  281.         ]);
  282.         if ($form->isSubmitted()) {
  283.             if ($request->get('equipement')) {
  284.                 $this->createEquipementMachine($request->get('equipement'), $entityManager$installationTransformation);
  285.             }
  286.             //récuperation des données depuis formulaire
  287.             $poleId $request->request->get("pole");
  288.             if (isset($request->files->get("installation_transformation")["fichier"])) {
  289.                 $files $request->files->get("installation_transformation")["fichier"];
  290.             } else {
  291.                 $files = [];
  292.             }
  293.             $stringFilesDeleted $request->request->get("fichier_deleted");
  294.             //recuperation des factures de la fiche
  295.             $factureEtudes $request->request->get("etude");
  296.             $factureTravaux $request->request->get("travaux");
  297.             $stringFactureDeleted $request->request->get("facture_deleted");
  298.             //Suppression des fichiers selectionnés
  299.             if ($stringFilesDeleted != null && $stringFilesDeleted != "0") {
  300.                 $tabFichierDeleted explode(","$stringFilesDeleted);
  301.                 $this->fichierService->deleteFichier($tabFichierDeleted);
  302.             }
  303.             $opCommunal $request->request->get("installation_transformation")["opCommunal"];
  304.             $opRegionale $request->request->get("installation_transformation")["opRegionale"];
  305.             if ($opCommunal != "") {
  306.                 $findOpCommunal $opCommunalRepository->find((int)$opCommunal);
  307.                 $installationTransformation->setOpCommunal($findOpCommunal);
  308.             }
  309.             if ($opRegionale != "") {
  310.                 $finOpRegionale $opRegionaleRepository->find((int)$opRegionale);
  311.                 $installationTransformation->setOpRegionale($finOpRegionale);
  312.             }
  313.             $uuid Uuid::uuid4();
  314.             $installationTransformation->setUuid($uuid);
  315.             $installationTransformation->setPole($poleRepository->find((int)$poleId));
  316.             $installationTransformation->setRemplisseurInitiale($remplisseur);
  317.             $installationTransformation->setStatutFiche($statutFicheRepository->find(1));
  318.             $installationTransformation->setCreatedAt(new \DateTimeImmutable('now'));
  319.             $installationTransformation->setUpdatedAt(new \DateTimeImmutable('now'));
  320.             $entityManager->persist($installationTransformation);
  321.             //get all remplisseur
  322.             $remplisseurIds $request->request->all('installation_transformation')['remplisseur'] ?? [];
  323.             if ($remplisseurIds) {
  324.                 foreach ($remplisseurIds as $remplisseurId) {
  325.                     $user $this->userRepository->find(intval($remplisseurId));
  326.                     //Insert each remplisseur for the transformation
  327.                     $remplisseurTransformation = new RemplisseurTransformation();
  328.                     $remplisseurTransformation->setRemplisseur($user);
  329.                     $remplisseurTransformation->setUniteTransformation($installationTransformation);
  330.                     $entityManager->persist($remplisseurTransformation);
  331.                 }
  332.             }
  333.             //Traitement et creation objet Facture etude
  334.             $etapeEtude $this->params->get("pi_etape_etude");
  335.             $this->factureService->createFacture(
  336.                 $factureEtudes$facture$etapeEtude$installationTransformation$this->factureTransformationRepo
  337.             );
  338.             //Traitement et creation objet Facture Travaux
  339.             $etapeTravaux $this->params->get("pi_etape_travaux");
  340.             $this->factureService->createFacture(
  341.                 $factureTravaux$facture$etapeTravaux$installationTransformation$this->factureTransformationRepo
  342.             );
  343.             //Suppression des factures selectionnés
  344.             if ($stringFactureDeleted != null && $stringFactureDeleted != "0") {
  345.                 $tabFactreDeleted explode(","$stringFactureDeleted);
  346.                 $this->factureService->deleteFacture($this->factureTransformationRepo$tabFactreDeleted);
  347.             }
  348.             $entityManager->flush();
  349.             //Traitement et creation objet Fichier et affectation des fichiers dans l'objet
  350.             $this->fichierService->createFile($files$installationTransformation"installation-transformation");
  351.             $entityManager->flush();
  352.         }
  353.         return new JsonResponse(
  354.             [
  355.                 'title' => 'Création fiche suivi installation transformation',
  356.                 'message' => 'Création fiche suivi installation transfromation avec succès',
  357.                 'status' => 'success',
  358.                 'htmlViewFormFiche' => $htmlViewFormFiche,
  359.             ],
  360.             200,
  361.             ['Content-Type' => 'application/json']
  362.         );
  363.     }
  364.     /**
  365.      * @throws \Exception
  366.      */
  367.     public function createEquipementMachine($equipememnt$entityManager$installationTransformation)
  368.     {
  369.         for ($i 0$i count($equipememnt); $i++) {
  370.             $uuid Uuid::uuid4();
  371.             $item $equipememnt['equipement' . ($i 1)];
  372.             $findEquipementMachine $this->equipementMachineRepository->find(intval($item['id']));
  373.             $findSourceFinancement $this->canalFinancementRepository->find(intval($item['sourceFinancement']));
  374.             if (!$findEquipementMachine) {
  375.                 $equipementMachine = new EquipementMachine();
  376.                 $equipementMachine->setInstallationTransformation($installationTransformation);
  377.                 $equipementMachine->setLibelle($item['libelle']);
  378.                 $equipementMachine->setNombre(intval($item['nombre']));
  379.                 $equipementMachine->setPrixUnitaire(intval($item['prixUnitaire']));
  380.                 $equipementMachine->setCoutTotalAchat(intval($item['coutTotalAchat']));
  381.                 $equipementMachine->setDateAcquisition((new DateTime($item['dateAcquisition'])));
  382.                 $equipementMachine->setEtatMateriel($item['etatMateriel']);
  383.                 $equipementMachine->setDateVerification((new DateTime($item['dateVerification'])));
  384.                 $equipementMachine->setSourceFinancement($findSourceFinancement);
  385.                 $equipementMachine->setUuid($uuid);
  386.                 $entityManager->persist($equipementMachine);
  387.             } else {
  388.                 $findEquipementMachine->setLibelle($item['libelle']);
  389.                 $findEquipementMachine->setNombre(intval($item['nombre']));
  390.                 $findEquipementMachine->setPrixUnitaire(intval($item['prixUnitaire']));
  391.                 $findEquipementMachine->setCoutTotalAchat(intval($item['coutTotalAchat']));
  392.                 $findEquipementMachine->setDateAcquisition((new DateTime($item['dateAcquisition'])));
  393.                 $findEquipementMachine->setEtatMateriel($item['etatMateriel']);
  394.                 $findEquipementMachine->setDateVerification((new DateTime($item['dateVerification'])));
  395.                 $findEquipementMachine->setSourceFinancement($findSourceFinancement);
  396.                 $entityManager->persist($findEquipementMachine);
  397.             }
  398.         }
  399.     }
  400.     /**
  401.      * @Route("/{id}/edit", name="app_installation_transformation_edit", methods={"GET", "POST"})
  402.      */
  403.     public function edit(
  404.         InstallationTransformation $installationTransformation,
  405.         Request                    $request,
  406.         EntityManagerInterface     $entityManager,
  407.         PoleRepository             $poleRepository,
  408.         StatutFicheRepository      $statutFicheRepo,
  409.         RegionRepository           $regionRepository,
  410.         OpCommunalRepository       $opCommunalRepository,
  411.         OpRegionaleRepository      $opRegionaleRepository
  412.     ): Response
  413.     {
  414.         $route $request->attributes->get("_route");
  415.         $statutFiche $this->constApp->statutFiche();
  416.         $form $this->createForm(InstallationTransformationType::class, $installationTransformation, [
  417.             'action' => $this->generateUrl(
  418.                 'app_installation_transformation_edit',
  419.                 array('id' => $installationTransformation->getId())
  420.             ),
  421.             'method' => 'POST'
  422.         ]);
  423.         $form->handleRequest($request);
  424.         $remplisseur $installationTransformation->getRemplisseurInitiale();
  425.         $dateNow = new DateTime();
  426.         $facture = new FactureTransformation();
  427.         $userConnect $this->getUser();
  428.         $user $this->userRepository->find($userConnect);
  429.         //Get region cir only for all infrastructure
  430.         $regions $user->getCoordinationZone() ? $user->getCoordinationZone()->getRegions() : $regionRepository->findAll();
  431.         $pole $installationTransformation->getPole();
  432.         $district $installationTransformation->getPole() && isset($installationTransformation->getPole()->getDistrict()[0]) ? $installationTransformation->getPole()->getDistrict()[0] : [];
  433.         $communes $district $district->getCommunes() : [];
  434.         $dataCommunes = [];
  435.         //Filter commune
  436.         foreach ($communes as $commune) {
  437.             //Push if remplisseur found
  438.             foreach ($commune->getUsers() as $user) {
  439.                 //Get user CGEAF by commune
  440.                 if ($user->getProfil()->getId() == $this->params->get('profil_cgeaf')) {
  441.                     $dataCommunes[] = [
  442.                         'id' => $commune->getId(),
  443.                         'name' => $commune->getName(),
  444.                         'remplisseurs' => [
  445.                             'id' => $user->getId(),
  446.                             'name' => $user->getLastName()
  447.                         ]
  448.                     ];
  449.                 }
  450.             }
  451.         }
  452.         //Combine rempliseur meme commune
  453.         $communeList = [];
  454.         foreach ($dataCommunes as $item) {
  455.             $idCommune $item['id'];
  456.             if (!isset($communeList[$idCommune])) {
  457.                 $communeList[$idCommune] = [
  458.                     'id' => $item['id'],
  459.                     'name' => $item['name'],
  460.                     'remplisseurs' => []
  461.                 ];
  462.             }
  463.             // Ajouter le remplisseur dans la liste
  464.             $communeList[$idCommune]['remplisseurs'][] = $item['remplisseurs'];
  465.         }
  466.         $remplisseurs $installationTransformation->getRemplisseurTransformations();
  467.         $equipementMachine $this->equipementMachineRepository->findBy(['installationTransformation' => $installationTransformation]);
  468.         $canalFinancement $this->canalFinancementRepository->findAll();
  469.         $amount $installationTransformation->getNumeroContratEtude()->getAmount();
  470.         $htmlViewFormFiche $this->renderView('suivi_installation_transformation/edit.html.twig', [
  471.             'installationTransformation' => $installationTransformation,
  472.             'equipementMachines' => $equipementMachine,
  473.             'sourceFinancements' => $canalFinancement,
  474.             'dateNow' => $dateNow->format('d - m - Y'),
  475.             'user' => $remplisseur,
  476.             'form' => $form->createView(),
  477.             'route' => $route,
  478.             'remplisseurs' => $remplisseurs,
  479.             'regions' => $regions,
  480.             'pole' => $pole,
  481.             'district' => $district,
  482.             'communes' => $communeList,
  483.             'region' => $installationTransformation->getPole()->getRegion(),
  484.             'editMode' => true,
  485.         ]);
  486.         if ($form->isSubmitted()) {
  487.             //récuperation des données depuis formulaire
  488.             $poleId $request->request->get("pole");
  489.             if (isset($request->files->get("installation_transformation")["fichier"])) {
  490.                 $files $request->files->get("installation_transformation")["fichier"];
  491.             } else {
  492.                 $files = [];
  493.             }
  494.             $stringFilesDeleted $request->request->get("fichier_deleted");
  495.             //recuperation des factures de la fiche
  496.             $factureEtudes $request->request->get("etude");
  497.             $factureTravaux $request->request->get("travaux");
  498.             $stringFactureDeleted $request->request->get("facture_deleted");
  499.             //Traitement et creation objet Fichier et affectation des fichiers dans l'objet
  500.             $this->fichierService->createFile($files$installationTransformation"installation-transformation");
  501.             //Suppression des fichiers selectionnés
  502.             if ($stringFilesDeleted != null && $stringFilesDeleted != "0") {
  503.                 $tabFichierDeleted explode(","$stringFilesDeleted);
  504.                 $this->fichierService->deleteFichier($tabFichierDeleted);
  505.             }
  506.             $opCommunal $request->request->get("installation_transformation")["opCommunal"];
  507.             $opRegionale $request->request->get("installation_transformation")["opRegionale"];
  508.             //Reset to null before set a new value
  509.             $installationTransformation->setOpCommunal(null);
  510.             $installationTransformation->setOpRegionale(null);
  511.             if ($opCommunal != "") {
  512.                 $findOpCommunal $opCommunalRepository->find((int)$opCommunal);
  513.                 $installationTransformation->setOpCommunal($findOpCommunal);
  514.             }
  515.             if ($opRegionale != "") {
  516.                 $finOpRegionale $opRegionaleRepository->find((int)$opRegionale);
  517.                 $installationTransformation->setOpRegionale($finOpRegionale);
  518.             }
  519.             $installationTransformation->setPole($poleRepository->find((int)$poleId));
  520.             if ($installationTransformation->getStatutFiche()->getId() == $statutFiche['REFUSE_CIR']['id']) {
  521.                 $installationTransformation->setStatutFiche($statutFicheRepo->find($statutFiche['EN_ATTENTE']['id']));
  522.             }
  523.             $installationTransformation->setUpdatedAt(new \DateTimeImmutable('now'));
  524.             $entityManager->persist($installationTransformation);
  525.             //Clean remplisseur before update
  526.             $this->installationTransformationService->removeAllRemplisseurTransformation($installationTransformation->getId());
  527.             //Clean doctrine memory
  528.             $installationTransformation->getRemplisseurTransformations()->clear();
  529.             //get all remplisseur
  530.             $remplisseurIds $request->request->all('installation_transformation')['remplisseur'] ?? [];
  531.             if ($remplisseurIds) {
  532.                 foreach ($remplisseurIds as $remplisseurId) {
  533.                     $user $this->userRepository->find(intval($remplisseurId));
  534.                     //Insert each remplisseur for the installation_transformation
  535.                     $remplisseurTransformation = new RemplisseurTransformation();
  536.                     $remplisseurTransformation->setRemplisseur($user);
  537.                     $remplisseurTransformation->setUniteTransformation($installationTransformation);
  538.                     $entityManager->persist($remplisseurTransformation);
  539.                 }
  540.             }
  541.             //Traitement et creation objet Facture etude
  542.             $etapeEtude $this->params->get("pi_etape_etude");
  543.             $this->factureService->createFacture(
  544.                 $factureEtudes$facture$etapeEtude$installationTransformation$this->factureTransformationRepo
  545.             );
  546.             //Traitement et creation objet Facture Travaux
  547.             $etapeTravaux $this->params->get("pi_etape_travaux");
  548.             $this->factureService->createFacture(
  549.                 $factureTravaux$facture$etapeTravaux$installationTransformation$this->factureTransformationRepo
  550.             );
  551.             //Suppression des factures selectionnés
  552.             if ($stringFactureDeleted != null && $stringFactureDeleted != "0") {
  553.                 $tabFactreDeleted explode(","$stringFactureDeleted);
  554.                 $this->factureService->deleteFacture($this->factureTransformationRepo$tabFactreDeleted);
  555.             }
  556.             //Suppression des equipements machines selectionnés
  557.             $stringEquipementDeleted $request->get('equipement_deleted');
  558.             if ($stringEquipementDeleted != "" && $stringEquipementDeleted != "0") {
  559.                 $tabEquipementDeleted explode(","$stringEquipementDeleted);
  560.                 foreach ($tabEquipementDeleted as $equipementDeleted) {
  561.                     $findEquipement $this->equipementMachineRepository->find(intval($equipementDeleted));
  562.                     $entityManager->remove($findEquipement);
  563.                 }
  564.             }
  565.             //Création des equipements machines s'il y a des nouveaux
  566.             if ($request->get('equipement')) {
  567.                 $this->createEquipementMachine($request->get('equipement'), $entityManager$installationTransformation);
  568.             }
  569.             $entityManager->flush();
  570.         }
  571.         return new JsonResponse(
  572.             [
  573.                 'title' => 'Affichage suivi installation transformation',
  574.                 'message' => 'Affichage suivi installation transformation avec succès',
  575.                 'status' => 'success',
  576.                 'htmlViewFormFiche' => $htmlViewFormFiche,
  577.             ],
  578.             200,
  579.             ['Content-Type' => 'application/json']
  580.         );
  581.     }
  582.     /**
  583.      * @Route("/api/list_product", name="app_installation_transformation_api_list_product", methods={"GET"})
  584.      */
  585.     public function getListProduct(): JsonResponse
  586.     {
  587.         return new JsonResponse(
  588.             [
  589.                 'title' => 'Récuperation des partenaires mise en oeuvre',
  590.                 'message' => 'Récuperation avec succès',
  591.                 'status' => 'success',
  592.                 'data' => $this->installationTransformationService->getProductService()
  593.             ],
  594.             200,
  595.             ['Content-Type' => 'application/json']
  596.         );
  597.     }
  598.     /**
  599.      * @Route("/api/insert_product", name="app_installation_transformation_api_insert_product", methods={"POST"})
  600.      * @throws NonUniqueResultException
  601.      */
  602.     public function insertProduct(): JsonResponse
  603.     {
  604.         $nameProduct $_POST['name_produit'];
  605.         $findProduct $this->installationTransformationService->findProductByName($nameProduct);
  606.         $message "";
  607.         $status "";
  608.         if ($findProduct) {
  609.             $message "Produit déjà existé";
  610.             $status 'error';
  611.         } else {
  612.             $this->installationTransformationService->insertProduct($nameProduct);
  613.             $message "Insertion avec succès";
  614.             $status 'success';
  615.         }
  616.         return new JsonResponse(
  617.             [
  618.                 'title' => 'Création de produit mise en oeuvre',
  619.                 'message' => $message,
  620.                 'status' => $status,
  621.             ],
  622.             200,
  623.             ['Content-Type' => 'application/json']
  624.         );
  625.     }
  626.     /**
  627.      * @Route("/mobile/{id}", name="app_installation_transformation_mobile",methods={"GET","POST"})
  628.      */
  629.     public function mobile(
  630.         InstallationTransformation       $installationTransformation,
  631.         SuiviProductionTransfoRepository $suiviProdTransfoRepo
  632.     ): Response
  633.     {
  634.         $user $this->getUser();
  635.         $niveauUser $user->getProfil()->getNiveau()->getid();
  636.         $profilUser $user->getProfil()->getId();
  637.         $niveauConst $this->constApp->niveauProfil();
  638.         $statutFiche $this->constApp->statutFiche();
  639.         $eafBeneficiaires $installationTransformation->getEafInstallationTransformations();
  640.         $suiviProductionTransfos $installationTransformation->getSuiviProductionTransfos();
  641.         $beneficiaireInstallations $this->resumeBeneficiaireService->getResumeBeneficiaire($eafBeneficiaires);
  642.         $niveau null;
  643.         $op null;
  644.         //Recuperation données validées par rapport au niveau de l'utilisateur
  645.         switch ($niveauUser) {
  646.             case $niveauConst['NIVEAU_POLE']['id'];
  647.                 $suiviProductionTransfos $suiviProdTransfoRepo->findBy([
  648.                     "statut" => [$statutFiche['EN_ATTENTE']['id'], $statutFiche['REFUSE_REGIONALE']['id']],
  649.                     "installationTransformation" => $installationTransformation
  650.                 ]);
  651.                 break;
  652.             case $niveauConst['NIVEAU_REGIONALE']['id'];
  653.                 $suiviProductionTransfos $suiviProdTransfoRepo->findBy([
  654.                     "statut" => [$statutFiche['VALIDE_POLE']['id'], $statutFiche['REFUSE_CIR']['id']],
  655.                     "installationTransformation" => $installationTransformation
  656.                 ]);
  657.                 break;
  658.             case $niveauConst['NIVEAU_CIR']['id'];
  659.                 $suiviProductionTransfos $suiviProdTransfoRepo->findBy([
  660.                     "statut" => [$statutFiche['VALIDE_REGIONALE']['id'], $statutFiche['REFUSE_NATIONALE']['id']],
  661.                     "installationTransformation" => $installationTransformation
  662.                 ]);
  663.                 break;
  664.             case $niveauConst['NIVEAU_NATIONALE']['id'];
  665.                 $suiviProductionTransfos $suiviProdTransfoRepo->findBy([
  666.                     "statut" => $statutFiche['VALIDE_CIR']['id'],
  667.                     "installationTransformation" => $installationTransformation
  668.                 ]);
  669.                 break;
  670.             default:
  671.                 # code...
  672.                 break;
  673.         }
  674.         //Récuperation des données à afficher si l'utilisateur connecté est admin
  675.         if ($user->getProfil()->getNiveauLocalite() == "nat_") {
  676.             $suiviProductionTransfos $suiviProdTransfoRepo->findBy(
  677.                 ["installationTransformation" => $installationTransformation]
  678.             );
  679.         }
  680.         $opType "";
  681.         if ($installationTransformation->getOpRegionale() == null && $installationTransformation->getOpCommunal() != null) {
  682.             $niveau "Communal";
  683.             $op $installationTransformation->getOpCommunal()->getOrganisationPaysanne();
  684.             $opType $this->constApp->opType()[$installationTransformation->getOpCommunal()->getType()];
  685.         }
  686.         if ($installationTransformation->getOpRegionale() != null && $installationTransformation->getOpCommunal() == null) {
  687.             $niveau "Régionale";
  688.             $op $installationTransformation->getOpRegionale()->getOrganisationPaysanne();
  689.             $opType $this->constApp->opType()[$installationTransformation->getOpRegionale()->getType()];
  690.         }
  691.         $filiereDeveloppes $this->organisationPaysanneFiliereRepository->findBy(
  692.             ['organisationPaysanne' => $op],
  693.             ['priorite' => 'ASC']
  694.         );
  695.         $resumeOpBeneficiary $this->installationTransformationService->getResumeOpBeneficiaryService($installationTransformation);
  696.         $resumeEafBeneficiary $this->installationTransformationService->getResumeEafBeneficiaryService($installationTransformation);
  697.         $resumeFormation $this->installationTransformationService->getResumeFormationReceivedService($installationTransformation);
  698.         return $this->render('suivi_installation_transformation/liste_donnee_mobile.html.twig', [
  699.             'controller_name' => 'Liste des suivi des installations de transformations',
  700.             'installationTransformation' => $installationTransformation,
  701.             'filiereDeveloppes' => $filiereDeveloppes,
  702.             'resumeOpBeneficiary' => $resumeOpBeneficiary,
  703.             'resumeEafBeneficiary' => $resumeEafBeneficiary,
  704.             'resumeFormation' => $resumeFormation,
  705.             'suiviProductionTransfos' => $suiviProductionTransfos,
  706.             'beneficiaireInstallations' => $beneficiaireInstallations,
  707.             'niveau' => $niveau,
  708.             'op' => $op,
  709.             'opType' => $opType
  710.         ]);
  711.     }
  712.     /**
  713.      * @Route("/mobile/{id}/api/remplisseur_commune/{type}", name="app_installation_transformation_remplisseur_by_commune",methods={"GET","POST"})
  714.      */
  715.     public function getCommunesByRemplisseur(
  716.         Request                    $request,
  717.         InstallationTransformation $installationTransformation,
  718.         string                     $type
  719.     ): JsonResponse
  720.     {
  721.         /**
  722.          * This function will return the list of communes by remplisseur
  723.          * And the data of the first index(commune) by type [eaf or formation or suivi]
  724.          */
  725.         $currentUser $this->getUser();
  726.         $user $this->userRepository->find($currentUser);
  727.         $niveauUser $user->getProfil()->getNiveau()->getid();
  728.         $column $request->query->get("column") ?? "";
  729.         $value $request->query->get("value") ?? "";
  730.         $limit $request->query->get("limit") ? intval($request->query->get("limit")) : 0;
  731.         $page $request->query->get("page") ? intval($request->query->get("page")) : 0;
  732.         $pjType $request->query->get("pj") ? intval($request->query->get("pj")) : null;
  733.         $offset = ($limit $page) - $limit;
  734.         $remplisseurs $installationTransformation->getRemplisseurTransformations();
  735.         $index 0;
  736.         $data = [];
  737.         $totalRows = [];
  738.         $data["firstIndexData"] = [];
  739.         $data["communes"] = [];
  740.         //Get Commune by remplisseur
  741.         foreach ($remplisseurs as $remplisseur) {
  742.             $communeRemplisseur $remplisseur->getRemplisseur()
  743.             && $remplisseur->getRemplisseur()->getCommunes()
  744.                 ? ($remplisseur->getRemplisseur()->getCommunes())[0] : null;
  745.             //Get Eaf or formation for first index(Remplisseur Commune)
  746.             if ($index == 0) {
  747.                 $result $this->getBeneficiaryOrEafOrFormationOrSuiviTransformationOrPj(
  748.                     $installationTransformation,
  749.                     $column,
  750.                     $value,
  751.                     $limit,
  752.                     $offset,
  753.                     $remplisseur->getRemplisseur(),
  754.                     $type,
  755.                     $pjType,
  756.                     $request
  757.                 );
  758.                 $data["firstIndexData"] = $result['data'];
  759.                 $totalRows $result['totalRows'];
  760.             }
  761.             //Push the current remplisseur commune
  762.             $data["communes"][] = [
  763.                 "id" => $communeRemplisseur->getId(),
  764.                 "name" => $communeRemplisseur->getName(),
  765.                 "remplisseur_id" => $remplisseur->getRemplisseur() ? $remplisseur->getRemplisseur()->getId() : '---',
  766.                 "remplisseur_name" => $remplisseur->getRemplisseur() ? $remplisseur->getRemplisseur()->getLastname() : '---',
  767.             ];
  768.             $index++;
  769.         }
  770.         $data["dataInfo"] = [
  771.             'totalRows' => count($totalRows),
  772.             'limit' => $limit,
  773.             'page' => $page,
  774.             'niveauUser' => $niveauUser,
  775.         ];
  776.         return new JsonResponse(
  777.             [
  778.                 'title' => 'Récuperation liste bénéficiaire',
  779.                 'message' => 'Récuperation avec succès',
  780.                 'status' => 'success',
  781.                 'data' => $data
  782.             ],
  783.             200,
  784.             ['Content-Type' => 'application/json']
  785.         );
  786.     }
  787.     public function getBeneficiaryOrEafOrFormationOrSuiviTransformationOrPj(
  788.         InstallationTransformation $installationTransformation,
  789.                                    $column,
  790.                                    $value,
  791.                                    $limit,
  792.                                    $offset,
  793.         User                       $remplisseur,
  794.                                    $type,
  795.                                    $typePj null,
  796.         Request $request
  797.     ): array
  798.     {
  799.         $data = [];
  800.         $totalRows = [];
  801.         //Get first index data By type["eaf" or "formation" or "suivi"]
  802.         if ($type == "eaf") {
  803.             $data $this->installationTransformationService->getListEafBeneficiaireService(
  804.                 $installationTransformation,
  805.                 $column,
  806.                 $value,
  807.                 $limit,
  808.                 $offset,
  809.                 $remplisseur
  810.             );
  811.             $totalRows $this->installationTransformationService->getListEafBeneficiaireService(
  812.                 $installationTransformation,
  813.                 $column,
  814.                 $value,
  815.                 null,
  816.                 null,
  817.                 $remplisseur
  818.             );
  819.         } else if ($type === "op") {
  820.             //$type = "formation"
  821.             $data $this->installationTransformationService->getOpBeneficiareTransformationService(
  822.                 $installationTransformation,
  823.                 $column,
  824.                 $value,
  825.                 $limit,
  826.                 $offset,
  827.                 $remplisseur
  828.             );
  829.             $totalRows $this->installationTransformationService->getOpBeneficiareTransformationService(
  830.                 $installationTransformation,
  831.                 $column,
  832.                 $value,
  833.                 null,
  834.                 null,
  835.                 $remplisseur
  836.             );
  837.         } else if ($type === "formation") {
  838.             //$type = "formation"
  839.             $data $this->installationTransformationService->getListFormationService(
  840.                 $installationTransformation,
  841.                 $column,
  842.                 $value,
  843.                 $limit,
  844.                 $offset,
  845.                 $remplisseur
  846.             );
  847.             $totalRows $this->installationTransformationService->getListFormationService(
  848.                 $installationTransformation,
  849.                 $column,
  850.                 $value,
  851.                 null,
  852.                 null,
  853.                 $remplisseur
  854.             );
  855.         } else if ($type === "suivi") {
  856.             //$type = "suivi"
  857.             $data $this->installationTransformationService->getSuiviProductionTransformation(
  858.                 $installationTransformation,
  859.                 $column,
  860.                 $value,
  861.                 $limit,
  862.                 $offset,
  863.                 $remplisseur
  864.             );
  865.             $totalRows $this->installationTransformationService->getSuiviProductionTransformation(
  866.                 $installationTransformation,
  867.                 $column,
  868.                 $value,
  869.                 null,
  870.                 null,
  871.                 $remplisseur
  872.             );
  873.         } else if ($type === "pj") {
  874.             //$type = "pj"
  875.             $data $this->installationTransformationService->getPieceJointByTypeService(
  876.                 $installationTransformation,
  877.                 $typePj,
  878.                 $remplisseur,
  879.                 $request
  880.             );
  881.             $totalRows $this->installationTransformationService->getPieceJointByTypeService(
  882.                 $installationTransformation,
  883.                 $typePj,
  884.                 $remplisseur,
  885.                 $request
  886.             );
  887.         }
  888.         return [
  889.             "data" => $data,
  890.             "totalRows" => $totalRows
  891.         ];
  892.     }
  893.     /**
  894.      * @Route("/mobile/{id}/api/op/beneficiaire/{remplisseurId}", name="app_installation_transformation_mobile_op_beneficiaire",methods="GET")
  895.      */
  896.     public function getListOpBeneficiaire(
  897.         InstallationTransformation $installationTransformation,
  898.                                    $remplisseurId,
  899.         Request                    $request
  900.     ): JsonResponse
  901.     {
  902.         $remplisseur $this->userRepository->find(intval($remplisseurId));
  903.         $column $request->query->get("column") ?? "";
  904.         $value $request->query->get("value") ?? "";
  905.         $limit $request->query->get("limit") ? intval($request->query->get("limit")) : 0;
  906.         $page $request->query->get("page") ? intval($request->query->get("page")) : 0;
  907.         $offset = ($limit $page) - $limit;
  908.         //Get Data with pagination
  909.         $data $this->installationTransformationService->getOpBeneficiareTransformationService(
  910.             $installationTransformation,
  911.             $column,
  912.             $value,
  913.             $limit,
  914.             $offset,
  915.             $remplisseur
  916.         );
  917.         //Get only total rows so, no limit and page (no pagination)
  918.         $totalRows $this->installationTransformationService->getOpBeneficiareTransformationService(
  919.             $installationTransformation,
  920.             $column,
  921.             $value,
  922.             null,
  923.             null,
  924.             $remplisseur
  925.         );
  926.         return new JsonResponse(
  927.             [
  928.                 'title' => 'Récuperation liste op bénéficiaires',
  929.                 'message' => 'Récuperation avec succès',
  930.                 'status' => 'success',
  931.                 'data' => [
  932.                     'rows' => $data,
  933.                     'dataInfo' => [
  934.                         'totalRows' => count($totalRows),
  935.                         'limit' => $limit,
  936.                         'page' => $page,
  937.                     ]
  938.                 ]
  939.             ],
  940.             200,
  941.             ['Content-Type' => 'application/json']
  942.         );
  943.     }
  944.     /**
  945.      * @Route("/mobile/{id}/api/liste/formation/{remplisseurId}", name="app_installation_transformation_mobile_list_formation",methods="GET")
  946.      */
  947.     public function getListFormation(
  948.         InstallationTransformation $installationTransformation,
  949.                                    $remplisseurId,
  950.         Request                    $request
  951.     ): JsonResponse
  952.     {
  953.         $remplisseur $this->userRepository->find(intval($remplisseurId));
  954.         $column $request->query->get("column") ?? "";
  955.         $value $request->query->get("value") ?? "";
  956.         $limit $request->query->get("limit") ? intval($request->query->get("limit")) : 0;
  957.         $page $request->query->get("page") ? intval($request->query->get("page")) : 0;
  958.         $offset = ($limit $page) - $limit;
  959.         //Get Data with pagination
  960.         $formations $this->installationTransformationService->getListFormationService(
  961.             $installationTransformation,
  962.             $column,
  963.             $value,
  964.             $limit,
  965.             $offset,
  966.             $remplisseur
  967.         );
  968.         //Get only total rows so, no limit and page (no pagination)
  969.         $totalRows $this->installationTransformationService->getListFormationService(
  970.             $installationTransformation,
  971.             $column,
  972.             $value,
  973.             null,
  974.             null,
  975.             $remplisseur
  976.         );
  977.         return new JsonResponse(
  978.             [
  979.                 'title' => 'Récuperation liste formation',
  980.                 'message' => 'Récuperation avec succès',
  981.                 'status' => 'success',
  982.                 'data' => [
  983.                     'rows' => $formations,
  984.                     'dataInfo' => [
  985.                         'totalRows' => count($totalRows),
  986.                         'limit' => $limit,
  987.                         'page' => $page,
  988.                     ]
  989.                 ]
  990.             ],
  991.             200,
  992.             ['Content-Type' => 'application/json']
  993.         );
  994.     }
  995.     /**
  996.      * @Route("/mobile/api/formation/{id}/beneficiaire", name="app_installation_transformation_mobile_formation_beneficiaire", methods="GET")
  997.      */
  998.     public function getAllBeneficiaryFormation(Formation $formationRequest $request): JsonResponse
  999.     {
  1000.         $column $request->query->get("column") ?? "";
  1001.         $value $request->query->get("value") ?? "";
  1002.         $limit $request->query->get("limit") ? intval($request->query->get("limit")) : 0;
  1003.         $page $request->query->get("page") ? intval($request->query->get("page")) : 0;
  1004.         $offset = ($limit $page) - $limit;
  1005.         $data $this->installationTransformationService->getAllBeneficiaryFormationService(
  1006.             $formation,
  1007.             $column,
  1008.             $value,
  1009.             $limit,
  1010.             $offset
  1011.         );
  1012.         $totalRows $this->installationTransformationService->getAllBeneficiaryFormationService(
  1013.             $formation,
  1014.             $column,
  1015.             $value,
  1016.             null,
  1017.             null
  1018.         );
  1019.         return new JsonResponse(
  1020.             [
  1021.                 'title' => 'Récuperation liste des bénéficiaires formations',
  1022.                 'message' => 'Récuperation avec succès',
  1023.                 'status' => 'success',
  1024.                 'data' => [
  1025.                     'rows' => $data,
  1026.                     'dataInfo' => [
  1027.                         'totalRows' => count($totalRows),
  1028.                         'limit' => $limit,
  1029.                         'page' => $page,
  1030.                     ]
  1031.                 ]
  1032.             ],
  1033.             200,
  1034.             ['Content-Type' => 'application/json']
  1035.         );
  1036.     }
  1037.     /**
  1038.      * @Route("/mobile/{id}/api/eaf/beneficiaire/{remplisseurId}", name="app_installation_transformation_mobile_eaf_beneficiaire",methods="GET")
  1039.      */
  1040.     public function getListEafBeneficiaire(
  1041.         InstallationTransformation $installationTransformation,
  1042.                                    $remplisseurId,
  1043.         Request                    $request
  1044.     ): JsonResponse
  1045.     {
  1046.         $remplisseur $this->userRepository->find(intval($remplisseurId));
  1047.         $column $request->query->get("column") ?? "";
  1048.         $value $request->query->get("value") ?? "";
  1049.         $limit $request->query->get("limit") ? intval($request->query->get("limit")) : 0;
  1050.         $page $request->query->get("page") ? intval($request->query->get("page")) : 0;
  1051.         $offset = ($limit $page) - $limit;
  1052.         //Get Data with pagination
  1053.         $eafBeneficiaires $this->installationTransformationService->getListEafBeneficiaireService(
  1054.             $installationTransformation,
  1055.             $column,
  1056.             $value,
  1057.             $limit,
  1058.             $offset,
  1059.             $remplisseur
  1060.         );
  1061.         //Get only total rows so, no limit and page (no pagination)
  1062.         $totalRows $this->installationTransformationService->getListEafBeneficiaireService(
  1063.             $installationTransformation,
  1064.             $column,
  1065.             $value,
  1066.             null,
  1067.             null,
  1068.             $remplisseur
  1069.         );
  1070.         return new JsonResponse(
  1071.             [
  1072.                 'title' => 'Récuperation liste bénéficiaire',
  1073.                 'message' => 'Récuperation avec succès',
  1074.                 'status' => 'success',
  1075.                 'data' => [
  1076.                     'rows' => $eafBeneficiaires,
  1077.                     'dataInfo' => [
  1078.                         'totalRows' => count($totalRows),
  1079.                         'limit' => $limit,
  1080.                         'page' => $page,
  1081.                     ]
  1082.                 ]
  1083.             ],
  1084.             200,
  1085.             ['Content-Type' => 'application/json']
  1086.         );
  1087.     }
  1088.     /**
  1089.      * @Route("/mobile/{id}/api/suivi_production_transfo/{remplisseurId}", name="app_installation_transformation_mobile_suivi_production",methods="GET")
  1090.      */
  1091.     public function getListSuiviProductionTranfo(
  1092.         InstallationTransformation $installationTransformation,
  1093.                                    $remplisseurId,
  1094.         Request                    $request
  1095.     ): JsonResponse
  1096.     {
  1097.         $currentUser $this->getUser();
  1098.         $user $this->userRepository->find($currentUser);
  1099.         $niveauUser $user->getProfil()->getNiveau()->getid();
  1100.         $remplisseur $this->userRepository->find(intval($remplisseurId));
  1101.         $column $request->query->get("column") ?? "";
  1102.         $value $request->query->get("value") ?? "";
  1103.         $limit $request->query->get("limit") ? intval($request->query->get("limit")) : 0;
  1104.         $page $request->query->get("page") ? intval($request->query->get("page")) : 0;
  1105.         $offset = ($limit $page) - $limit;
  1106.         //Get Data with pagination
  1107.         $data $this->installationTransformationService->getSuiviProductionTransformation(
  1108.             $installationTransformation,
  1109.             $column,
  1110.             $value,
  1111.             $limit,
  1112.             $offset,
  1113.             $remplisseur
  1114.         );
  1115.         //Get only total rows so, no limit and page (no pagination)
  1116.         $totalRows $this->installationTransformationService->getSuiviProductionTransformation(
  1117.             $installationTransformation,
  1118.             $column,
  1119.             $value,
  1120.             null,
  1121.             null,
  1122.             $remplisseur
  1123.         );
  1124.         return new JsonResponse(
  1125.             [
  1126.                 'title' => "Récuperation liste suivi de production",
  1127.                 'message' => 'Récuperation avec succès',
  1128.                 'status' => 'success',
  1129.                 'data' => [
  1130.                     'rows' => $data,
  1131.                     'dataInfo' => [
  1132.                         'totalRows' => count($totalRows),
  1133.                         'limit' => $limit,
  1134.                         'page' => $page,
  1135.                         'niveauUser' => $niveauUser
  1136.                     ]
  1137.                 ]
  1138.             ],
  1139.             200,
  1140.             ['Content-Type' => 'application/json']
  1141.         );
  1142.     }
  1143.     /**
  1144.      * @Route("/mobile/{id}/api/pieces/{remplisseurId}", name="app_installation_transformation_piece_joint", methods="GET")
  1145.      */
  1146.     public function getPiecesJointCycleByType(
  1147.         InstallationTransformation $installationTransformation,
  1148.         $remplisseurId,
  1149.         Request $request
  1150.     ): JsonResponse
  1151.     {
  1152.         $remplisseur $this->userRepository->find(intval($remplisseurId));
  1153.         $type $request->query->get("type") ?? "";
  1154.         $result $this->installationTransformationService->getPieceJointByTypeService(
  1155.             $installationTransformation,
  1156.             $type,
  1157.             $remplisseur,
  1158.             $request
  1159.         );
  1160.         if (count($result['data']) == 0) {
  1161.             $result['alt'] = $request->getSchemeAndHttpHost() . '/images/image.png';
  1162.         }
  1163.         return new JsonResponse(
  1164.             [
  1165.                 'title' => 'Affichage cep café photos',
  1166.                 'message' => 'Affichage cep café photos avec succès',
  1167.                 'status' => 'success',
  1168.                 'data' => $result
  1169.             ],
  1170.             200,
  1171.             ['Content-Type' => 'application/json']
  1172.         );
  1173.     }
  1174.     /**
  1175.      * @Route("/canal-financement", name="get_all_cannal_financement",methods={"GET"})
  1176.      */
  1177.     public function getAllCanalFinancement(): Response
  1178.     {
  1179.         $canalFinancement $this->canalFinancementRepository->findAll();
  1180.         $data = [];
  1181.         foreach ($canalFinancement as $canal) {
  1182.             $data[] = ["id" => $canal->getId(), "name" => $canal->getName()];
  1183.         }
  1184.         return new JsonResponse(
  1185.             [
  1186.                 'title' => 'Affichage suivi installation transformation',
  1187.                 'message' => 'Affichage suivi installation transformation avec succès',
  1188.                 'status' => 'success',
  1189.                 'data' => $data,
  1190.             ],
  1191.             200,
  1192.             ['Content-Type' => 'application/json']
  1193.         );
  1194.     }
  1195.     /**
  1196.      * @Route("/{id}/{id_statut}/{niveau}/valide", name="app_installation_transformation_valide", methods={"GET","POST"})
  1197.      */
  1198.     public function valid(
  1199.         StatutFicheRepository      $statutFicheRepository,
  1200.         InstallationTransformation $installationTransformation,
  1201.         Request                    $request
  1202.     ): Response
  1203.     {
  1204.         $statutFiche $statutFicheRepository->find($request->attributes->get('id_statut'));
  1205.         $niveau $request->attributes->get('niveau');
  1206.         $user $this->getUser();
  1207.         $message " ";
  1208.         $status " ";
  1209.         try {
  1210.             //Mise à jour statut de la fiche s'il n'y pas d'erreur et appel au fonction valide dans ficheService
  1211.             $this->ficheService->valide($installationTransformation$statutFiche$user$niveau);
  1212.             $message "Validation  fiche de suivi installation de transformation avec succès";
  1213.             $status "success";
  1214.         } catch (\Throwable $th) {
  1215.             $message "Validation fiche de suivi installation de transformation  avec erreur";
  1216.             $status "error";
  1217.         }
  1218.         return new JsonResponse(
  1219.             [
  1220.                 'title' => 'Validation fiche de suivi installation de transformation',
  1221.                 'message' => $message,
  1222.                 'status' => $status,
  1223.             ],
  1224.             200,
  1225.             ['Content-Type' => 'application/json']
  1226.         );
  1227.     }
  1228.     /**
  1229.      * @Route("/{id}/{id_statut}/{niveau}/rejete", name="app_installation_transformation_rejete", methods={"POST"})
  1230.      */
  1231.     public function rejete(
  1232.         Request                    $request,
  1233.         StatutFicheRepository      $statutFicheRepository,
  1234.         InstallationTransformation $installationTransformation
  1235.     ): Response
  1236.     {
  1237.         $user $this->getUser();
  1238.         $statutFiche $statutFicheRepository->find($request->attributes->get('id_statut'));
  1239.         $niveau $request->attributes->get('niveau');
  1240.         $observation $request->request->get("observation");
  1241.         $validations $installationTransformation->getValidation();
  1242.         $recentValidateur null;
  1243.         //recuperation du validateur recent de la fiche --> niveau inferieur de l'user connecté
  1244.         for ($i count($validations); $i 0$i--) {
  1245.             $niveauValidation $validations[$i 1]->getNiveau();
  1246.             $statutValidation $validations[$i 1]->getStatut();
  1247.             if ($niveauValidation == $niveau && $statutValidation == $this->params->get("statut_valide")) {
  1248.                 $recentValidateur $validations[$i 1]->getValidateur();
  1249.                 break;
  1250.             }
  1251.         }
  1252.         //recuperation remplisseur initiale si la fiche est refusE au niveau cir (validation niveau 3)
  1253.         if ($recentValidateur == null) {
  1254.             $recentValidateur $installationTransformation->getRemplisseurInitiale();
  1255.         }
  1256.         //if (isset($recentValidateur)) {
  1257.             //MAJ statut de la fiche
  1258.             try {
  1259.                 $this->ficheService->rejete($installationTransformation$statutFiche$user$observation$niveau);
  1260.                 $message "Refus fiche de suivi installation de tranformation  avec succès";
  1261.                 $status "success";
  1262.             } catch (TransportExceptionInterface $e) {
  1263.                 $message "Refus fiche de suivi installation de tranformation  avec erreur";
  1264.                 $status "error";
  1265.             }
  1266. //        } else {
  1267. //            $message = "Refus invalide";
  1268. //            $status = "error";
  1269. //        }
  1270.         return new JsonResponse(
  1271.             [
  1272.                 'title' => 'Refus fiche de suivi installation de tranformation',
  1273.                 'message' => $message,
  1274.                 'status' => $status,
  1275.             ],
  1276.             200,
  1277.             ['Content-Type' => 'application/json']
  1278.         );
  1279.     }
  1280.     /**
  1281.      * @Route("/{id_statut}/{niveau}/prod_valide", name="app_suivi_prod_valide", methods={"GET","POST"})
  1282.      */
  1283.     public function valideProduction(
  1284.         StatutFicheRepository            $statutFicheRepository,
  1285.         SuiviProductionTransfoRepository $suiviprodRepo,
  1286.         Request                          $request,
  1287.         EntityManagerInterface           $entityManager
  1288.     ): Response
  1289.     {
  1290.         $message " ";
  1291.         $status " ";
  1292.         $statutFiche $statutFicheRepository->find($request->attributes->get('id_statut'));
  1293.         $listeSuiviProds $request->request->get("listeObjet");
  1294.         try {
  1295.             //Mise à jour statut de tous les productions validées
  1296.             foreach ($listeSuiviProds as $idSuiviProd) {
  1297.                 $suiviProd $suiviprodRepo->find((int)$idSuiviProd);
  1298.                 $suiviProd->setStatut($statutFiche);
  1299.                 $entityManager->persist($suiviProd);
  1300.             }
  1301.             //MAJ base de données
  1302.             $entityManager->flush();
  1303.             //creation message et statut
  1304.             $message "Validation  suivi production avec succès";
  1305.             $status "success";
  1306.         } catch (\Throwable $th) {
  1307.             $message "Validation suivi production  avec erreur";
  1308.             $status "error";
  1309.         }
  1310.         return new JsonResponse(
  1311.             [
  1312.                 'title' => 'Validation suivi production',
  1313.                 'message' => $message,
  1314.                 'status' => $status,
  1315.             ],
  1316.             200,
  1317.             ['Content-Type' => 'application/json']
  1318.         );
  1319.     }
  1320.     /**
  1321.      * @Route("/{id_statut}/{niveau}/prod_rejete", name="app_suivi_prod_rejete", methods={"POST"})
  1322.      */
  1323.     public function rejeteProduction(
  1324.         StatutFicheRepository            $statutFicheRepository,
  1325.         SuiviProductionTransfoRepository $suiviprodRepo,
  1326.         Request                          $request,
  1327.         EntityManagerInterface           $entityManager
  1328.     ): Response
  1329.     {
  1330.         $message " ";
  1331.         $status " ";
  1332.         $statutFiche $statutFicheRepository->find($request->attributes->get('id_statut'));
  1333.         $listeSuiviProds $request->request->get("listeObjet");
  1334.         try {
  1335.             //Mise à jour statut de tous les productions validées
  1336.             foreach ($listeSuiviProds as $idSuiviProd) {
  1337.                 $suiviProd $suiviprodRepo->find((int)$idSuiviProd);
  1338.                 $suiviProd->setStatut($statutFiche);
  1339.                 $entityManager->persist($suiviProd);
  1340.             }
  1341.             //MAJ base de données
  1342.             $entityManager->flush();
  1343.             //creation message et statut
  1344.             $message "Refus  suivi production avec succès";
  1345.             $status "success";
  1346.         } catch (\Throwable $th) {
  1347.             $message "Refus suivi production  avec erreur";
  1348.             $status "error";
  1349.         }
  1350.         return new JsonResponse(
  1351.             [
  1352.                 'title' => 'Refus suivi production',
  1353.                 'message' => $message,
  1354.                 'status' => $status,
  1355.             ],
  1356.             200,
  1357.             ['Content-Type' => 'application/json']
  1358.         );
  1359.     }
  1360.     /**
  1361.      * @Route("/api/get_nbr_installation_transformation", name="app_fiche_installation_transformation_get_nbr")
  1362.      */
  1363.     public function getNbrTransformation(Request $request): JsonResponse
  1364.     {
  1365.         $year = (int) $request->query->get("year") ?? null;
  1366.         $cirId = (int) $request->query->get("cir") ?? null;
  1367.         $poles $this->helper->getPolesCoordinationZone($cirId);
  1368.         return new JsonResponse(
  1369.             [
  1370.                 'title' => 'Récuperation transformation data',
  1371.                 'message' => 'Récuperation avec succès',
  1372.                 'status' => 'success',
  1373.                 'data' => ['total' => $this->installationTransformationService->getNbrTransformationService($poles$year)],
  1374.             ],
  1375.             200,
  1376.             ['Content-Type' => 'application/json']
  1377.         );
  1378.     }
  1379. }