public static function buildAndPutToCart(TourBuilderForm $form)
 {
     Yii::app()->shoppingCart->clear();
     //we are starting from our city
     $prev = $form->getStartCityId();
     $prevDate = $form->trips[0]->startDate;
     $ind = rand(10, 200);
     $firstGroup = null;
     //building using scheme flight-hotel-flight
     /** @var $tripPlan TripForm */
     foreach ($form->trips as $tripPlan) {
         $next = $tripPlan->cityId;
         $flight = new FlightTripElement();
         $flight->departureCity = $prev;
         $flight->arrivalCity = $next;
         $flight->departureDate = $tripPlan->startDate;
         $flight->id = $ind++;
         $flight->adultCount = $form->adultCount;
         $flight->childCount = $form->childCount;
         $flight->infantCount = $form->infantCount;
         if ($firstGroup) {
             $flight->groupId = substr(md5('group' . uniqid('', true)), 0, 10);
         } else {
             $flight->groupId = $firstGroup = substr(md5('group' . uniqid('', true)), 0, 10);
         }
         Yii::app()->shoppingCart->put($flight);
         $hotel = new HotelTripElement();
         $hotel->city = $next;
         $hotel->checkIn = $tripPlan->startDate;
         $hotel->checkOut = $tripPlan->endDate;
         $hotel->rooms = $form->rooms;
         $hotel->id = $ind++;
         Yii::app()->shoppingCart->put($hotel);
         $prev = $next;
         $prevDate = $hotel->checkOut;
     }
     //back to home now
     $next = $form->getStartCityId();
     $flight = new FlightTripElement();
     $flight->departureCity = $prev;
     $flight->arrivalCity = $next;
     $flight->departureDate = $prevDate;
     $flight->adultCount = $form->adultCount;
     $flight->childCount = $form->childCount;
     $flight->infantCount = $form->infantCount;
     $flight->id = $ind++;
     if (count($form->trips) == 1) {
         $flight->groupId = $firstGroup;
     } else {
         $flight->groupId = $firstGroup = substr(md5('group' . uniqid('', true)), 0, 10);
     }
     Yii::app()->shoppingCart->put($flight);
     /**/
 }
Example #2
0
 private function buildSearchParams($start, $destinations, $rooms)
 {
     $tourBuilder = new TourBuilderForm();
     $tourBuilder->setStartCityName($start);
     $tourBuilder->rooms = array();
     foreach ($rooms as $room) {
         $newRoom = new HotelRoomForm();
         $newRoom->adultCount = $room['adt'];
         $newRoom->childCount = $room['chd'];
         $newRoom->childAge = $room['chdAge'];
         $newRoom->cots = $room['cots'];
         $tourBuilder->rooms[] = $newRoom;
     }
     $tourBuilder->trips = array();
     foreach ($destinations as $destination) {
         $trip = new TripForm();
         $trip->setCityName($destination['city']);
         $trip->startDate = $destination['dateFrom'];
         $trip->endDate = $destination['dateTo'];
         $tourBuilder->trips[] = $trip;
     }
     return $tourBuilder;
 }
Example #3
0
 public function run($isTab = false)
 {
     /*        if ($res = Yii::app()->user->getState('trip.tour.form'))
                 $model = @unserialize($res);
             else*/
     $model = new TourBuilderForm();
     if (isset($_GET['eventId'])) {
         $model->eventId = $_GET['eventId'];
     }
     if (isset($_POST['TourBuilderForm'])) {
         unset($model);
         $model = new TourBuilderForm();
         $model->attributes = $_POST['TourBuilderForm'];
         $model->trips = array();
         $model->rooms = array();
         if (isset($_POST['TripForm'])) {
             $validTrips = true;
             $validRooms = true;
             $validStartCity = true;
             foreach ($_POST['TripForm'] as $i => $attributes) {
                 $trip = new TripForm();
                 $trip->attributes = $attributes;
                 $validTrips = $validTrips and $trip->validate();
                 if ($validTrips) {
                     $model->trips[] = $trip;
                 }
             }
             foreach ($_POST['HotelRoomForm'] as $i => $attributes) {
                 $room = new HotelRoomForm();
                 $room->attributes = $attributes;
                 $validRooms = $validRooms and $room->validate();
                 if ($validRooms) {
                     $model->rooms[] = $room;
                 }
             }
             $model->startCities = array();
             foreach ($_POST['EventStartCityForm'] as $i => $attributes) {
                 $startCity = new EventStartCityForm();
                 $startCity->attributes = $attributes;
                 $validStartCity = $validStartCity and $startCity->validate();
                 if ($validStartCity) {
                     $model->startCities[] = $startCity;
                 }
             }
             if ($validTrips and $validRooms and $model->validate()) {
                 Yii::app()->user->setState('trip.tour.form', serialize($model));
                 Yii::app()->shoppingCart->clear();
                 if ($model->isLinkedToEvent) {
                     Yii::app()->user->setState('tourForm', $model);
                     Yii::app()->user->setState('startCities', $model->startCities);
                     Yii::app()->user->setState('startCitiesIndex', 0);
                     $this->controller->redirect($this->controller->createUrl('showEventTrip'));
                 } else {
                     ConstructorBuilder::buildAndPutToCart($model);
                     $this->controller->redirect($this->controller->createUrl('showTrip'));
                 }
             }
         }
     }
     if ($isTab) {
         $this->controller->renderPartial('create', array('model' => $model));
     } else {
         $this->controller->render('create', array('model' => $model));
     }
 }