/**
  * Retourne tableau des offres de stages qui sont valide non pourvu (stagiaire_id == null)
  * et dont etudiant n'a pas candidatee
  * Chaque offres possède un tableau de ses competences
  * L'ensemble est classée par ordre décroissante selon la date de la dernière modification de l'offre.
  *
  * @return mixed
  */
 public function getOffresAPourvoirWithCompetences()
 {
     //recupere ensemble offre de stage dont etudiant a candidatee
     $offre_stage = Etudiant::whereId(Auth::user()->user->id)->with('offre_stages')->first()->offre_stages;
     $id_offre_stage = array();
     // range dans un tableau les id de ces offres de stage
     foreach ($offre_stage as $value) {
         array_push($id_offre_stage, $value->id);
     }
     return OffreStage::whereValide(1)->whereNull('stagiaire_id')->with('competences')->whereNotIn('id', $id_offre_stage)->orderBy('offre_stages.updated_at', 'desc')->get();
 }