Example #1
0
 public function joinRun($id)
 {
     // securise la page
     $this->allowTo('member');
     // recuperation de l user en session
     $userId = $this->getUser();
     // debug($userId);
     // test que l id envoyé en parametre correspond bien a un run existant
     $runningManager = new RunningManager();
     $run = $runningManager->find($id);
     if ($run) {
         // instanciation d un objet de type User_runningManager
         $user_runningManager = new User_runningManager();
         // test que l user ne participe pas deja a la course
         $participation = $user_runningManager->findWithUserAndRun($userId['id'], $run['id']);
         if ($participation) {
             echo "Vous êtes déjà enregistré pour cette course.";
         } else {
             $allRuns = $user_runningManager->insert(['user_id' => $userId['id'], 'running_id' => $run['id']]);
             $this->redirectToRoute('runProfile', ['id' => $run['id']]);
         }
     } else {
         $this->show('w_errors/404');
     }
 }
 public function createrunSubmit()
 {
     // echo '$_POST'; debug($_POST);
     // Affecter une variable à chaque valeur clé de $_POST
     $address = trim(htmlentities($_POST['address']));
     $city = trim(htmlentities($_POST['city']));
     $country = trim(htmlentities($_POST['country']));
     $runName = trim(htmlentities($_POST['runName']));
     $description = trim(htmlentities($_POST['runDescription']));
     $departureDate = trim(htmlentities($_POST['departureDate']));
     $departureTime = trim(htmlentities($_POST['departureTime']));
     $distance = trim(htmlentities($_POST['distance']));
     $speed = trim(htmlentities($_POST['speed']));
     // Initialisation d'un tableau d'erreurs (associatif)
     $errors = [];
     // recuperation de l user en session pour identifier l'organisateur du run
     $userId = $this->getUser();
     // echo '$userId';	debug($userId);
     // check que les champs d adresse ne sont pas empty
     if (empty($address)) {
         $errors['address'] = "Merci de vérifier l'adresse.";
     }
     if (empty($city)) {
         $errors['city'] = "Merci de vérifier la ville.";
     }
     if (empty($country)) {
         $errors['country'] = "Merci de vérifier la pays.";
     }
     if (empty($runName)) {
         $errors['runName'] = "Merci de compléter le nom de la course.";
     }
     if (empty($departureDate)) {
         $errors['departureDate'] = "Merci de renseigner la date.";
     }
     if ($departureTime == 0) {
         $errors['departureTime'] = "Merci de renseigner l'heure de départ.";
     }
     if ($distance == 0) {
         $errors['distance'] = "Merci de renseigner la distance.";
     }
     if ($speed == 0) {
         $errors['speed'] = "Merci de renseigner la vitesse prévue.";
     }
     // si tous les champs pour l adresse sont ok -> concatenation de l adresse pour la geocoder
     if (empty($errors)) {
         $fullAddress = $address . ' ' . $city . ' ' . $country;
         // recuperation dans une variable des coords envoyees par la fct geocode
         $coords = $this->geocode($fullAddress);
         // echo '$coords'; debug($coords);
         if (empty($coords)) {
             $errors['coords'] = "Adresse introuvable. Merci de vérifier l'adresse.";
         }
         if (empty($errors)) {
             // instanciation d'un object de type RunningManager
             $runningManager = new RunningManager();
             // objet datetime
             $date = new DateTime();
             $run = $runningManager->insert(['address' => $address, 'city' => $city, 'country' => $country, 'latitude' => $coords['lat'], 'longitude' => $coords['lng'], 'run_name' => $runName, 'description' => $description, 'departure_date' => $departureDate, 'departure_time' => $departureTime, 'distance' => $distance, 'speed' => $speed, 'created_at' => $date->format('Y-m-d H:i:s'), 'updated_at' => $date->format('Y-m-d H:i:s'), 'user_id' => $userId['id']]);
             // echo '$run'; debug($run);
             if ($run) {
                 $_SESSION['message'] = "Vos modifications ont bien été enregistrées.";
             } else {
                 $_SESSION['message'] = "Une erreur est intervenue. La course n'a pas été enregistrée.";
             }
             $this->redirectToRoute('seekrun');
         }
     } else {
         $this->show('run/createrun', ['errors' => $errors]);
     }
 }