public function storeTypeSemaine()
 {
     $nature = '0000000X';
     $libelle = Input::get('libelle');
     $type = new TypeSemaine();
     Input::get('lun') ? $nature[0] = 1 : 0;
     Input::get('mar') ? $nature[1] = 1 : 0;
     Input::get('mer') ? $nature[2] = 1 : 0;
     Input::get('jeu') ? $nature[3] = 1 : 0;
     Input::get('ven') ? $nature[4] = 1 : 0;
     Input::get('sam') ? $nature[5] = 1 : 0;
     Input::get('scol') ? $nature[7] = "S" : 0;
     Input::get('vac') && $nature[7] == "S" ? $nature[7] = "T" : Input::get('vac') ? $nature[7] = "V" : 0;
     // (Input::get('periode') == "scol") ? $nature[7] = "S" : 0;
     // (Input::get('periode') == "vac") ? $nature[7] = "V" : 0;
     // (Input::get('periode') == "scolvac") ? $nature[7] = "T" : 0;
     $type->libelleTypeSemaine = $libelle;
     $type->nature = $nature;
     $type->save();
     Session::flash('flash_msg', "Le nouveau type de semaine a bien été ajouté.");
     Session::flash('flash_type', "success");
     return Redirect::to(URL::previous());
 }
Exemple #2
0
 /**
  * Retourne le(s) ID(s) du type de la semaine correspondant à la date en parametre dans un tableau
  */
 public static function getIdType($date)
 {
     $isHoliday = Periode::isHoliday($date);
     $day = Periode::getDay($date);
     $types = TypeSemaine::all();
     $results = [];
     // Si le jour n'est pas dimanche
     if ($day != "0") {
         $day--;
         // On diminue de 1 pour correspondre à la position de la valeur dans nature
     } else {
         $day = "6";
         // La position dans nature est de 6
     }
     // Parcourir tous les types de semaine
     foreach ($types as $type) {
         // Initialisation des variables à chaque itération
         $isDayOk = false;
         $isPeriodOk = false;
         $found = false;
         // Vérification du "1" à la place du jour de la date (-1 puisque provenant de getdate())
         if ($type->nature[$day] == "1") {
             $isDayOk = true;
         }
         // Vérification de V / S / T en fonction de la période (vacances ou non)
         if ($isHoliday) {
             if ($type->nature[7] == "V" || $type->nature[7] == "T") {
                 $isPeriodOk = true;
             }
         } else {
             if ($type->nature[7] == "S" || $type->nature[7] == "T") {
                 $isPeriodOk = true;
             }
         }
         // Si une période correspond
         if ($isDayOk && $isPeriodOk) {
             // Trouvé à vrai et on remplit le tableau de résultas
             $found = true;
             array_push($results, $type->idTypeSemaine);
         }
     }
     if ($found) {
         return $results;
     } else {
         // Retourne faux si aucune période ne correspond
         return false;
     }
 }
Exemple #3
0
 public static function getHorairesByLigne($ligne, $date, $heure, $minute, $idTypeSemaine = null)
 {
     if (is_null($idTypeSemaine)) {
         if (!TypeSemaine::getIdType($date)) {
             return false;
         }
         $idTypeSemaine = TypeSemaine::getIdType($date);
     } else {
         $idTypeSemaine = [0 => $idTypeSemaine];
     }
     if ($heure == null || $minute == null) {
         $heureMin = '00:00';
     } else {
         $heureMin = $heure . ':' . $minute;
     }
     $results = [];
     $trouve = false;
     $idSemaine = DB::table('horaire')->remember(120)->where('idLigne', '=', $ligne)->whereIn('idTypeSemaine', $idTypeSemaine)->groupBy('idTypeSemaine')->lists('idTypeSemaine');
     foreach ($idSemaine as $semaine) {
         $arretsAller = DB::table('horaire')->remember(120)->where('idLigne', '=', $ligne)->where('idTypeSemaine', '=', $semaine)->where('sens', '=', '1')->orderBy('ordre1')->groupBy('ordre1')->lists('idArret');
         $arretsRetour = DB::table('horaire')->remember(120)->where('idLigne', '=', $ligne)->where('idTypeSemaine', '=', $semaine)->where('sens', '=', '2')->orderBy('ordre1')->groupBy('ordre1')->lists('idArret');
         $premiereCourse = 50;
         $derniereCourse = 0;
         foreach ($arretsAller as $arret) {
             $horairesArret = DB::table('horaire')->remember(120)->where('idLigne', '=', $ligne)->where('idTypeSemaine', '=', $semaine)->where('idArret', $arret)->where('sens', '=', '1')->where('heure', '>', $heureMin)->orderBy('course', 'asc')->lists('heure', 'course');
             if ($heureMin != '00:00:00') {
                 foreach ($horairesArret as $course => $horaire) {
                     if ($horaire != '00:00:00' && $course < $premiereCourse) {
                         $premiereCourse = $course;
                     }
                     if ($horaire != '00:00:00' && $course > $derniereCourse) {
                         $derniereCourse = $course;
                     }
                 }
             }
             $nomArret = trim(Arret::findNameById($arret));
             $results[$semaine]['aller'][$nomArret] = $horairesArret;
         }
         if ($heureMin != '00:00:00') {
             foreach ($results[$semaine]['aller'] as $nomArret => $horaire) {
                 for ($i = $premiereCourse; $i < $derniereCourse + 1; $i++) {
                     if (!isset($horaire[$i])) {
                         $results[$semaine]['aller'][$nomArret][$i] = '00:00:00';
                     }
                 }
                 foreach ($horaire as $course => $horaireArret) {
                     if ($course < $premiereCourse) {
                         unset($results[$semaine]['aller'][$nomArret][$course]);
                     }
                 }
                 ksort($results[$semaine]['aller'][$nomArret]);
             }
         }
         $premiereCourse = 50;
         $derniereCourse = 0;
         foreach ($arretsRetour as $arret) {
             $horairesArret = DB::table('horaire')->remember(120)->where('idLigne', '=', $ligne)->where('idTypeSemaine', '=', $semaine)->where('idArret', $arret)->where('sens', '=', '2')->where('heure', '>', $heureMin)->orderBy('course', 'asc')->lists('heure');
             if ($heureMin != '00:00:00') {
                 foreach ($horairesArret as $course => $horaire) {
                     if ($horaire != '00:00:00' && $course < $premiereCourse) {
                         $premiereCourse = $course;
                     }
                     if ($horaire != '00:00:00' && $course > $derniereCourse) {
                         $derniereCourse = $course;
                     }
                 }
             }
             $nomArret = trim(Arret::findNameById($arret));
             $results[$semaine]['retour'][$nomArret] = $horairesArret;
         }
         if ($heureMin != '00:00:00') {
             foreach ($results[$semaine]['retour'] as $nomArret => $horaire) {
                 for ($i = $premiereCourse; $i < $derniereCourse + 1; $i++) {
                     if (!isset($horaire[$i])) {
                         $results[$semaine]['retour'][$nomArret][$i] = '00:00:00';
                     }
                 }
                 foreach ($horaire as $course => $horaireArret) {
                     if ($course < $premiereCourse) {
                         unset($results[$semaine]['retour'][$nomArret][$course]);
                     }
                 }
                 ksort($results[$semaine]['retour'][$nomArret]);
             }
         }
     }
     return $results;
 }