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); /**/ }
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; }
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)); } }