public function refreshAction()
 {
     $em = $this->getDoctrine()->getManager();
     $session = $this->getRequest()->getSession();
     $config = $em->find('BackResaBookingBundle:Configuration', 1);
     if (!$config) {
         $session->getFlashBag()->add('info', " Vos paramétres de configuration sont vides ");
         return $this->redirect($this->generateUrl('back_resabooking_hotels_liste'));
     }
     $xmlProducts = simplexml_load_file($config->getLienProduit(), "SimpleXMLELement", LIBXML_NOCDATA);
     $json = json_encode($xmlProducts);
     $produits = json_decode($json, TRUE);
     $xmlPrix = simplexml_load_file($config->getLienPrix(), "SimpleXMLELement", LIBXML_NOCDATA);
     $json = json_encode($xmlPrix);
     $prix = json_decode($json, TRUE);
     foreach ($produits['produit'] as $produit) {
         $hotel = $em->find('BackResaBookingBundle:Hotel', $produit['id_hotel']);
         if (!$hotel) {
             $hotel = new Hotel();
             $hotel->setId($produit['id_hotel']);
         }
         $hotel->setLibelle($produit['libelle_hotel']);
         $hotel->setProduit($produit);
         $arrayPrix = array();
         foreach ($prix['produit'] as $p) {
             if ($p['id_hotel'] == $produit['id_hotel']) {
                 $arrayPrix[] = $p;
             }
         }
         $hotel->setPrix($arrayPrix);
         $em->persist($hotel);
         $em->flush();
     }
     $session->getFlashBag()->add('success', " les hôtels sont à jour ");
     return $this->redirect($this->generateUrl('back_resabooking_hotels_liste'));
 }
 public function devisAction($pension, Hotel $hotel, $debut, $fin, $room1, $room2, $room3, $room4, $room5)
 {
     $em = $this->getDoctrine()->getManager();
     $user = $this->get('security.context')->getToken()->getUser();
     if ($this->container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY') && !is_null($user->getClient())) {
         $client = $user->getClient();
     } else {
         $client = $this->container->get('users')->getPassager();
     }
     $confPaiement = $em->find('BackHotelTunisieBundle:ConfigurationPayement', 1);
     if ($confPaiement) {
         $choices[2] = 'Paiement Total en ligne';
         if ($confPaiement->getAvance() != 0) {
             $choices[3] = 'Paiement avance de ' . $confPaiement->getAvance() . '% en ligne';
         }
     }
     $reponse = $this->container->get('resabookingservice')->availabilityHotel($hotel->getProduit()['region'], $debut, $fin, $this->container->get('resabookingservice')->getRooms($room1, $room2, $room3, $room4, $room5), $hotel->getId());
     if ($reponse->rep->statut == 'failure') {
         $this->getRequest()->getSession()->getFlashBag()->add('warning', $reponse->rep->detail_erreur);
         return $this->redirect($this->generateUrl('front_resabooking_initialise_date'));
     }
     $chambs = new chambs();
     foreach ($reponse->hots[0]->chambres[0]->chambre[0]->chamb as $chamb) {
         $chambs->addChamb($chamb);
     }
     $reponseDevis = $this->container->get('resabookingservice')->devis($reponse->session, $hotel->getId(), $pension, $chambs, null);
     if ($reponseDevis->rep->statut == 'failure') {
         $this->getRequest()->getSession()->getFlashBag()->add('warning', $reponseDevis->rep->detail_erreur);
         return $this->redirect($this->generateUrl('front_resabooking_initialise_date'));
     }
     $request = $this->getRequest();
     if ($request->isMethod('POST')) {
         $travellerPrincipale = new Traveller('adult', null, null, null, $request->get("FirstName"), $request->get("LastName"), $request->get('civiliti'), $request->get('adresse'), $request->get('pays'), $request->get('ville'), $request->get('mail'), $request->get('tel'), $request->get('cp'));
         $travellers = new Travellers();
         $index = 1;
         foreach ($chambs->getChs() as $chamb) {
             for ($i = 1; $i <= $chamb->nombre_adult; $i++) {
                 $traveller = new Traveller('adult');
                 if ($i == 1 && $index == 1) {
                     $traveller = $travellerPrincipale;
                 } else {
                     $traveller->setFirstName($request->get($index . "_AdulteFirstName_" . $i));
                     $traveller->setLastName($request->get($index . "_AdulteLastName_" . $i));
                 }
                 $travellers->addTraveller($traveller);
             }
             for ($i = 1; $i <= $chamb->nombre_enfant; $i++) {
                 $traveller = new Traveller('enfant');
                 $traveller->setFirstName($request->get($index . "_EnfantFirstName_" . $i));
                 $traveller->setLastName($request->get($index . "_EnfantLastName_" . $i));
                 $travellers->addTraveller($traveller);
             }
             for ($i = 1; $i <= $chamb->nombre_bebe; $i++) {
                 $traveller = new Traveller('bebe');
                 $traveller->setFirstName($request->get($index . "_BeBeFirstName_" . $i));
                 $traveller->setLastName($request->get($index . "_BeBeLastName_" . $i));
                 $travellers->addTraveller($traveller);
             }
             $index++;
         }
         $reservation = new Reservation();
         $reservation->setClient($client)->setChambs($chambs)->setTraveller($travellerPrincipale)->setTravellers($travellers)->setHotel($hotel)->setPension($pension)->setReponseDevis($reponseDevis)->setTotalAchat($reponseDevis->price)->setTotal($this->get('resabookingservice')->margeResaBooking($reponseDevis->price))->setDateDebut(\DateTime::createFromFormat('Y-m-d', $debut))->setDateFin(\DateTime::createFromFormat('Y-m-d', $fin));
         if ($request->get('paiement') == 3 && $confPaiement->getAvance() != 0) {
             $montan = round($reservation->getTotal() * $confPaiement->getAvance() / 100);
         } else {
             $montan = $reservation->getTotal();
         }
         $em->persist($reservation->setTypePayement($request->get('paiement'))->setMontantPayementElectronique($montan));
         $em->flush();
         return $this->redirect($confPaiement->getUrl() . 'RB-' . $reservation->getId() . '&Montant=' . $montan . '&Devise=TND&sid=' . session_id() . '&affilie=' . $confPaiement->getNumeroAffiliation());
     }
     return $this->render('FrontGeneralBundle:resabooking:devis.html.twig', array('choinces' => $choices, 'hotel' => $hotel, 'chambs' => $chambs->getChs(), 'reponseDevis' => $reponseDevis, 'dateDebut' => \DateTime::createFromFormat('Y-m-d', $debut), 'dateFin' => \DateTime::createFromFormat('Y-m-d', $fin)));
 }