public function prisEnChargeAction(Reservation $reservation) { $user = $this->get('security.context')->getToken()->getUser(); $em = $this->getDoctrine()->getManager(); $session = $this->getRequest()->getSession(); $em->persist($reservation->setResponsable($user)); $em->flush(); $session->getFlashBag()->add('success', "Vous avez pris en charge cette réservation avec succès "); return $this->redirect($this->generateUrl("consulter_reservation", array('id' => $reservation->getId()))); }
public function saveReservation($data, $result, $source, Reservation $reservation = null) { $hotel = $this->em->getRepository('BackHotelTunisieBundle:Hotel')->find($result['hotel']); $calendrier = $this->getCalendrier($result); if (is_null($reservation)) { $tarifCommercial = $this->em->getRepository('BackCommercialBundle:Tarif')->find(1); $client = $data['client']; $coordoonnes = array($client->getNomPrenom(), $client->getTel1(), $client->getEmail(), $client->getAdresse()); $reservation = new Reservation(); $options = array(); foreach ($hotel->getOptions() as $option) { if (isset($data['option_' . $option->getId()]) && $data['option_' . $option->getId()]) { $options[] = $option->getId(); } } $reservation->setClient($client)->setCoordonnees($coordoonnes)->setHotel($hotel)->setDateDebut(\DateTime::createFromFormat('Y-m-d', $result['dateDebut']))->setDateFin(\DateTime::createFromFormat('Y-m-d', $result['dateFin']))->setNuitees($result['nuitees'])->setSurDemande($result['surDemande'])->setOptions($options); if (!is_null($client->getAmicale())) { $reservation->setAmicale($client->getAmicale()); if ($client->getResponsable()) { $reservation->setValidatedAmicale(new \DateTime())->setResponsableAmicale($client); } } if (isset($data['observation'])) { $reservation->setObservation($data['observation']); } if ($tarifCommercial && $tarifCommercial->getTimbre()) { $reservation->setTimbre($tarifCommercial->getMontantTimbre()); } if ($source == 'backoffice') { $user = $this->container->get('security.context')->getToken()->getUser(); $reservation->setResponsable($user)->setFrontOffice(0); } else { $reservation->setFrontOffice(1); } $this->em->persist($reservation); } $chambreOrdre = 0; foreach ($result['chambres'] as $chambre) { $noms = array(); $chambreOrdre++; $reservationChambre = new ReservationChambre(); $reservationChambre->setReservation($reservation)->setChambre($this->em->getRepository('BackHotelTunisieBundle:Chambre')->find($chambre['details']['chambre']))->setArrangement($this->em->getRepository('BackHotelTunisieBundle:Arrangement')->find($chambre['details']['arrangement']))->setOccupants(explode(',', $chambre['details']['occupants']))->setReductions($chambre['details']['reduc'])->setSupplements($chambre['details']['supp'])->setVues($chambre['details']['vue'])->setNoms(array()); $this->em->persist($reservationChambre); foreach ($calendrier as $periode) { $jourChambre = new ReservationChambreJour(); $jourChambre->setChambre($reservationChambre)->setJour(\DateTime::createFromFormat('Y-m-d', $periode['dateDebut']))->setSaisonCalcule($periode['saison'])->setSaisonContingent($this->container->get('saisons')->getSaisonContingent($hotel, $periode['dateDebut'], count($result['chambres']))); $this->em->persist($jourChambre); } foreach ($chambre['adultes'] as $adulte) { $ReservationPersonne = new ReservationPersonne(); $ReservationPersonne->setReservationChambreAdulte($reservationChambre)->setOrdre($adulte['ordre'])->setNom($data['chambre' . $chambreOrdre . 'adulte' . $adulte['ordre']]); $this->em->persist($ReservationPersonne); $noms[] = $data['chambre' . $chambreOrdre . 'adulte' . $adulte['ordre']]; foreach ($adulte['jours'] as $jour) { $reservationJour = new ReservationJour(); $reservationJour->setPersonne($ReservationPersonne)->setJour(\DateTime::createFromFormat('Y-m-d', $jour['jour']))->setSaison($this->em->getRepository('BackHotelTunisieBundle:Saison')->find($jour['saison']['id'])); $this->em->persist($reservationJour); foreach ($jour['lignes'] as $ligne) { if (!is_null($ligne)) { $reservationLigne = new ReservationLigne(); $reservationLigne->setJour($reservationJour)->setCode($ligne['code'])->setLibelle($ligne['name'])->setAchat($ligne['achat'])->setVente($ligne['vente']); $this->em->persist($reservationLigne); } } } } foreach ($chambre['enfants'] as $enfant) { $ReservationPersonne = new ReservationPersonne(); $ReservationPersonne->setReservationChambreEnfant($reservationChambre)->setOrdre($enfant['ordre'])->setNom($data['chambre' . $chambreOrdre . 'Enfant' . $enfant['ordre']])->setAge($enfant['age']); $this->em->persist($ReservationPersonne); $noms[] = $data['chambre' . $chambreOrdre . 'Enfant' . $enfant['ordre']]; foreach ($enfant['jours'] as $jour) { $reservationJour = new ReservationJour(); $reservationJour->setPersonne($ReservationPersonne)->setJour(\DateTime::createFromFormat('Y-m-d', $jour['jour']))->setSaison($this->em->getRepository('BackHotelTunisieBundle:Saison')->find($jour['saison']['id'])); $this->em->persist($reservationJour); foreach ($jour['lignes'] as $ligne) { if (!is_null($ligne)) { $reservationLigne = new ReservationLigne(); $reservationLigne->setJour($reservationJour)->setCode($ligne['code'])->setLibelle($ligne['name'])->setAchat($ligne['achat'])->setVente($ligne['vente']); $this->em->persist($reservationLigne); } } } } $this->em->persist($reservationChambre->setNoms($noms)); foreach ($chambre['supplements'] as $suppLigne) { if (!is_null($suppLigne)) { $reservationLigne = new ReservationLigne(); $reservationLigne->setSupplement($reservationChambre)->setCode($suppLigne['code'])->setLibelle($suppLigne['name'])->setAchat($suppLigne['achat'])->setVente($suppLigne['vente']); $this->em->persist($reservationLigne); } } foreach ($chambre['reductions'] as $reducLigne) { if (!is_null($reducLigne)) { $reservationLigne = new ReservationLigne(); $reservationLigne->setReduction($reservationChambre)->setCode($reducLigne['code'])->setLibelle($reducLigne['name'])->setAchat($reducLigne['achat'])->setVente($reducLigne['vente']); $this->em->persist($reservationLigne); } } } $this->em->flush(); $this->container->get('users')->getPassager(); if ($reservation->getFrontOffice()) { $this->container->get('mailerservice')->creationFront($reservation, 'SHT'); } else { $this->container->get('mailerservice')->creationBack($reservation, 'SHT'); } return $reservation->getId(); }