src/Controller/WorkflowController.php line 60

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  9. use Symfony\Contracts\Translation\TranslatorInterface;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use App\Event\WorkflowDossierEvent;
  12. use App\Entity\Entreprise;
  13. use App\Entity\Dossier;
  14. use App\Entity\StatutDossier;
  15. use App\Repository\DossierRepository;
  16. /**
  17.  * @Route("/workflow")
  18.  */
  19. class WorkflowController extends AbstractController
  20. {
  21.     /** @var TranslatorInterface */
  22.     private $translator;
  23.     
  24.     /** @var EntityManagerInterface */
  25.     private $entityManager;
  26.     
  27.     /** @var DossierRepository */
  28.     private $dossierRepository;
  29.     
  30.     /** @var EventDispatcherInterface */
  31.     private $dispatcher;
  32.     public function __construct(
  33.         DossierRepository $dossierRepository
  34.         EntityManagerInterface $entityManager
  35.         TranslatorInterface $translator,
  36.         EventDispatcherInterface $dispatcher
  37.     ) {
  38.         $this->dossierRepository $dossierRepository;
  39.         $this->entityManager $entityManager;
  40.         $this->translator $translator;
  41.         $this->dispatcher $dispatcher;
  42.     }
  43.     /**
  44.      * @Route("/setStatus", name="workflowSetStatus")
  45.      */
  46.     public function setStatus(Request $request): JsonResponse
  47.     {
  48.         $numero_contrat null;
  49.         $numero_pvac null;
  50.         $statut $request->request->get('statut');
  51.         $dossier_id $request->request->get('dossier_id');
  52.         $dossier $this->dossierRepository->find($dossier_id );
  53.         if(!$dossier instanceof Dossier) {
  54.             return new JsonResponse('Dossier introuvable'Response::HTTP_NOT_FOUND); // constant for 404
  55.         }
  56.         $statutActuel $dossier->getStatut();
  57.         // Vérifier que le statut proposé eszt bien dans le workflow
  58.         $workflow StatutDossier::STATUTS_WORKFLOW;
  59.         $data = [
  60.             'code'=> 'ko',
  61.             'level' => 'warning'
  62.             'title' => "Erreur de statut"
  63.             'message' => 'Ce statut est un statut final, il ne peut plus être modifié'
  64.             'statut' => $statut,
  65.             'statut_actuel' => $statutActuel,
  66.             'workflow' => $workflow[$statutActuel]
  67.         ];
  68.         if(in_array($statut$workflow[$statutActuel])) {
  69.             $statutDossier = new StatutDossier();
  70.             $statutDossier->setStatut($statut) ;
  71.             $statutDossier->setDate(new \DateTime());
  72.             $statutDossier->setDossier($dossier);
  73.             $dossier->setStatut($statut);
  74.             if($statut == StatutDossier::STATUT_GESTION){
  75.                 $offre $dossier->getOffre();
  76.                 $offre->setNumeroContratCourant((int) $offre->getNumeroContratCourant() + ) ;
  77.                 if($offre->getActiverNumerotationPvac()) {
  78.                     
  79.                     $numero_pvac $this->entityManager->getRepository(Dossier::class)->getNumPvacNextValue();
  80.                     $dossier->setNumeroPvac($numero_pvac);
  81.                 }
  82.                 
  83.                 $numero_contrat $offre->getNumeroContratCourant();
  84.                 $dossier->setNumeroContrat($numero_contrat);
  85.                 $this->entityManager->persist($offre);
  86.             }
  87.             $this->entityManager->persist($statutDossier);
  88.             $this->entityManager->persist($dossier);
  89.             $this->entityManager->flush();
  90.         
  91.             $this->dispatcher->dispatch(new WorkflowDossierEvent($dossier$statut), WorkflowDossierEvent::NAME);
  92.             $situation $this->render('_parts/situation.html.twig', [
  93.                 'statuts' => $dossier->getStatutDossiers(),
  94.             ])->getContent();
  95.             
  96.             
  97.             $data = [
  98.                 'code'=> 'ok',
  99.                 'level' => $this->translator->trans('form.dossier.statut.' $statut '.flash.level', [], 'forms'), 
  100.                 'title' => $this->translator->trans('form.dossier.statut.' $statut '.flash.title', [], 'forms'), 
  101.                 'message' => $this->translator->trans('form.dossier.statut.' $statut '.flash.message', [], 'forms'), 
  102.                 'statut_libelle' => $this->translator->trans('form.dossier.statut.' $statut '.label', [], 'forms'),
  103.                 'statut' => $statut,
  104.                 'situation' => $situation,
  105.                 'numero_contrat' => $numero_contrat,
  106.                 'numero_pvac' => $numero_pvac
  107.             ];
  108.         }
  109.         if ($request->isXmlHttpRequest()) {
  110.             return  new JsonResponse($data);
  111.         }
  112.         return $this->render('home.html.twig');
  113.     }
  114. }