public function run($isTab = false) { /** @var TourBuilderForm $tourForm */ $tourForm = Yii::app()->user->getState('tourForm'); $eventId = $tourForm->eventId; $startCities = Yii::app()->user->getState('startCities'); $currentStartCityIndex = Yii::app()->user->getState('startCitiesIndex') - 1; $currentStartCity = City::model()->findByPk($startCities[$currentStartCityIndex]->id); $startCityId = $currentStartCity->id; $event = Event::model()->findByPk($eventId); $tripStorage = new TripStorage(); $order = $tripStorage->saveOrder($event, $startCityId, 'Тур для события "' . $event->title . '" из ' . $currentStartCity->caseGen); $eventOrder = new EventOrder(); $eventOrder->startCityId = $startCityId; $eventOrder->orderId = $order->id; $eventOrder->eventId = $event->id; $eventOrder->save(); $eventPrice = EventPrice::model()->findByAttributes(array('eventId' => $eventId, 'cityId' => $startCityId)); if (!$eventPrice) { $eventPrice = new EventPrice(); } $eventPrice->eventId = $event->id; $eventPrice->cityId = $startCityId; $eventPrice->bestPrice = $tripStorage->getPrice(); if (!$eventPrice->save()) { throw new CHttpException('Could not save price for event - city.' . CVarDumper::dumpAsString($eventPrice)); } $this->controller->redirect($this->controller->createUrl('showEventTrip')); }
private function deleteCityOrder() { $eventOrder = EventOrder::model()->findByAttributes(array('eventId' => $this->event->id, 'startCityId' => $this->startCityId)); if (!$eventOrder) { return; } /** @var Order $order */ $order = $eventOrder->order; if ($order) { foreach ($order->flightItems as $item) { $item->delete(); } foreach ($order->hotelItems as $item) { $item->delete(); } OrderHasFlightVoyage::model()->deleteAllByAttributes(array('orderId' => $order->id)); OrderHasHotel::model()->deleteAllByAttributes(array('orderId' => $order->id)); $order->delete(); } $eventOrder->delete(); }