Ejemplo n.º 1
0
 /**
  * Envoie une demande de participation a l'activité courrante
  * @param <i>(Activite)</i> id de l'activite courrante
  * @param <i>(Utilisateur)</i> id de l'utilisateur concerner
  * @return <i>Render</i> redirige sur moove_activite_detailsActivite + activite actuel
  */
 public function demandeParticipationActiviteAction($idActivite, $idUtilisateur)
 {
     if ($idUtilisateur == $this->getUser()->getId()) {
         // On récupère le repository Activite
         $repActivite = $this->getRepository('Activite');
         // On récupère l'activité
         $activite = $repActivite->find($idActivite);
         // On récupère le nombre de participants de l'activité
         $nbParticipants = $this->getNbParticipantsActivite($idActivite);
         // On récupère la date du jour
         $dateAujourdhui = new \Datetime();
         // On vérifié que l'activité n'est pas remplie et que l'activité n'est pas terminée
         if ($activite->getNbPlaces() > $activite->getNbParticipants() && $dateAujourdhui < $activite->getDateFermeture() && !$activite->getEstTerminee()) {
             // On récupère le repository Activite
             $repParticiper = $this->getRepository('Participer');
             // On récupère l'objet Participer de l'utilisateur ayant demandé la participation avec l'id $idUtilisateur
             $participer = new Participer();
             // On accepte l'utilisateur dans l'activité
             $participer->setActivite($activite)->setUtilisateur($this->getUser())->setEstAccepte(0);
             // On appelle le gestionnaire d'entité
             $gestionnaireEntite = $this->getDoctrine()->getManager();
             // On persiste la participation dans la base de données
             $gestionnaireEntite->persist($participer);
             // On enregistre la modification en base de données
             $gestionnaireEntite->flush();
             // On ajoute un message flash à la session afin de notifier l'utilisateur que la demande a été envoyée
             $this->addFlash('notice', "Votre demande de participation a été envoyée ! L'organisateur doit accepter votre demande pour que vous participiez à l'activité.");
         } else {
             $this->addFlash('notice', "La data limite d'inscription est dépassée ou il n'y a plus de places disponibles dans l'activité.");
         }
     } else {
         $this->addFlash('notice', "Vous ne pouvez pas inscrire quelqu'un d'autre que vous même.");
     }
     return $this->redirect($this->generateUrl('moove_activite_detailsActivite', ['idActivite' => $activite->getId()]));
 }