public function exportFiches($type, $jour)
 {
     $tabVacances = Feries::chargement();
     $semaine = [$jour, date('Y-m-d', strtotime(date('Y-m-d', strtotime($jour)) . "+4 day"))];
     if ($type == 'garderie') {
         Excel::load('fichiers/garderie.xlsx', function ($file) use($semaine) {
             for ($i = 0; $i < 2; $i++) {
                 $cycles = ['primaire', 'maternelle'];
                 $cycle = $cycles[$i];
                 $enfants = Enfant::where('garderie', true)->whereHas('classe', function ($q) use($cycle) {
                     return $q->where('cycle', $cycle);
                 })->get();
                 $nb = $enfants->count();
                 $file->setFileName('garderie' . date('d/m/Y', strtotime($semaine[0])));
                 $file->setActiveSheetIndex($i)->setCellValue('D2', 'S' . date('W', strtotime($semaine[0])));
                 $file->setActiveSheetIndex($i)->setCellValue('E6', date('d/m/Y', strtotime($semaine[0])));
                 $file->setActiveSheetIndex($i)->setCellValue('K6', date('d/m/Y', strtotime($semaine[1])));
                 $ligne = 10;
                 foreach ($enfants as $cle => $enfant) {
                     $file->setActiveSheetIndex($i)->setCellValue('A' . $ligne, $enfant->classe->niveau);
                     $file->setActiveSheetIndex($i)->setCellValue('B' . $ligne, $enfant->nom);
                     $file->setActiveSheetIndex($i)->setCellValue('C' . $ligne, $enfant->prenom);
                     $ligne++;
                 }
             }
         })->export('xlsx');
     } else {
         if ($type == 'cantine') {
             $regs = Reguliere::with(['Enfant', 'Enfant.Classe'])->where('type', 'cantine')->get();
             $exeps = Exceptionnelle::with(['Enfant', 'Enfant.Classe'])->whereBetween('jour', $semaine)->where('type', 'cantine')->get();
             $ferie = [];
             for ($i = 0; $i < 5; $i++) {
                 $monjour = date('Y-m-d', strtotime($i . 'day' . $semaine[0]));
                 if (Feries::est_ferie($monjour) || Feries::est_vacances($monjour, $tabVacances)) {
                     $ferie[] = $i + 1;
                 }
             }
             foreach ($regs as $reg) {
                 $inscrits[$reg->enfant_id]['inscription'] = str_split($reg->jours);
                 $inscrits[$reg->enfant_id]['enfant'] = $reg;
                 if (!empty($ferie)) {
                     foreach ($ferie as $f) {
                         $cle = array_search($f, $inscrits[$reg->enfant_id]['inscription']);
                         if ($cle !== null) {
                             unset($inscrits[$reg->enfant_id]['inscription'][$cle]);
                         }
                     }
                 }
             }
             foreach ($exeps as $exep) {
                 //if($exep->inscrit === 1){ // Fred : 13/12/15 correction de bug propagée, mettre entre ' les comparaisons d'inscrits
                 if ($exep->inscrit === '1') {
                     $inscrits[$exep->enfant_id]['inscription'][] = date('w', strtotime($exep->jour));
                     if (!isset($inscrits[$exep->enfant_id]['enfant'])) {
                         $inscrits[$exep->enfant_id]['enfant'] = $exep;
                     }
                 } else {
                     $cle = array_search(date('w', strtotime($exep->jour)), $inscrits[$exep->enfant_id]['inscription']);
                     if ($cle !== false) {
                         unset($inscrits[$exep->enfant_id]['inscription'][$cle]);
                     }
                 }
             }
             Excel::load('fichiers/cantine.xlsx', function ($file) use($inscrits, $semaine) {
                 $cycles = ['primaire', 'maternelle', 'adulte'];
                 $file->setFileName('cantine' . date('d/m/Y', strtotime($semaine[0])));
                 for ($i = 0; $i < 3; $i++) {
                     $cycle = $cycles[$i];
                     $file->setActiveSheetIndex($i)->setCellValue('A3', 'S' . date('W', strtotime($semaine[0])));
                     $file->setActiveSheetIndex($i)->setCellValue('C3', date('d/m/Y', strtotime($semaine[0])));
                     $file->setActiveSheetIndex($i)->setCellValue('D3', date('d/m/Y', strtotime($semaine[1])));
                 }
                 $ligne = [6, 6, 6];
                 foreach ($inscrits as $inscrit) {
                     //if($inscrit['enfant']->enfant_id == 32){dd($inscrit['enfant']->enfant->classe->cycle);}
                     $cycle = $inscrit['enfant']->enfant->classe->cycle;
                     switch ($cycle) {
                         case 'Primaire':
                             $feuille = 0;
                             break;
                         case 'Maternelle':
                             $feuille = 1;
                             break;
                         default:
                             $feuille = 2;
                             break;
                     }
                     $file->setActiveSheetIndex($feuille)->setCellValue('A' . $ligne[$feuille], $inscrit['enfant']->enfant->classe->niveau);
                     $file->setActiveSheetIndex($feuille)->setCellValue('B' . $ligne[$feuille], $inscrit['enfant']->enfant->classe->instituteur);
                     $file->setActiveSheetIndex($feuille)->setCellValue('C' . $ligne[$feuille], $inscrit['enfant']->enfant->nom);
                     $file->setActiveSheetIndex($feuille)->setCellValue('D' . $ligne[$feuille], $inscrit['enfant']->enfant->prenom);
                     for ($j = 1; $j <= 5; $j++) {
                         if (in_array($j, $inscrit['inscription'])) {
                             $file->setActiveSheetIndex($feuille)->setCellValue(chr(ord('D') + $j) . $ligne[$feuille], 'F');
                         }
                     }
                     $ligne[$feuille]++;
                 }
             })->export('xls');
         } else {
             if ($type == 'bus_matin' || $type == 'bus_soir') {
                 $regs = Reguliere::whereHas('enfant', function ($q) {
                     return $q->orderBy('enfants.arret_id');
                 })->with(['enfant', 'enfant.classe', 'enfant.arret', 'enfant.arret.ligne'])->where('jours', 'LIKE', '%' . date('N', strtotime($semaine[0])) . '%')->where('type', $type)->get();
                 //dd($regs, date('N', strtotime($semaine[0])));
                 $exeps = Exceptionnelle::with('enfant', 'enfant.classe')->where('jour', date('Y-m-d', strtotime($semaine[0])))->where('type', $type)->get();
                 foreach ($regs as $reg) {
                     if ($reg->enfant != null && $reg->enfant->arret != null) {
                         $inscrits[$reg->enfant->arret->ligne->id][$reg->enfant->arret->numero_arret][$reg->enfant_id] = $reg;
                         if (!isset($inscrits[$reg->enfant->arret->ligne->id]['nom'])) {
                             $inscrits[$reg->enfant->arret->ligne->id]['nom'] = $reg->enfant->arret->ligne;
                         }
                         if (!isset($inscrits[$reg->enfant->arret->ligne->id][$reg->enfant->arret->numero_arret]['nom'])) {
                             $inscrits[$reg->enfant->arret->ligne->id][$reg->enfant->arret->numero_arret]['nom'] = $reg->enfant->arret;
                         }
                     }
                 }
                 foreach ($exeps as $exep) {
                     if ($reg->enfant != null && $reg->enfant->arret != null && $exep->enfant->arret) {
                         //if($exep->inscrit === 1){// Fred : 13/12/15 correction de bug propagée, mettre entre ' les comparaisons d'inscrits
                         if ($exep->inscrit === '1') {
                             $inscrits[$exep->enfant->arret->ligne->id][$exep->enfant->arret->numero_arret][$exep->enfant_id] = $exep;
                             if (!isset($inscrits[$exep->enfant->arret->ligne->id]['nom'])) {
                                 $inscrits[$exep->enfant->arret->ligne->id]['nom'] = $exep->enfant->arret->ligne;
                             }
                             if (!isset($inscrits[$exep->enfant->arret->ligne->id][$exep->enfant->arret->numero_arret]['nom'])) {
                                 $inscrits[$exep->enfant->arret->ligne->id][$exep->enfant->arret->numero_arret]['nom'] = $exep->enfant->arret;
                             }
                         } else {
                             unset($inscrits[$exep->enfant->arret->ligne->id][$exep->enfant->arret->numero_arret][$exep->enfant_id]);
                         }
                     }
                 }
                 foreach ($inscrits as $ligne) {
                     $temp = $ligne['nom'];
                     unset($ligne['nom']);
                     ksort($ligne, SORT_NUMERIC);
                     $ligne['nom'] = $temp;
                 }
                 //dd($inscrits);
                 //dd($inscrits);
                 //dd($type.'_'.date('d/m/Y',strtotime($semaine[0])));
                 Excel::create('test', function ($file) use($inscrits, $semaine, $type) {
                     $file->setFileName($type . '_' . date('d/m/Y', strtotime($semaine[0])));
                     foreach ($inscrits as $key => $lignes) {
                         $file->sheet($lignes['nom']->nom, function ($sheet) use($lignes, $semaine, $type) {
                             $data = [['', ucfirst(str_replace('_', ' ', $type)), 'Semaine ' . date('w', strtotime($semaine[0])), 'le ', date('d/m/Y', strtotime($semaine[0]))], ['', $lignes['nom']->nom, $lignes['nom']->communes], ['', 'Nombre d\'enfants', '', 'sur', $lignes['nom']->nb_place], ['', 'Nom', 'Prenom', 'Autoris.', '', '', 'Responsables']];
                             $l = 5;
                             $total = 0;
                             foreach ($lignes as $cle => $arrets) {
                                 if ($cle !== 'nom') {
                                     $data[] = ['>>', $arrets['nom']->numero_arret, $arrets['nom']->nom, $arrets['nom']->commune, count($arrets) - 1];
                                     $sheet->cells('A' . $l . ':G' . $l, function ($cell) {
                                         $cell->setBackground('#ffff00');
                                         $cell->setBorder('thin', 'none', 'thin', 'none');
                                         $cell->setAlignment('center');
                                         $cell->setFont(array('family' => 'Calibri', 'size' => '14', 'bold' => true));
                                     });
                                     $l++;
                                     $total += count($arrets) - 1;
                                     foreach ($arrets as $cle2 => $enfant) {
                                         if ($cle2 != 'nom') {
                                             //dd($enfant);
                                             $data[] = [' ', $enfant->enfant->nom, $enfant->enfant->prenom, '', $enfant->enfant->classe != null && $enfant->enfant->classe->cycle == 'Maternelle' ? 'M' : '', $enfant->enfant->rentre_seul ? 'OUI' : '', $enfant->enfant->responsable_bus];
                                             $sheet->setBorder('A' . $l . ':F' . $l, 'thin', 'thin', 'thin', 'thin');
                                             $l++;
                                         }
                                     }
                                 }
                             }
                             $data[2][2] = $total;
                             $sheet->cells('A1:G4', function ($cell) {
                                 $cell->setBackground('#ffff00');
                                 $cell->setFont(array('family' => 'Calibri', 'size' => '14', 'bold' => true));
                             });
                             $sheet->setBorder('E1', 'thin');
                             $sheet->setBorder('A4:G4', 'thin');
                             $sheet->setWidth(array('A' => 3, 'B' => 40, 'C' => 40, 'D' => 15, 'E' => 15, 'G' => 50));
                             $sheet->fromArray($data, null, 'A1', false, false);
                         });
                     }
                 })->export('xls');
             }
         }
     }
 }
 public function journalier($type)
 {
     $jour = Input::get('jour');
     if ($jour == null) {
         $jour = date("Y-m-d");
     }
     $inscrits = [];
     if ($type == 'garderie') {
         $inscrits = Enfant::where('garderie', true)->get();
         $tab = Feries::chargement();
         if (!empty($inscrits)) {
             if (Feries::est_vacances(date('Y-m-d', strtotime($jour)), $tab)) {
                 // Fred : pourquoi est_vacances et pas est_ferié aussi?
                 $message = "Pas d'inscription pendant les vacances.";
                 return view('affichage.autres', compact('inscrits', 'message', 'jour', 'type'));
             } else {
                 return view('affichage.autres', compact('inscrits', 'jour', 'type'));
             }
         } else {
             $message = "Pas d'inscription en cours.";
             return view('affichage.autres', compact('inscrits', 'message', 'jour', 'type'));
         }
     } elseif ($type == 'cantine') {
         // Fred : code pas garanti : copier/coller aproximatifs
         $regs = Reguliere::with(['Enfant', 'Enfant.Classe'])->where('jours', 'LIKE', '%' . date('w', strtotime($jour)) . '%')->where('type', $type)->get();
         $exeps = Exceptionnelle::with(['Enfant', 'Enfant.Classe'])->where('jour', date('Y-m-d', strtotime($jour)))->where('type', $type)->get();
         foreach ($regs as $reg) {
             $inscrits[$reg->enfant_id] = $reg;
         }
         foreach ($exeps as $exep) {
             if ($exep->inscrit === '1') {
                 $inscrits[$exep->enfant_id] = $exep;
             } else {
                 unset($inscrits[$exep->enfant_id]);
             }
         }
         $tab = Feries::chargement();
         if (!empty($inscrits)) {
             if (Feries::est_vacances(date('Y-m-d', strtotime($jour)), $tab)) {
                 // Fred : pourquoi est_vacances et pas est_ferié aussi?
                 $message = "Pas d'inscription pendant les vacances.";
                 return view('affichage.autres', compact('inscrits', 'message', 'jour', 'type'));
             } else {
                 return view('affichage.autres', compact('inscrits', 'jour', 'type'));
             }
         } else {
             $message = "Pas d'inscription en cours.";
             return view('affichage.autres', compact('inscrits', 'message', 'jour', 'type'));
         }
     } else {
         $regs = Reguliere::with('enfant', 'enfant.classe', 'enfant.arret')->where('jours', 'LIKE', '%' . date('w', strtotime($jour)) . '%')->where('type', $type)->get();
         $exeps = Exceptionnelle::with('enfant', 'enfant.classe', 'enfant.arret')->where('jour', date('Y-m-d', strtotime($jour)))->where('type', $type)->get();
         foreach ($regs as $reg) {
             $inscrits[$reg->enfant_id] = $reg;
         }
         foreach ($exeps as $exep) {
             //				if($exep->inscrit === 1){    // Fred : 16/11/15 ne passe pas le test si === 1
             if ($exep->inscrit === '1') {
                 $inscrits[$exep->enfant_id] = $exep;
             } else {
                 unset($inscrits[$exep->enfant_id]);
             }
         }
         $tab = Feries::chargement();
         if (!empty($inscrits)) {
             if (Feries::est_vacances(date('Y-m-d', strtotime($jour)), $tab)) {
                 // Fred : pourquoi est_vacances et pas est_ferié aussi?
                 $message = "Pas d'inscription pendant les vacances.";
                 return view('affichage.autres', compact('inscrits', 'message', 'jour', 'type'));
             } else {
                 // ajout Fred 16/11/15
                 $arrets = Arret::get();
                 return view('affichage.autres', compact('inscrits', 'jour', 'type', 'arrets'));
             }
         } else {
             $message = "Pas d'inscription en cours.";
             return view('affichage.autres', compact('inscrits', 'message', 'jour', 'type'));
         }
     }
 }