src/Controller/ArticleController.php line 1041

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\String\Slugger\SluggerInterface;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Bundle\FrameworkBundle\Console\Application;
  6. use Symfony\Component\Console\Input\ArrayInput;
  7. use Symfony\Component\Console\Output\NullOutput;
  8. use Symfony\Component\Form\FormError;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\RedirectResponse;
  12. use Symfony\Component\HttpFoundation\Session\Session;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use App\Entity\Article;
  15. use App\Entity\ListeDiffusion;
  16. use App\Entity\ListeDiffusionSup;
  17. use App\Entity\Media;
  18. use App\Entity\RefAffectation;
  19. use App\Entity\RefRole;
  20. use App\Entity\RefFederation;
  21. use App\Entity\Categorie;
  22. use App\Entity\UtilisateurInformation;
  23. use App\Entity\RFederation;
  24. use App\Entity\RefSousActionRefAction;
  25. use App\Entity\RefPoste;
  26. use App\Entity\RefGabarit;
  27. use Doctrine\Persistence\ManagerRegistry;
  28. use Symfony\Contracts\Translation\TranslatorInterface;
  29. use Symfony\Component\HttpKernel\KernelInterface;
  30. use App\Services\ActualiteUpd;
  31. use Symfony\Component\Mailer\MailerInterface;
  32. use Symfony\Component\Mime\Email;
  33. use Twig\Environment;
  34. /**
  35.  * Article controller.
  36.  *
  37.  */
  38. class ArticleController extends AbstractController
  39. {
  40.     private $doctrine;
  41.     private  $translator;
  42.     private  $kernel;
  43.     private $actualiteUpd;
  44.     private  $mailer;
  45.     private $twig;
  46.     private  $slugger;
  47.     public function __construct(SluggerInterface $sluggerManagerRegistry $doctrineTranslatorInterface $translatorKernelInterface $kernelActualiteUpd $actualiteUpdMailerInterface $mailerEnvironment $twig)
  48.     {
  49.         $this->doctrine $doctrine;
  50.         $this->translator $translator;
  51.         $this->kernel $kernel;
  52.         $this->actualiteUpd $actualiteUpd;
  53.         $this->mailer $mailer;
  54.         $this->twig $twig;
  55.         $this->slugger =  $slugger;
  56.     }
  57.     /**
  58.      * Lists all Article entities by user.
  59.      */
  60.     #[Route(path'/api/article'name'ctsweb_article'methods: ['GET'])]
  61.     public function index()
  62.     {
  63.         $acces $this->addAccesAdmin($this->getUser()->getUtilisateur()->getIdRole());
  64.         if (!$acces) {
  65.             return new RedirectResponse($this->generateUrl('actualite'));
  66.         }
  67.         $em $this->doctrine->getManager();
  68.         $articles $em->getRepository(Article::class)->findBy(['utilisateur' => $this->getUser()->getUtilisateur()]);
  69.         return $this->render('article/index.html.twig', ['articles' => $articles]);
  70.     }
  71.     /**
  72.      * Lists all Article entities.
  73.      */
  74.     #[Route(path'/api/actualite'name'actualite'methods: ['GET'])]
  75.     public function listeActualite()
  76.     {
  77.         $em $this->doctrine->getManager();
  78.         $articleUser = [];
  79.         try {
  80.             $articles $em->getRepository(ListeDiffusion::class)->findListeDiffusionValide($this->getUser()->getIdUtilisateur());
  81.             foreach ($articles as $article) {
  82.                 $auteur null;
  83.                 $utilisateur $article->getArticle()->getUtilisateur();
  84.                 $roleUser = !is_null($utilisateur) ? $article->getArticle()->getUtilisateur()->getRole()->getIdRole() : null;
  85.                 if ($roleUser == RefRole::ROLE_DS_ADMIN || $roleUser == RefRole::ROLE_DS_SIGNATAIRE) {
  86.                     $auteur "Ministère des sports";
  87.                 } elseif ($roleUser == RefRole::ROLE_DR || $roleUser == RefRole::ROLE_DR_SIGNATAIRE) {
  88.                     $articleWriter $em->getRepository(UtilisateurInformation::class)->findOneBy(["idUtilisateur" => $article->getArticle()->getUtilisateur()->getIdUtilisateur()]);
  89.                     $auteur $articleWriter $articleWriter->getIdAffectation()->getLibelleLong() : null;
  90.                 } elseif ($roleUser == RefRole::ROLE_FEDE || $roleUser == RefRole::ROLE_FEDE_INVITE) {
  91.                     $auteur $em->getRepository(RFederation::class)->findOneBy(["rAdmDiside" => $em->getRepository(UtilisateurInformation::class)->findOneBy(["idUtilisateur" => $article->getArticle()->getUtilisateur()->getIdUtilisateur()])->getIdFederation()->getRAdmDiside()])->getRSerLibl();
  92.                 }
  93.                 $categ $em->getRepository(Categorie::class)->findOneBy(['id' => $article->getIdCategorie()]);
  94.                 $datePublication $article->getArticle()->getDatePublication()->format("d-m-Y");
  95.                 $articleUser[] = ['id' => $article->getArticle()->getId(), 'titre' => $article->getArticle()->getTitre(), 'resume' => $article->getArticle()->getResume(), 'datePublication' => $datePublication'auteur' => $auteur'slug' => $article->getArticle()->getSlug(), 'idCategorie' => ($categ != null) ? $categ->getId() : null'nomCategorie' => ($categ != null) ? $categ->getNomCategorie() : null'imageCategorie' => $this->explodeArticleMedias($article->getMediasCategorie()), 'lu' => $article->getLu() ? true false];
  96.             }
  97.             $data = ['success' => true'data' => isset($articleUser[0]) ? $articleUser : []];
  98.         } catch (\Exception $e) {
  99.             $data = ['success' => false'data' => $e->getMessage()];
  100.         }
  101.         return new JsonResponse($data);
  102.     }
  103.     #[Route(path'/api/modalApercu/{id}'name'article_apercu')]
  104.     public function detailArticleAdministration($id)
  105.     {
  106.         $articleApercu = [];
  107.         $em $this->doctrine->getManager();
  108.         $article $em->getRepository(Article::class)->findOneBy(['id' => $id]);
  109.         $postes $affectations $federations $actions $sousAction = [];
  110.         $posteId $affectationId $federationId = [];
  111.         try {
  112.             $federationAll $this->getFederationArticle();
  113.             $federationDecode json_decode((string) $federationAll->getContent(), null512JSON_THROW_ON_ERROR);
  114.             foreach ($article->getRFederations() as $federation) {
  115.                 $federationId[] = $federation->getRAdmDisciplineId();
  116.             }
  117.             foreach ($federationDecode->data as $federationDec) {
  118.                 $federations[] = ["id" => $federationDec->idRFede"libelle" => $federationDec->libelle"checked" => (in_array($federationDec->idRFede$federationId) ? true false)];
  119.             }
  120.             $affectationAll $this->getAffectationArticle();
  121.             $affectationDecode json_decode((string) $affectationAll->getContent(), null512JSON_THROW_ON_ERROR);
  122.             foreach ($article->getAffectations() as $affectation) {
  123.                 $affectationId[] = $affectation->getIdAffectation();
  124.             }
  125.             foreach ($affectationDecode->data as $affectationDec) {
  126.                 $affectations[] = ["id" => $affectationDec->id"libelle" => $affectationDec->libelle"checked" => (in_array($affectationDec->id$affectationId) ? true false)];
  127.             }
  128.             $posteAll $this->getPosteArticle();
  129.             $posteDecode json_decode((string) $posteAll->getContent(), null512JSON_THROW_ON_ERROR);
  130.             foreach ($article->getPostes() as $poste) {
  131.                 $posteId[] = $poste->getIdPoste();
  132.             }
  133.             foreach ($posteDecode->data as $posteDec) {
  134.                 $postes[] = ["id" => $posteDec->id"libelle" => $posteDec->libelle"libelleModif" => $posteDec->libelle 'Modif'"checked" => (in_array($posteDec->id$posteId) ? true false)];
  135.             }
  136.             foreach ($article->getSousActions() as $sousActions) {
  137.                 $sousAction $sousActions->getIdSousAction();
  138.             }
  139.             $em $this->doctrine->getManager();
  140.             $categ $em->getRepository(Categorie::class)->findOneBy(['id' => $article->getIdCategorie()]);
  141.             $count is_countable($this->explodeArticleMedias($article->getMedias())) ? count($this->explodeArticleMedias($article->getMedias())) : 0;
  142.             if ($count 0) {
  143.                 $dataM = [$this->explodeArticleMedias($article->getMedias())[$count 1]];
  144.             } else {
  145.                 $dataM $this->explodeArticleMedias($article->getMedias());
  146.             }
  147.             $articleApercu[] = ['id' => $article->getId(), 'dateDebut' => $article->getDatePublication()->format("d/m/Y"), 'dateFin' => $article->getDateFinPublication()->format("d/m/Y"), 'titre' => $article->getTitre(), 'resume' => $article->getResume(), 'contenu' => $article->getContenu(), 'slug' => $article->getSlug(), 'listeDiffusion' => $article->getListeDiffusions(), 'affectations' => $affectations'federations' => $federations'postes' => $postes'action' => (!is_null($article->getAction()) ? $article->getAction()->getIdAction() : ''), 'sousAction' => $sousAction'statut' => $article->getStatut(), 'idCategorie' => ($categ != null) ? $categ->getId() : null'nomCategorie' => ($categ != null) ? $categ->getNomCategorie() : null'imageCategorie' => $this->explodeArticleMedias($article->getMediasCategorie()), 'dataMedias' => $dataM];
  148.             $data = ['success' => true'data' => $articleApercu];
  149.         } catch (\Exception $e) {
  150.             $data = ['success' => false'data' => $e->getMessage()];
  151.         }
  152.         return new JsonResponse($data);
  153.     }
  154.     private function explodeArticleMedias($medias)
  155.     {
  156.         $dir $this->getParameter('dir_file_media');
  157.         $dataMedias = [];
  158.         if (!empty($medias)) {
  159.             foreach ($medias as $media) {
  160.                 $validMedia $this->isValidateMedia($media);
  161.                 if ($validMedia) {
  162.                     $dataMedias[] = ['urlFile' => $dir $media->getPath(), 'idUpload' => $media->getId(), 'filename' => $media->getName()];
  163.                 }
  164.             }
  165.         }
  166.         return $dataMedias;
  167.     }
  168.     private function isValidateMedia($media)
  169.     {
  170.         $validExtension = ['pdf''doc''docx''xls''xlsx''jpg''jpeg''png'];
  171.         $pathinfo $media pathinfo((string) $media->getPath()) : null;
  172.         $extension = !is_null($pathinfo) ? $pathinfo['extension'] : '';
  173.         $validMedia in_array($extension$validExtension);
  174.         return $validMedia;
  175.     }
  176.     /**
  177.      * Lists all Article entities.
  178.      */
  179.     #[Route(path'/api/actualite_admin'name'actualite_admin'methods: ['GET'])]
  180.     public function listeActualiteAdministration()
  181.     {
  182.         $poste null;
  183.         $option null;
  184.         $em $this->doctrine->getManager();
  185.         try {
  186.             $listeArticles = [];
  187.             $utilisateur $this->getUser()->getUtilisateur();
  188.             $role = !is_null($utilisateur) ? $this->getUser()->getUtilisateur()->getRole()->getIdRole() : null;
  189.             if ($role == || $role == || $role == 10) {
  190.                 $poste 'DS';
  191.                 $option '';
  192.             } elseif ($role == || $role == 11) {
  193.                 $poste 'DR';
  194.                 $option $this->getUser()->getIdAffectation();
  195.             } elseif ($role == || $role == 8) {
  196.                 $poste 'Fede';
  197.                 $option $this->getUser()->getIdFederation();
  198.             }
  199.             $articles $em->getRepository(Article::class)->findArticleAdministration($option $poste);
  200.             foreach ($articles as $article) {
  201.                 $federation '';
  202.                 $affectation '';
  203.                 $uiRep $em->getRepository(UtilisateurInformation::class);
  204.                 $user $article->getUtilisateur();
  205.                 $articleUser = !is_null($user) ? $uiRep->findOneBy(["idUtilisateur" => $user->getIdUtilisateur()]) : null;
  206.                 $auteur "";
  207.                 if (!is_null($articleUser)) {
  208.                     $affectation = (null !== $articleUser->getIdAffectation()) ? $articleUser->getIdAffectation()->getIdAffectation() : 1;
  209.                     $roleUser $user->getRole()->getIdRole();
  210.                     if ($roleUser == || $roleUser == || $roleUser == 10) {
  211.                         $auteur "Ministère des sports";
  212.                     } elseif ($roleUser == || $roleUser == 11) {
  213.                         $auteur $articleUser->getIdAffectation()->getLibelleLong();
  214.                     } elseif ($roleUser == || $roleUser == 8) {
  215.                         $federationRecord $articleUser->getIdFederation();
  216.                         $auteur "Fédération";
  217.                         if ($federationRecord) {
  218.                             $federation $federationRecord->getIdFederation();
  219.                             $auteur $em->getRepository(RFederation::class)->findOneBy(["rAdmDiside" => $federationRecord->getRAdmDiside()])->getRSerLibl();
  220.                         }
  221.                     }
  222.                 }
  223.                 $posteArticle "";
  224.                 if ((is_countable($article->getPostes()) ? count($article->getPostes()) : 0) != 0) {
  225.                     foreach ($article->getPostes() as $poste) {
  226.                         $posteArticle .= $poste->getLibellePoste() . " + ";
  227.                     }
  228.                     $posteArticle substr($posteArticle0, -3);
  229.                 } else {
  230.                     $posteArticle "EN + CTR + CTS + DTN";
  231.                 }
  232.                 $listeArticles[] = ["id" => $article->getId(), "titre" => $article->getTitre(), "statut" => ($article->getStatut()) ? "Publié" "Non publié""poste" => $posteArticle"auteur" => $auteur"resume" => $article->getResume(), "contenu" => $article->getContenu(), "slug" => $article->getSlug(), "date" => $article->getDatePublication()->format('d/m/Y'), "federation" => $federation"affectation" => $affectation];
  233.             }
  234.             $data = ['success' => true'data' => $listeArticles];
  235.         } catch (\Exception $e) {
  236.             $data = ['success' => false'data' => $e->getMessage()];
  237.         }
  238.         return new JsonResponse($data);
  239.     }
  240.     /**
  241.      * Lists all Article entities.
  242.      */
  243.     #[Route(path'/api/sousaction'name'select_sousaction'methods: ['GET'])]
  244.     public function labelForAct(Request $request)
  245.     {
  246.         $listOfAction null;
  247.         if ($request->isXmlHttpRequest()) {
  248.             try {
  249.                 $action_id $request->request->get('action_id');
  250.                 $em $this->doctrine->getManager();
  251.                 $listOfAction $em->getRepository(RefSousActionRefAction::class)->getSousActionsByAction($action_id);
  252.                 return new JsonResponse($listOfAction);
  253.             } catch (\Exception $ex) {
  254.                 $listOfAction = ['error' => ['code' => 500'message' => $ex->getMessage()]];
  255.             }
  256.         }
  257.         return new JsonResponse($listOfAction);
  258.     }
  259.     /**
  260.      * Creates a new Article entity.
  261.      */
  262.     #[Route(path'/api/new_article'name'article_new'methods: ['GET''POST'])]
  263.     public function new(Request $request)
  264.     {
  265.         $acces $this->addAccesAdmin($this->getUser()->getUtilisateur()->getIdRole());
  266.         $data json_decode($request->getContent(), true512JSON_THROW_ON_ERROR);
  267.         // var_dump($data );
  268.         // die();
  269.         $datePub explode('/', (string) $data['article']['datePublication']);
  270.         $datePublication = new \DateTime();
  271.         $datePublication->setDate($datePub[2], $datePub[1], $datePub[0]);
  272.         $data['article']['datePublication'] = $datePublication->format('Y-m-d');
  273.         $dateFinPub explode('/', (string) $data['article']['dateFinPublication']);
  274.         $dateFinPublication = new \DateTime();
  275.         $dateFinPublication->setDate($dateFinPub[2], $dateFinPub[1], $dateFinPub[0]);
  276.         $data['article']['dateFinPublication'] = $dateFinPublication->format('Y-m-d');
  277.         $request->request->replace(is_array($data) ? $data : []);
  278.         if (!$acces) {
  279.             return new RedirectResponse($this->generateUrl('actualite'));
  280.         }
  281.         try {
  282.             $article = new Article();
  283.             $em $this->doctrine->getManager();
  284.             $idRole $this->getUser()->getUtilisateur()->getIdRole();
  285.             $form $this->createForm(
  286.                 \App\Form\ArticleType::class,
  287.                 $article,
  288.                 ['role' => $this->getUser()->getUtilisateur()->getIdRole()]
  289.             );
  290.             // Supprimer le champ "SousActions" du formulaire avant d'appeler handleRequest()
  291.             $form->remove('SousActions');
  292.             $form->handleRequest($request);
  293.             if ($form->isSubmitted()) {
  294.                 if ($form->getData()->getDateFinPublication() < $form->getData()->getDatePublication())
  295.                     $form->addError(new FormError($this->translator->trans('date.required')));
  296.                 if (!$form->getData()->getContenu())
  297.                     $form->addError(new FormError($this->translator->trans('contenu.required')));
  298.                 if (!$form->getData()->getResume())
  299.                     $form->addError(new FormError($this->translator->trans('resume.required')));
  300.                 // $errors = $form->getErrors(true);
  301.                 // foreach ($errors as $error) {
  302.                 //     $cause = $error->getCause();
  303.                 //     if ($cause instanceof \Symfony\Component\Validator\ConstraintViolationInterface) {
  304.                 //         $propertyPath[] = $cause->getPropertyPath();
  305.                 //         // Faites quelque chose avec $propertyPath pour identifier le champ en question
  306.                 //     }
  307.                 // }
  308.                 // var_dump($propertyPath);
  309.                 // die();
  310.                 if ($form->isValid()) {
  311.                     $params $request->request->all();
  312.                     if (in_array($idRole$this->getParameter('groupe1'))) {
  313.                         $article->addAffectation($this->getUser()->getIdAffectation());
  314.                     } elseif (in_array($idRole$this->getParameter('groupe2'))) {
  315.                         $rfedration $em->getRepository(RFederation::class)->findOneByRAdmDiside($this->getUser()->getIdFederation()->getRAdmDiside());
  316.                         $article->addRfederation($rfedration);
  317.                     }
  318.                     $statutArticle $params['article']['statut'];
  319.                     $myDiffusion = new ListeDiffusion();
  320.                     $mySubDiffusion = new ListeDiffusionSup();
  321.                     $mySubDiffusion->setArticle($article);
  322.                     $mySubDiffusion->setUtilisateur($this->getUser()->getUtilisateur());
  323.                     $mySubDiffusion->setLu(true);
  324.                     $article->setUtilisateur($this->getUser()->getUtilisateur());
  325.                     $article->setIdCategorie($data['article']['categorie']);
  326.                     // $slug = $this->slugger->slug($article->getTitre());
  327.                     $originalSlug $this->slugger->slug($article->getTitre());
  328.                     $slug $originalSlug;
  329.                     $counter 1;
  330.                     while ($this->slugExists($slug)) {
  331.                         $slug $originalSlug '-' $counter;
  332.                         $counter++;
  333.                     }
  334.                     $article->setSlug($slug);
  335.                     $article->setCreated(new \DateTime());
  336.                     $em->persist($article);
  337.                     $myDiffusion->setArticle($article);
  338.                     $myDiffusion->setUtilisateur($this->getUser()->getUtilisateur());
  339.                     $myDiffusion->setLu(true);
  340.                     $em->persist($mySubDiffusion);
  341.                     $em->persist($myDiffusion);
  342.                     $em->flush();
  343.                     if (isset($params['article']['media']) && $params['article']['media'] != '') {
  344.                         $this->saveMedias($article$params['article']['media']);
  345.                     }
  346.                     if (isset($params['article']['imageCategorie']) && $params['article']['imageCategorie'] != '') {
  347.                         $this->saveMediasCategorie($article$params['article']['imageCategorie']);
  348.                     }
  349.                     if ($statutArticle) {
  350.                         $params = [$article->getId()];
  351.                         $params_string implode(' '$params);
  352.                         $command 'article:update';
  353.                         exec("php ../bin/console $command $params_string --env=prod > /dev/null 2>&1 &");
  354.                         $messageRetour "Article publié";
  355.                     } else {
  356.                         $messageRetour "Article créé";
  357.                     }
  358.                     $data = ['success' => true'data' => $messageRetour];
  359.                 } else {
  360.                     $data = ['success' => false'data' => 'Erreur lors de la validation du formulaire :' . (string) $form->getErrors(falsetrue)];
  361.                 }
  362.             }
  363.         } catch (\Exception $e) {
  364.             $data = ['success' => false'data' => $e->getMessage()];
  365.         }
  366.         return new JsonResponse($data);
  367.     }
  368.     private function slugExists($slug)
  369.     {
  370.         // Vérifier si le slug existe déjà dans la table "article"
  371.         $existingArticle $this->doctrine->getRepository(Article::class)->findOneBy(['slug' => $slug]);
  372.     
  373.         return $existingArticle !== null;
  374.     }
  375.     
  376.     function base64ToImage($base64_string$output_file)
  377.     {
  378.         $ifp fopen($output_file"wb");
  379.         fwrite($ifpbase64_decode((string) $base64_string));
  380.         fclose($ifp);
  381.         return $output_file;
  382.     }
  383.     public function runCommand($command$arguments = [])
  384.     {
  385.         $app = new Application($this->kernel);
  386.         $args array_merge(['command' => $command], $arguments);
  387.         $input = new ArrayInput($args);
  388.         $output = new NullOutput();
  389.         return $app->doRun($input$output);
  390.     }
  391.     /**
  392.      * Finds and displays a Article entity.
  393.      */
  394.     #[Route(path'/api/article/{id}'name'article_show'methods: ['GET'])]
  395.     public function show(Article $article): \Symfony\Component\HttpFoundation\Response
  396.     {
  397.         $deleteForm $this->createDeleteForm($article);
  398.         return $this->render(
  399.             'article/show.html.twig',
  400.             ['article' => $article'delete_form' => $deleteForm->createView()]
  401.         );
  402.     }
  403.     /**
  404.      * Displays a form to edit an existing Article entity.
  405.      */
  406.     #[Route(path'/api/article/{id}/edit'name'article_edit'methods: ['GET''POST'])]
  407.     public function edit(Request $requestArticle $article)
  408.     {
  409.         $idRole $this->getUser()->getUtilisateur()->getIdRole();
  410.         $acces $this->addAccesAdmin($idRole);
  411.         $data json_decode($request->getContent(), true512JSON_THROW_ON_ERROR);
  412.         $datePub explode('/', (string) $data['article']['datePublication']);
  413.         $datePublication = new \DateTime();
  414.         $datePublication->setDate($datePub[2], $datePub[1], intval($datePub[0]));
  415.         $data['article']['datePublication'] = $datePublication->format('Y-m-d');
  416.         $dateFinPub explode('/', (string) $data['article']['dateFinPublication']);
  417.         $dateFinPublication = new \DateTime();
  418.         $dateFinPublication->setDate($dateFinPub[2], $dateFinPub[1], $dateFinPub[0]);
  419.         $data['article']['dateFinPublication'] = $dateFinPublication->format('Y-m-d');
  420.         $request->request->replace(is_array($data) ? $data : []);
  421.         $params $request->request->all();
  422.         if (!$acces) {
  423.             return new RedirectResponse($this->generateUrl('actualite'));
  424.         }
  425.         if ($article->getAction()) $idAction $article->getAction()->getIdAction();
  426.         else $idAction NULL;
  427.         try {
  428.             $session = new Session();
  429.             $deleteForm $this->createDeleteForm($article);
  430.             $em $this->doctrine->getManager();
  431.             $editForm $this->createForm(\App\Form\ArticleType::class, $article, ['role' => $idRole]);
  432.             // $editForm->handleRequest($request);
  433.             $editForm->remove('SousActions');
  434.             $editForm->handleRequest($request);
  435.             if ($editForm->isSubmitted()) {
  436.                 if ($editForm->getData()->getDateFinPublication() <= $editForm->getData()->getDatePublication()) {
  437.                     $editForm->addError(new FormError($this->translator->trans('date.required')));
  438.                 }
  439.                 if (!$editForm->getData()->getContenu()) {
  440.                     $editForm->addError(new FormError($this->translator->trans('contenu.required')));
  441.                 }
  442.                 if (!$editForm->getData()->getResume()) {
  443.                     $editForm->addError(new FormError($this->translator->trans('resume.required')));
  444.                 }
  445.                 if ($editForm->isValid()) {
  446.                     $params $request->request->all();
  447.                     if (in_array($idRole$this->getParameter('groupe1'))) {
  448.                         $affectations $article->getAffectations();
  449.                         $idAffectation $this->getUser()->getIdAffectation();
  450.                         if (!is_null($affectations) and !$affectations->contains($idAffectation)) {
  451.                             $article->addAffectation($this->getUser()->getIdAffectation());
  452.                         }
  453.                     } elseif (in_array($idRole$this->getParameter('groupe2'))) {
  454.                         $r_federations $article->getRfederations();
  455.                         $rfedration $em->getRepository(RFederation::class)->findOneByRAdmDiside($this->getUser()->getIdFederation()->getRAdmDiside());
  456.                         if (!is_null($r_federations) && !$r_federations->contains($rfedration)) {
  457.                             $article->addRfederation($rfedration);
  458.                         }
  459.                     }
  460.                     $article->setUpdated(new \DateTime());
  461.                     $article->setIdCategorie($data['article']['categorie']);
  462.                     $em->persist($article);
  463.                     $listeDiffusions $article->getListeDiffusions();
  464.                     if ($listeDiffusions) {
  465.                         foreach ($listeDiffusions as $listeDiffusion) {
  466.                             $idUtililisateur $listeDiffusion->getUtilisateur()->getIdUtilisateur();
  467.                             if ($idUtililisateur <> $this->getUser()->getUtilisateur()->getIdUtilisateur()) {
  468.                                 $em->remove($listeDiffusion);
  469.                             }
  470.                         }
  471.                     }
  472.                     $listeDiffusionsSup $article->getListeDiffusionsSup();
  473.                     if ($listeDiffusionsSup) {
  474.                         foreach ($listeDiffusionsSup as $listeDiffusion) {
  475.                             $idUtililisateur $listeDiffusion->getUtilisateur()->getIdUtilisateur();
  476.                             if ($idUtililisateur <> $this->getUser()->getUtilisateur()->getIdUtilisateur()) {
  477.                                 $em->remove($listeDiffusion);
  478.                             }
  479.                         }
  480.                     }
  481.                     if (isset($params['article']['media']) && $params['article']['media'] != '') {
  482.                         $this->saveMedias($article$params['article']['media']);
  483.                     }
  484.                     if (isset($params['article']['imageCategorie']) && $params['article']['imageCategorie'] != '') {
  485.                         $this->saveMediasCategorie($article$params['article']['imageCategorie']);
  486.                     }
  487.                     $em->flush();
  488.                     if ($article->getStatut() == true) {
  489.                         $command 'article:update';
  490.                         exec("php ../bin/console $command " $article->getId() . ' --env=prod > /dev/null 2>&1 &');
  491.                     }
  492.                     $data = ['success' => true'data' => 'Article modifié'];
  493.                 } else {
  494.                     $data = ['success' => false'data' => 'Erreur lors de la validation du formulaire :' . (string) $editForm->getErrors(
  495.                         true,
  496.                         false
  497.                     )];
  498.                 }
  499.             } else {
  500.                 $data = ['success' => false'data' => 'Erreur lors de la soumission du formulaire :' . (string) $editForm->getErrors(truefalse)];
  501.             }
  502.         } catch (\Exception $e) {
  503.             $data = ['success' => false'data' => $e->getMessage()];
  504.         }
  505.         return new JsonResponse($data);
  506.     }
  507.     /**
  508.      * Deletes a Article entity.
  509.      */
  510.     #[Route(path'/api/delete/{id}'name'article_delete'requirements: ['id' => '\d+'])]
  511.     public function delete($id)
  512.     {
  513.         $em $this->doctrine->getManager();
  514.         $article $em->getRepository(Article::class)->findOneBy(['id' => $id]);
  515.         try {
  516.             foreach ($article->getListeDiffusions() as $listeDiffusion) {
  517.                 $em->remove($listeDiffusion);
  518.             }
  519.             foreach ($article->getListeDiffusionsSup() as $listeDiffusionSup) {
  520.                 $em->remove($listeDiffusionSup);
  521.             }
  522.             $em->remove($article);
  523.             $em->flush();
  524.             $data = ['success' => true'data' => 'Article supprimé'];
  525.         } catch (\Exception $e) {
  526.             $data = ['success' => false'data' => $e->getMessage()];
  527.         }
  528.         return new JsonResponse($data);
  529.     }
  530.     private function saveMedias($article$mediaIds)
  531.     {
  532.         $em $this->doctrine->getManager();
  533.         $medias json_decode((string) $mediaIdsnull512JSON_THROW_ON_ERROR);
  534.         if (!empty($medias)) {
  535.             foreach ($medias as $idMedia) {
  536.                 $media $em->getRepository(Media::class)->findOneById($idMedia);
  537.                 if ($media instanceof Media) {
  538.                     $media->setArticle($article);
  539.                     $em->flush();
  540.                 }
  541.             }
  542.         }
  543.     }
  544.     private function saveMediasCategorie($article$mediaIds)
  545.     {
  546.         $em $this->doctrine->getManager();
  547.         $medias json_decode((string) $mediaIdsnull512JSON_THROW_ON_ERROR);
  548.         if (!empty($medias)) {
  549.             foreach ($medias as $idMedia) {
  550.                 $media $em->getRepository(Media::class)->findOneById($idMedia);
  551.                 if ($media instanceof Media) {
  552.                     $media->setArticleCategorie($article);
  553.                     $em->flush();
  554.                 }
  555.             }
  556.         }
  557.     }
  558.     #[Route(path'/api/updatenews'name'newsupd')]
  559.     public function updateNews()
  560.     {
  561.         try {
  562.             $insertOrDeleteNews $this->actualiteUpd->updateActu();
  563.             $status = ['Success' => '1''nbNewArticle' => $insertOrDeleteNews];
  564.         } catch (\Exception $ex) {
  565.             $status = ['error' => ['code' => 500'message' => $ex->getMessage()]];
  566.         }
  567.         return new JsonResponse($status);
  568.     }
  569.     #[Route(path'/api/news/{slug}'name'detailarticle')]
  570.     public function detailArticle($slug)
  571.     {
  572.         $em $this->doctrine->getManager();
  573.         $articleUser = [];
  574.         try {
  575.             $articles $em->getRepository(ListeDiffusion::class)->findListeDiffusionValide($this->getUser()->getIdUtilisateur());
  576.             foreach ($articles as $article) {
  577.                 $auteur '';
  578.                 $utilisateur $article->getArticle()->getUtilisateur();
  579.                 $roleUser = !is_null($utilisateur) ? $utilisateur->getRole()->getIdRole() : null;
  580.                 if ($roleUser == || $roleUser == 10 ||  $roleUser == 3) {
  581.                     $auteur "Ministère des sports";
  582.                 } elseif ($roleUser == || $roleUser == 11) {
  583.                     $auteur $this->getUser()->getIdAffectation()->getLibelleLong();
  584.                 } elseif ($roleUser == || $roleUser == 8) {
  585.                     $auteur $em->getRepository(RFederation::class)->findOneBy(["rAdmDiside" => $em->getRepository(UtilisateurInformation::class)->findOneBy(["idUtilisateur" => $article->getUtilisateur()->getIdUtilisateur()])->getIdFederation()->getRAdmDiside()])->getRSerLibl();
  586.                 }
  587.                 $datePublication $article->getArticle()->getDatePublication()->format("d-m-Y");
  588.                 $articleUser[] = ['id' => $article->getArticle()->getId(), 'titre' => $article->getArticle()->getTitre(), 'resume' => $article->getArticle()->getResume(), 'contenu' => $article->getArticle()->getContenu(), 'datePublication' => $datePublication'auteur' => $auteur'image' => '''dataMedias' => $this->explodeArticleMedias($article->getArticle()->getMedias()), 'slug' => $article->getArticle()->getSlug(), 'lu' => $article->getLu() ? true false];
  589.             }
  590.             foreach ($articleUser as $keyArticle => $article) {
  591.                 if ($slug == $article['slug']) {
  592.                     $articleRetour['article'] = $article;
  593.                     $articleRetour['prev'] = $articleUser[$keyArticle 1] ?? false;
  594.                     $articleRetour['next'] = $articleUser[$keyArticle 1] ?? false;
  595.                 }
  596.             }
  597.             $data = ['success' => true'data' => $articleRetour];
  598.         } catch (\Exception $e) {
  599.             $data = ['success' => false'data' => $e->getMessage()];
  600.         }
  601.         return new JsonResponse($data);
  602.     }
  603.     #[Route(path'/api/read'name'numbreread')]
  604.     public function numbreNotRead()
  605.     {
  606.         try {
  607.             $em $this->doctrine->getManager();
  608.             $listeDiffusion $em->getRepository(ListeDiffusion::class)->findnumberOfArticleNotRead($this->getUser()->getIdUtilisateur());
  609.             $nombre is_countable($listeDiffusion) ? count($listeDiffusion) : 0;
  610.             $status = ['Success' => '1''NbNotRead' => $nombre];
  611.         } catch (\Exception $ex) {
  612.             $status = ['error' => ['code' => 500'message' => $ex->getMessage()]];
  613.         }
  614.         return new JsonResponse($status);
  615.     }
  616.     /**
  617.      * Creates a form to delete a Article entity.
  618.      *
  619.      * @param Article $article The Article entity
  620.      *
  621.      * @return \Symfony\Component\Form\Form The form
  622.      */
  623.     private function createDeleteForm(Article $article)
  624.     {
  625.         return $this->createFormBuilder()
  626.             ->setAction($this->generateUrl('article_delete', ['id' => $article->getId()]))
  627.             ->setMethod(\Symfony\Component\HttpFoundation\Request::METHOD_DELETE)
  628.             ->getForm();
  629.     }
  630.     private function addAccesAdmin($idRole)
  631.     {
  632.         if (in_array($idRole$this->getParameter('groupe1')) || in_array(
  633.             $idRole,
  634.             $this->getParameter('groupe2')
  635.         ) || in_array(
  636.             $idRole,
  637.             $this->getParameter('groupe3')
  638.         )) {
  639.             $acces true;
  640.         } else {
  641.             $acces false;
  642.         }
  643.         return $acces;
  644.     }
  645.     #[Route(path'/api/liste_affectation_article'name'liste_affectation_article')]
  646.     public function getAffectationArticle()
  647.     {
  648.         $em $this->doctrine->getManager();
  649.         $refAffectRep $em->getRepository(RefAffectation::class);
  650.         $listeAffectations = [];
  651.         $role $this->getUser()->getUtilisateur()->getIdRole();
  652.         $affectationUser $this->getUser()->getIdAffectation();
  653.         $idAffectation $affectationUser && ($role == RefRole::ROLE_DR || $role == RefRole::ROLE_DR_SIGNATAIRE) ? $affectationUser->getIdAffectation() : null;
  654.         $affectations $refAffectRep->getAffectationEnabled($idAffectation);
  655.         foreach ($affectations as $affectation) {
  656.             $listeAffectations[] = ["id" => $affectation['idAffectation'], "libelle" => $affectation['libelleLong'], "numero" => $affectation['codeRegion']];
  657.         }
  658.         $data = ['success' => true'data' => $listeAffectations];
  659.         return new JsonResponse($data);
  660.     }
  661.     #[Route(path'/api/liste_affectation'name'liste_affectation')]
  662.     public function getAffectation()
  663.     {
  664.         $em $this->doctrine->getManager();
  665.         $refAffectRep $em->getRepository(RefAffectation::class);
  666.         $listeAffectations = [];
  667.         $affectations $refAffectRep->getAffectationEnabled();
  668.         foreach ($affectations as $affectation) {
  669.             $listeAffectations[] = ["id" => $affectation['idAffectation'], "libelle" => $affectation['libelleLong'], "numero" => $affectation['codeRegion']];
  670.         }
  671.         $data = ['success' => true'data' => $listeAffectations];
  672.         return new JsonResponse($data);
  673.     }
  674.     #[Route(path'/api/liste_federation_article'name'liste_federation_article')]
  675.     public function getFederationArticle()
  676.     {
  677.         $em $this->doctrine->getManager();
  678.         $listeFederations = [];
  679.         $federations $em->getRepository(RFederation::class)->findAll();
  680.         $role $this->getUser()->getUtilisateur()->getIdRole();
  681.         $federationUser = ($this->getUser()->getIdFederation() != null) ? $this->getUser()->getIdFederation()->getRAdmDiside() : "";
  682.         $listAllFede = [];
  683.         foreach ($federations as $federation) {
  684.             if ($federation->getRAdmDisciplineId()) {
  685.                 if ($role == || $role == 8) {
  686.                     $fede $federation->getRAdmDiside();
  687.                     if ($federationUser == $fede) {
  688.                         $refFederation $em->getRepository(RefFederation::class)->findOneBy(["rAdmDiside" => $fede]);
  689.                         if ($refFederation->getFederationActive()) {
  690.                             $listeFederations[] = ["id" => $refFederation->getIdFederation(), "idRFede" => $federation->getRAdmDisciplineId(), "rAdmDiside" => $fede"libelle" => $federation->getRSerLibl()];
  691.                         }
  692.                     }
  693.                 } else {
  694.                     $refFederation $em->getRepository(RefFederation::class)->findOneBy(["rAdmDiside" => $federation->getRAdmDiside()]);
  695.                     $idFederation $refFederation->getIdFederation();
  696.                     if ($refFederation->getFederationActive()) {
  697.                         if (!in_array($idFederation$listAllFede)) {
  698.                             $listeFederations[] = ["id" => $refFederation->getIdFederation(), "idRFede" => $federation->getRAdmDisciplineId(), "rAdmDiside" => $federation->getRAdmDiside(), "libelle" => $federation->getRSerLibl()];
  699.                         }
  700.                         $listAllFede[] = $idFederation;
  701.                     }
  702.                 }
  703.             }
  704.         }
  705.         $data = ['success' => true'data' => $listeFederations];
  706.         return new JsonResponse($data);
  707.     }
  708.     #[Route(path'/api/liste_poste_article'name'liste_poste_article')]
  709.     public function getPosteArticle()
  710.     {
  711.         $em $this->doctrine->getManager();
  712.         $role $this->getUser()->getUtilisateur()->getIdRole();
  713.         $listePoste = [];
  714.         $postes $em->getRepository(RefPoste::class)->getPosteAutorise($role);
  715.         foreach ($postes as $poste) {
  716.             $listePoste[] = ["id" => $poste->getIdPoste(), "libelle" => $poste->getLibellePoste()];
  717.         }
  718.         $data = ['success' => true'data' => $listePoste];
  719.         return new JsonResponse($data);
  720.     }
  721.     #[Route(path'/api/media'name'cts_web_media')]
  722.     public function uploadFile(Request $request)
  723.     {
  724.         try {
  725.             $media = new Media();
  726.             $form $this->createForm(\App\Form\MediaType::class, $media);
  727.             $form->handleRequest($request);
  728.             if ($form->isSubmitted() && $form->isValid()) {
  729.                 $dir $this->getParameter('dir_file_media');
  730.                 $media->setRootDir($dir);
  731.                 $em $this->doctrine->getManager();
  732.                 $em->persist($media);
  733.                 $em->flush();
  734.                 $env = ["idUpload" => $media->getId(), "msgUploadOK" => 'Le téléchargement de la pièce jointe a été effectué avec succès'"msgUploadERROR" => """urlFile" => $media->getAssetPath(), "filename" => $media->getName()];
  735.             } else {
  736.                 $env = ["idUpload" => ''"msgUploadOK" => ''"msgUploadERROR" => (string) $form->getErrors(truefalse), "urlFile" => '''filename' => ''];
  737.             }
  738.             return new JsonResponse($env);
  739.         } catch (\Exception $e) {
  740.             $env = ["idUpload" => ''"msgUploadOK" => ''"msgUploadERROR" => $e->getMessage(), "urlFile" => '''filename' => ''];
  741.             return new JsonResponse($env);
  742.         }
  743.     }
  744.     #[Route(path'/api/delete_upload_media'name'media_delete')]
  745.     public function deleteUpload(Request $request)
  746.     {
  747.         try {
  748.             $data json_decode($request->getContent(), true512JSON_THROW_ON_ERROR);
  749.             $request->request->replace(is_array($data) ? $data : []);
  750.             $params $request->request->all();
  751.             $idFileUpload $params['delete_fileUpload']['idFileUpload'];
  752.             $em $this->doctrine->getManager();
  753.             $media $em->getRepository(Media::class)->find($idFileUpload);
  754.             if ($media) {
  755.                 $name $media->getPath();
  756.                 unlink($this->getParameter('dir_file_media') . $name);
  757.                 $em->remove($media);
  758.                 $em->flush();
  759.             }
  760.             $data = ['success' => true'data' => 'Suppression effectuée avec succès'];
  761.             return new JsonResponse($data);
  762.         } catch (\Exception $e) {
  763.             $data = ['success' => false'data' => $e->getMessage()];
  764.             return new JsonResponse($data);
  765.         }
  766.     }
  767.     #[Route(path'/api/send_article_mail/{id}'name'send_article_mail')]
  768.     public function sendArticle($id)
  769.     {
  770.         $em $this->doctrine->getManager();
  771.         try {
  772.             $article $em->getRepository(Article::class)->find($id);
  773.             $roleUser $article->getUtilisateur()->getRole()->getIdRole();
  774.             $auteur '';
  775.             if ($roleUser == 1) {
  776.                 $auteur "Ministère des sports";
  777.             } elseif ($roleUser == || $roleUser == 11) {
  778.                 $auteur $this->getUser()->getIdAffectation()->getLibelleLong();
  779.             } elseif ($roleUser == || $roleUser == 8) {
  780.                 $auteur $em->getRepository(RFederation::class)->findOneBy(["rAdmDiside" => $em->getRepository(UtilisateurInformation::class)->findOneBy(["idUtilisateur" => $article->getUtilisateur()->getIdUtilisateur()])->getIdFederation()->getRAdmDiside()])->getRSerLibl();
  781.             }
  782.             $titre $article->getTitre();
  783.             $resume $article->getResume();
  784.             $contenu $article->getContenu();
  785.             $date $article->getDatePublication()->format("d/m/Y");
  786.             $subject "[$auteur$date - $titre";
  787.             $message = (new Email());
  788.             $message->subject($subject)
  789.                 ->from('cts-web.assistance@sports.gouv.fr')
  790.                 ->to($this->getUser()->getUtilisateur()->getCourriel())
  791.                 ->html(
  792.                     $this->twig->render(
  793.                         'Article/email_article.html.twig',
  794.                         ['titre' => $titre'resume' => $resume'contenu' => $contenu]
  795.                     ),
  796.                     'text/html'
  797.                 );
  798.             $medias $article->getMedias();
  799.             if (!empty($medias)) {
  800.                 foreach ($medias as $media) {
  801.                     $validMedia $this->isValidateMedia($media);
  802.                     if ($validMedia) {
  803.                         $mediaPath $this->getParameter('dir_file_media') . $media->getPath();
  804.                         //$message->attach(\Swift_Attachment::fromPath($mediaPath));
  805.                         $message->attachFromPath($mediaPath);
  806.                     }
  807.                 }
  808.             }
  809.             if ($this->mailer->send($message)) {
  810.                 $data "Mail envoyé";
  811.             } else {
  812.                 $data "Erreur lors de l'envoi du mail";
  813.             }
  814.             $data = ['success' => true'data' => $data];
  815.         } catch (\Exception $e) {
  816.             $data = ['success' => false'data' => $e->getMessage()];
  817.         }
  818.         return new JsonResponse($data);
  819.     }
  820.     #[Route(path'/api/actualite_cts'name'actualite_cts')]
  821.     public function listeActualiteCts()
  822.     {
  823.         $em $this->doctrine->getManager();
  824.         $articleUser = [];
  825.         $user $this->getUser();
  826.         $uid $user->getUtilisateur();
  827.         $uiRep $em->getRepository(UtilisateurInformation::class);
  828.         $ui $this->getUser();
  829.         $posteId = [];
  830.         try {
  831.             $listes $em->getRepository(ListeDiffusionSup::class)->getListeArticles($user->getUtilisateur(), $ui);
  832.             $posteAll $this->getPosteArticle();
  833.             $posteDecode json_decode((string) $posteAll->getContent(), null512JSON_THROW_ON_ERROR);
  834.             foreach ($listes as $listeDiffusion) {
  835.                 $auteur null;
  836.                 if (!isset($listeDiffusion['id'])) {
  837.                     $article =  $em->getRepository(ListeDiffusionSup::class)->getArtcile();
  838.                 } else {
  839.                     $article $em->getRepository(Article::class)->findOneBy(['id' => $listeDiffusion['id']]);
  840.                 }
  841.                 $acticleUtillisateur $article->getUtilisateur();
  842.                 $roleUser $acticleUtillisateur $acticleUtillisateur->getIdRole() : null;
  843.                 foreach ($article->getPostes() as $poste) {
  844.                     $posteId[] = $poste->getIdPoste();
  845.                 }
  846.                 foreach ($posteDecode->data as $posteDec) {
  847.                     $postes[] = ["id" => $posteDec->id"libelle" => $posteDec->libelle"libelleModif" => $posteDec->libelle 'Modif'"checked" => (in_array($posteDec->id$posteId) ? true false)];
  848.                 }
  849.                 $userArticle $acticleUtillisateur $em->getRepository(UtilisateurInformation::class)->findOneBy(["idUtilisateur" => $acticleUtillisateur->getIdUtilisateur()]) : null;
  850.                 if ($roleUser == RefRole::ROLE_DS_ADMIN || $roleUser == RefRole::ROLE_DS_SIGNATAIRE || $roleUser == RefRole::ROLE_DS_INVITE) {
  851.                     $auteur "Ministère des sports";
  852.                 } elseif ($roleUser == RefRole::ROLE_DR || $roleUser == RefRole::ROLE_DR_SIGNATAIRE) {
  853.                     $auteur $userArticle $userArticle->getIdAffectation()->getLibelleLong() : "";
  854.                 } elseif ($roleUser == RefRole::ROLE_FEDE || $roleUser == RefRole::ROLE_FEDE_INVITE) {
  855.                     $auteur $em->getRepository(RFederation::class)->findOneBy(["rAdmDiside" => $userArticle->getIdFederation()->getRAdmDiside()])->getRSerLibl();
  856.                 }
  857.                 $datePublication $article->getDatePublication()->format("d-m-Y");
  858.                 $categ $em->getRepository(Categorie::class)->findOneBy(['id' => $article->getIdCategorie()]);
  859.                 $explodeArticleMedias $this->explodeArticleMedias($categ->getMedias());
  860.                 $articleUser[] = [
  861.                     'id' => $article->getId(),
  862.                     'titre' => $article->getTitre(),
  863.                     'resume' => $article->getResume(),
  864.                     'datePublication' => $datePublication,
  865.                     'auteur' => $auteur,
  866.                     'image' => '',
  867.                     'postes' => $postes,
  868.                     'dataMedias' => $this->explodeArticleMedias($article->getMedias()),
  869.                     'idCategorie' => ($categ != null) ? $categ->getId() : null,
  870.                     'nomCategorie' => ($categ != null) ? $categ->getNomCategorie() : null,
  871.                     'imageCategorie' => $this->explodeArticleMedias($article->getMediasCategorie()),
  872.                     'imageCategorieDefault' => ($categ != null) ? [end($explodeArticleMedias)] : [],
  873.                     'slug' => $article->getSlug()
  874.                 ];
  875.             }
  876.             $data = ['success' => true'data' => isset($articleUser[0]) ? $articleUser : []];
  877.         } catch (\Exception $e) {
  878.             $data = ['success' => false'data' => $e->getMessage()];
  879.         }
  880.         return new JsonResponse($data);
  881.     }
  882.     #[Route(path'/api/news_cts/{slug}'name'detail_cts_article')]
  883.     public function detailArticleCts($slug)
  884.     {
  885.         $em $this->doctrine->getManager();
  886.         $articleUser = [];
  887.         $idarticleUnique 0;
  888.         $user $this->getUser();
  889.         try {
  890.             $listes $em->getRepository(ListeDiffusionSup::class)->getListeArticles($user->getUtilisateur(), $user);
  891.             foreach ($listes as $listeDiffusion) {
  892.                 $auteur null;
  893.                 // if (!isset($listeDiffusion->id)) {
  894.                 //     $article =  $listeDiffusion->getArticle();
  895.                 // } else {
  896.                 //     $article = $em->getRepository(Article::class)->findOneBy(['id' => $listeDiffusion->id]);
  897.                 // }
  898.                 $article $em->getRepository(Article::class)->findOneBy(['id' => $listeDiffusion['id']]);
  899.                 $auteur null;
  900.                 $utilisateur $article->getUtilisateur();
  901.                 if (null !== $utilisateur) {
  902.                     $idUtilisateur $utilisateur->getIdUtilisateur();
  903.                     $utilisateurInformation $em->getRepository(UtilisateurInformation::class)->findOneBy(['idUtilisateur' => $idUtilisateur]);
  904.                     $refFederation $utilisateurInformation->getIdFederation();
  905.                     if (null !== $utilisateurInformation->getIdAffectation()) {
  906.                         $RefAffectationController $utilisateurInformation->getIdAffectation()->getIdAffectation();
  907.                     } else {
  908.                         $RefAffectationController 1;
  909.                     }
  910.                     $utilisateurAffectation $em->getRepository(RefAffectation::class)->findOneBy(['idAffectation' =>  $RefAffectationController]);
  911.                     $utilisateurAffectationLibelle $utilisateurAffectation->getLibelleAffectation();
  912.                     $uiauteur $em->getRepository(UtilisateurInformation::class)->findDataForPageProfil($idUtilisateur);
  913.                     $utilisateurFederationLibelle $uiauteur['rSerLibl'];
  914.                     if (null !== $utilisateurFederationLibelle) {
  915.                         $defaultAuteur $utilisateurFederationLibelle;
  916.                     } elseif (null !==  $utilisateurAffectationLibelle) {
  917.                         $defaultAuteur "Secteur " $utilisateurAffectationLibelle;
  918.                     } else {
  919.                         $defaultAuteur "Ministère en charge des sports";
  920.                     }
  921.                     $roleUser = !is_null($utilisateur) ? $utilisateur->getRole()->getIdRole() : null;
  922.                     if ($roleUser == || $roleUser == 8) {
  923.                         if (null != $em->getRepository(RefGabarit::class)->findBy(['idFederation' => $refFederation->getIdFederation()])) {
  924.                             $enteteGabarit = (null != $em->getRepository(RefGabarit::class)->getDetailsGabaritDTN($refFederation->getIdFederation())) ? $em->getRepository(RefGabarit::class)->getDetailsGabaritDTN($refFederation->getIdFederation())->getEntete() : 'Ministère des Sports';
  925.                             $auteur = ((null !== $enteteGabarit) && ('' !== $enteteGabarit)) ? $enteteGabarit $defaultAuteur;
  926.                         } else {
  927.                             $auteur $defaultAuteur;
  928.                         }
  929.                     } elseif ($roleUser == || $roleUser == || $roleUser == 10) {
  930.                         $enteteGabarit = (null != $em->getRepository(RefGabarit::class)->getDetailsGabaritDS()) ? $em->getRepository(RefGabarit::class)->getDetailsGabaritDS()->getEntete() : 'Ministère des Sports';
  931.                         $auteur = ((null !== $enteteGabarit) && ('' !== $enteteGabarit)) ? $enteteGabarit $defaultAuteur;
  932.                     } elseif ($roleUser == 4  || $roleUser == 11) {
  933.                         $enteteGabarit = (null != $em->getRepository(RefGabarit::class)->getDetailsGabaritDR($RefAffectationController)) ? $em->getRepository(RefGabarit::class)->getDetailsGabaritDR($RefAffectationController)->getEntete() : 'Ministère des Sports';
  934.                         $auteur = ((null !== $enteteGabarit) && ('' !== $enteteGabarit)) ? $enteteGabarit $defaultAuteur;
  935.                     } else {
  936.                         $findBy $em->getRepository(RefGabarit::class)->findBy(['idAffectation' => $RefAffectationController]);
  937.                         $findBy2 $em->getRepository(RefGabarit::class)->findBy(['idAffectation' => $RefAffectationController]);
  938.                         $enteteGabarit = (null != end($findBy)) ? end($findBy2)->getEntete() : 'Ministère des Sports';
  939.                         $auteur = ((null !== $enteteGabarit) && ('' !== $enteteGabarit)) ? $enteteGabarit $defaultAuteur;
  940.                     }
  941.                     $categ $em->getRepository(Categorie::class)->findOneBy(['id' => $article->getIdCategorie()]);
  942.                     $datePublication $article->getDatePublication()->format("d-m-Y");
  943.                     $explodeArticleMedias $this->explodeArticleMedias($categ->getMedias());
  944.                     $articleUser[] = ['id' => $article->getId(), 'titre' => $article->getTitre(), 'resume' => $article->getResume(), 'contenu' => $article->getContenu(), 'datePublication' => $datePublication'auteur' => $auteur'image' => '''dataMedias' => $this->explodeArticleMedias($article->getMedias()), 'idCategorie' => ($categ != null) ? $categ->getId() : null'nomCategorie' => ($categ != null) ? $categ->getNomCategorie() : null'imageCategorie' => $this->explodeArticleMedias($article->getMediasCategorie()), 'imageCategorieDefault' => ($categ != null) ? [end($explodeArticleMedias)] : [], 'slug' => $article->getSlug()];
  945.                 }
  946.             }
  947.             $dataUnique = [];
  948.             foreach ($articleUser as $article) {
  949.                 if (!array_key_exists($article['id'], $dataUnique)) {
  950.                     $dataUnique[$article['id']] = $article;
  951.                 }
  952.             }
  953.             $articleUser array_values($dataUnique);
  954.             $articleRetour = [];
  955.             foreach ($articleUser as $keyArticle => $article) {
  956.                 if ($slug == $article['slug']) {
  957.                     $articleRetour['article'] = $article;
  958.                     $articleRetour['prev'] = $articleUser[$keyArticle 1] ?? false;
  959.                     $articleRetour['next'] = $articleUser[$keyArticle 1] ?? false;
  960.                 }
  961.             }
  962.             $data = ['success' => true'data' => $articleRetour];
  963.         } catch (\Exception $e) {
  964.             $data = ['success' => false'data' => $e->getMessage()];
  965.         }
  966.         return new JsonResponse($data);
  967.     }
  968. }