/**
  * La fonction addGuest(Request $request) permet d'ajouter un invité à un événement si ce dernier existe, qu'il n'est pas complet et si les données sont valides.
  * @param Request $request - La requête contenant les paramètres.
  * @return Redirect - Une redirection avec les messages selon le bon déroulement de la fonction.
  */
 public function addGuest(Request $request)
 {
     $data = $request->all();
     $validator = Validator::make($request->all(), ['eventId' => "required|integer", 'first_name' => 'required|string', 'last_name' => 'required|string', 'email' => 'required|email', 'gender' => 'required|string|in:male,female']);
     if ($validator->passes()) {
         if (Event::existTechId($data['eventId'])) {
             $event = Event::find($data['eventId']);
             if (Event::isNotSoldOut($event->id)) {
                 if (!Guest::exist($data['email'])) {
                     $guest = new Guest();
                     $guest->first_name = $data['first_name'];
                     $guest->last_name = $data['last_name'];
                     $guest->email = $data['email'];
                     $guest->gender = $data['gender'];
                     $guest->save();
                 } else {
                     $guest = Guest::where('email', $data['email'])->first();
                     if (Guest::participateToEvent($data['eventId'], $guest->id)) {
                         return redirect('/events')->with('error', $guest->first_name . ' ' . $guest->last_name . ' participe déjà à l\'événement ' . $event->name);
                     }
                 }
                 $event->guests()->attach($guest->id);
                 return redirect('/events')->with('status', $guest->first_name . ' ' . $guest->last_name . ' a été ajouté à l\'événement ' . $event->name);
             }
             return redirect('/events')->with('error', 'Cet événement est complet');
         }
         return redirect('/events')->with('error', 'Cet événement n\'existe pas');
     }
     return redirect('/events')->withErrors($validator)->withInput();
 }