/**
  * postuler une offre de stage
  * @param $id_offre
  * @return mixed
  */
 public function postuler($id_offre, OffreStageRepository $offreStageRepository)
 {
     $offre = OffreStage::find($id_offre);
     $entreprise = Entreprise::find($offre->entreprise_id);
     $infos = $offreStageRepository->getInfosStage($offre->entreprise_id);
     return View::make('etudiant.postuler')->with('offre', $offre)->with('infos', $infos)->with('entreprise', $entreprise);
 }
 /**
  * Retourne :
  *      -l'ensemble des stages(valide, non pourvu et avec competences)
  *      -l'ensemble des competences
  *      -l'ensemble des promotions avec specialites
  * le tout au format Json si requête Json sinon retourne accueil message erreur
  * @return View
  */
 public function getAllStage(OffreStageRepository $offreStageRepository, CompetenceRepository $competenceRepository, PromotionRepository $promotionRepository)
 {
     $array['offres'] = $offreStageRepository->getOffresAPourvoirWithCompetences();
     $array['competences'] = $competenceRepository->all();
     $array['promotions'] = $promotionRepository->promotionWithSpecialite();
     if (Request::wantsJson()) {
         return Response::json($array);
     } else {
         return Redirect::route('accueil-etudiant')->with('flash_error', 'Accès refusée!!!');
     }
 }
 /**
  * Validation de l'offre de stage
  *
  * @param ValidationOffreStageRequest $request
  * @return mixed
  */
 public function postOffreStage($id, OffreStageRepository $offreStageRepository)
 {
     if ($offreStageRepository->updateSpecialitesPromotionOffre($id, Input::get('specialites'))) {
         $offre = OffreStage::find($id);
         $offre->valide = 1;
         $offre->save();
         return Redirect::back()->with('flash_success', 'L\'offre de stage a bien été validée');
     } else {
         return Redirect::back()->with('flash_danger', 'L\'offre de stage n\'a pas pu être validée');
     }
 }
 /**
  * Récupère l'ensemble des statistiques des promo dont le moderateur est responsable
  *
  * @return la vue
  */
 public function getStatistiques(OffreStageRepository $offreStageRepository, EtudiantRepository $etudiantRepository, UserRepository $userRepository)
 {
     // recuperation des promotions du moderateur dans un tableau objet promotion
     $array['promotion'] = $this->promotionRepository->getUserLoggedPromotion()->get();
     //Enregistrement des id des promotions dans un tableau
     $id_promotion = array();
     foreach ($array['promotion'] as $value) {
         array_push($id_promotion, $value->id);
     }
     // recuperation statistique par promotion des offres de stages
     $array['offre_stage'] = $offreStageRepository->getStatistiqueOffreStageParPromotion($id_promotion);
     // recuperation statistique par promotion des offres de etudiants
     $array['etudiant'] = $etudiantRepository->getStatistiqueEtudiantParPromotion($id_promotion);
     // nombre entreprise en attente de validation
     $array['validation_entreprise'] = $userRepository->getCountEntrepriseAttenteValidation();
     // nombre offre de stage concerant la promotion du moderateur en attente de validation
     $array['validation_offre_stage'] = $offreStageRepository->getCountOffreStageValiderParPromotionModerateur();
     return View::make('moderateur/statistiques')->with($array);
 }
 /**
  * renvoyer la historique de l'etudiant: stages potulés et stages faits
  * @return mixed
  */
 public function getHistoriqueStage(OffreStageRepository $offreStageRepository)
 {
     //chercher toutes les offres de stages que l'etudiant a postulé
     $candidatures = $offreStageRepository->getStagePostules(Auth::user()->user->id);
     //chercher toutes les offres de stages que l'étudiant a déjà fait
     $stages = $offreStageRepository->getStagesFaits(Auth::user()->user->id);
     $offres_id = array();
     foreach ($stages as $stage) {
         array_push($offres_id, $stage->id);
     }
     //historiques inclut les candidatures et les stages déjà faits
     foreach ($candidatures as $candidature) {
         //éviter le doublement
         if (!in_array($candidature->offre_stage_id, $offres_id)) {
             array_push($stages, $candidature);
         }
     }
     $valide_info = $this->offreStageRepository->all()->lists('valide', 'id');
     return View::make('etudiant.historique_stage')->with('stages', $stages)->with('valide_info', $valide_info);
 }