public function addMissionAction(Request $request)
 {
     $em = $this->getDoctrine()->getEntityManager();
     $mission = new Mission();
     $etablissement = $this->getDoctrine()->getRepository('GenericBundle:Etablissement')->find($request->get('_idetab'));
     $mission->setEtablissement($etablissement);
     $mission->setDescriptif($request->get('_Descriptif'));
     $mission->setProfil($request->get('_Profil'));
     $mission->setTypecontrat($request->get('_TypeContrat'));
     $mission->setDomaine($request->get('_Domaine'));
     $date = new \DateTime();
     $mission->setDate($date);
     $mission->setRemuneration($request->get('_Remuneration'));
     $mission->setHoraire($request->get('_Horaire'));
     $mission->setDatedebut(date_create($request->get('_Datedebut')));
     $mission->setDatefin(date_create($request->get('_Datefin')));
     $mission->setNomcontact($request->get('_NomContact'));
     $mission->setPrenomContact($request->get('_PrenomContact'));
     $mission->setFonctionContact($request->get('_FonctionContact'));
     $mission->setTelContact($request->get('_TelContact'));
     $mission->setEmailContact($request->get('_EmailContact'));
     $mission->setIntitule($request->get('_Intitule'));
     $mission->setEmploi($request->get('_Emploi'));
     $em->persist($mission);
     $em->flush();
     $mission->genererCode();
     $em->flush();
     if ($request->get('formation')) {
         $diffuser = new Diffusion();
         $formation = $this->getDoctrine()->getRepository('GenericBundle:Formation')->find($request->get('formation'));
         $diffuser->setFormation($formation);
         $diffuser->setMission($mission);
         $diffuser->setStatut(5);
         $em->persist($diffuser);
         $em->flush();
     }
     return $this->redirect($this->generateUrl('affiche_etab', array('id' => $etablissement->getId())));
 }
 private function ImportMissions($uploadedfile)
 {
     $file = new \SplFileObject($uploadedfile);
     $reader = new CsvReader($file);
     $jump = 0;
     $em = $this->getDoctrine()->getEntityManager();
     foreach ($reader as $row) {
         if ($jump++ < 1 || ('' == $row[1] and '' == $row[2] and '' == $row[3] and '' == $row[4])) {
             continue;
         } else {
             $siren = substr(mb_convert_encoding($row[1], 'UTF-8', 'auto'), 0, 9);
             $tier = $em->getRepository('GenericBundle:Tier')->findOneBy(array('siren' => $siren));
             if (!$tier) {
                 $newtier = new Tier();
                 $newtier->setSiren($siren);
                 $newtier->setRaisonsoc(mb_convert_encoding($row[3], 'UTF-8', 'auto'));
                 $newtier->setActivite(mb_convert_encoding($row[4], 'UTF-8', 'auto'));
                 $newtier->setEcole(false);
                 $em->persist($newtier);
                 $em->flush();
                 $tier = $newtier;
             }
             $siege = $em->getRepository('GenericBundle:Etablissement')->findOneBy(array('siret' => mb_convert_encoding($row[1], 'UTF-8', 'auto')));
             if (!$siege) {
                 $newsiege = new Etablissement();
                 $newsiege->setSiret(mb_convert_encoding($row[1], 'UTF-8', 'auto'));
                 $newsiege->setAdresse(mb_convert_encoding($row[5], 'UTF-8', 'auto'));
                 $newsiege->setCodepostal(mb_convert_encoding($row[6], 'UTF-8', 'auto'));
                 $newsiege->setVille(mb_convert_encoding($row[7], 'UTF-8', 'auto'));
                 $newsiege->setTier($tier);
                 $em->persist($newsiege);
                 $em->flush();
                 $siege = $newsiege;
             }
             $etab_mission = $em->getRepository('GenericBundle:Etablissement')->findOneBy(array('siret' => mb_convert_encoding($row[2], 'UTF-8', 'auto')));
             if (!$etab_mission) {
                 $newetab = new Etablissement();
                 $newetab->setSiret(mb_convert_encoding($row[2], 'UTF-8', 'auto'));
                 $newetab->setAdresse(mb_convert_encoding($row[8], 'UTF-8', 'auto'));
                 $newetab->setCodepostal(mb_convert_encoding($row[9], 'UTF-8', 'auto'));
                 $newetab->setVille(mb_convert_encoding($row[10], 'UTF-8', 'auto'));
                 $newetab->setTier($tier);
                 $em->persist($newetab);
                 $em->flush();
                 $etab_mission = $newetab;
             }
             $mission = new Mission();
             $mission->setEtat('À pourvoir');
             $mission->setTypecontrat(mb_convert_encoding($row[16], 'UTF-8', 'auto'));
             $mission->setIntitule(mb_convert_encoding($row[18], 'UTF-8', 'auto'));
             $mission->setDescriptif(mb_convert_encoding($row[19], 'UTF-8', 'auto'));
             $mission->setDomaine(mb_convert_encoding($row[20], 'UTF-8', 'auto'));
             $mission->setNomcontact(mb_convert_encoding($row[11], 'UTF-8', 'auto'));
             $mission->setPrenomcontact(mb_convert_encoding($row[12], 'UTF-8', 'auto'));
             $mission->setFonctioncontact(mb_convert_encoding($row[13], 'UTF-8', 'auto'));
             $mission->setTelcontact(mb_convert_encoding($row[14], 'UTF-8', 'auto'));
             $mission->setEmailcontact(mb_convert_encoding($row[15], 'UTF-8', 'auto'));
             $mission->setEtablissement($etab_mission);
             if (!$row[0] == '' and !mb_convert_encoding($row[0], 'UTF-8', 'auto') == 'jj/mm/aaaa') {
                 $date = date_create_from_format('dd/mm/YYYY', mb_convert_encoding($row[0], 'UTF-8', 'auto'));
                 $mission->setDate($date);
             }
             $em->persist($mission);
             $em->flush();
             if ($row[17] == '') {
                 $mission->genererCode();
             } else {
                 $mission->setCodemission(mb_convert_encoding($row[17], 'UTF-8', 'auto'));
             }
             $em->flush();
             $superadmins = $this->getDoctrine()->getRepository('GenericBundle:User')->findByRole('ROLE_SUPER_ADMIN');
             $usercon = $this->get('security.token_storage')->getToken()->getUser();
             $superadmins = array_merge($superadmins, $this->getDoctrine()->getRepository('GenericBundle:User')->findBy(array('tier' => $usercon->getTier())));
             foreach ($superadmins as $admin) {
                 if (!$this->getDoctrine()->getRepository('GenericBundle:Notification')->findOneBy(array('entite' => $mission->getId(), 'type' => 'Mission', 'user' => $admin))) {
                     $notif = new Notification();
                     $notif->setEntite($mission->getId());
                     $notif->setType('Mission');
                     $notif->setUser($admin);
                     $em->persist($notif);
                     $em->flush();
                 }
             }
         }
     }
 }