src/Controller/DefaultController.php line 26

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: grego
  5.  * Date: 31/05/2022
  6.  * Time: 16:00
  7.  */
  8. namespace App\Controller;
  9. use App\Entity\Feedback;
  10. use App\Entity\SharedFeedback;
  11. use App\Repository\FeedbackRepository;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Contracts\Translation\TranslatorInterface;
  18. class DefaultController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("/", name="coss_dashboard")
  22.      */
  23.     public function indexAction(TranslatorInterface $translator)
  24.     {
  25.         $user $this->getUser();
  26.         if($user && in_array('ROLE_COSS_TUTOR'$user->getRoles())) {
  27.             return $this->redirectToRoute('list_learning_period_recipients');
  28.         } elseif ($user && in_array('ROLE_COSS_SCHOOL_ADMIN'$user->getRoles())){
  29.             return $this->redirectToRoute('school_admin_list_students');
  30.         } elseif ($user && in_array('ROLE_COSS_SCHOOL_REFERENT'$user->getRoles())){
  31.             return $this->redirectToRoute('school_referent_list_students');
  32.         } elseif ($user && in_array('ROLE_COSS_OPCO'$user->getRoles())){
  33.             return $this->redirectToRoute('opco_dashboard');
  34.         } elseif ($user && in_array('ROLE_SUPER_ADMIN'$user->getRoles())){
  35.             return $this->redirectToRoute('mistral_agents_list');
  36.         } else {
  37.             if ($user) {
  38.                 $msg $translator->trans(
  39.                     "Vous n'avez pas accès à l'interface COSS",
  40.                     array(), 'coss'
  41.                 );
  42.                 $this->addFlash("error"$msg);
  43.             }
  44.             return $this->redirectToRoute("login");
  45.         }
  46.     }
  47.     /**
  48.      * @Route("/shared-feedback/{token}/{status}")
  49.      */
  50.     public function sharedFeedbackAction(Request $requestEntityManagerInterface $entityManager$token$status=false)
  51.     {
  52.         $shared $entityManager->getRepository(SharedFeedback::class)->findOneByToken($token);
  53.         if($shared){
  54.             $canAccessFeedback false;
  55.             $errorMessage "";
  56.             switch($shared->getType()) {
  57.                 case 'email':
  58.                     $canAccessFeedback $shared->getAnswers() < 10//Si moins de 10 personnes ont répondu
  59.                     $errorMessage "Nombre de réponses maximal atteint.";
  60.                     break;
  61.                 case 'gmail':
  62.                     $canAccessFeedback $shared->getAnswers() < 10//Si moins de 10 personnes ont répondu
  63.                     $errorMessage "Nombre de réponses maximal atteint.";
  64.                     break;
  65.                 case 'sms':
  66.                     $canAccessFeedback $shared->getAnswers() < 10//Si moins de 10 personnes ont répondu
  67.                     $errorMessage "Nombre de réponses maximal atteint.";
  68.                     break;
  69.                 case 'link':
  70.                     $canAccessFeedback = (strtotime($shared->getCreatedAt()->format("Y-m-d H:i:s")) > time() - 604800) && $shared->getAnswers() < 100//Si la date de création du feedback est supérieure à il y a 7j et qu'il y a moins de 100 réponses
  71.                     $errorMessage "Délai maximal de réponse dépassé.";
  72.                     break;
  73.             }
  74.             if($canAccessFeedback){
  75.                 $feedback = new Feedback();
  76.                 $feedback->setSkill($shared->getSkill());
  77.                 $feedback->setSender($shared->getSender());
  78.                 $feedback->setStatus(FeedbackRepository::STATUS_PENDING);
  79.                 if($shared->getEventTitle()){
  80.                     $feedback->setEventTitle($shared->getEventTitle());
  81.                 }
  82.                 $entityManager->persist($feedback);
  83.                 $entityManager->flush();
  84.                 $shared->setAnswers$shared->getAnswers() + 1);
  85.                 $entityManager->persist($shared);
  86.                 $entityManager->flush();
  87.             } else {
  88.                 return new Response($errorMessage401);
  89.             }
  90.         }else{
  91.             if(!$status){
  92.                 return $this->redirect("https://manager.globalcosspro.com/shared-feedback/".$token."/true");
  93.             } else {
  94.                 return $this->redirect("https://www.globalcoss.com/event/?code=invalid");
  95.             }
  96.         }
  97.         switch($shared->getType()) {
  98.             case 'sms':
  99.                 return $this->redirect($feedback->getGuestUrl());
  100.                 break;
  101.             case 'email':
  102.                 return $this->redirect($feedback->getGuestUrl());
  103.                 break;
  104.             case 'gmail':
  105.                 return $this->redirect($feedback->getGuestUrl());
  106.                 break;
  107.             case 'link':
  108.                 return $this->redirect($feedback->getGuestUrl()."?guest=true");
  109.                 break;
  110.             default:
  111.                 return new Response($errorMessage401);
  112.                 break;
  113.         }
  114.     }
  115. }