Example #1
0
 function topAirlines()
 {
     $other = 0;
     $result = array();
     $chart = array();
     $names = array();
     $counter = $this->query()->select(DB::raw('airline_id, count(airline_id) as counter'))->groupBy('airline_id')->orderBy('counter', 'DESC')->whereCallsignType(1)->lists('counter', 'airline_id');
     if (count($counter) > 0) {
         $namesRaw = Airline::whereIn('icao', array_slice(array_keys($counter), 0, 5))->get();
         foreach ($namesRaw as $airline) {
             $names[$airline->icao] = $airline;
         }
         foreach ($counter as $key => $flights) {
             if (count($result) < 5 && array_key_exists($key, $names)) {
                 $percentage = $this->_total == 0 ? 0 : number_format($flights / $this->_total * 100, 1);
                 $result[] = array('data' => $names[$key], 'count' => $flights, 'percent' => $percentage, 'key' => $names[$key]->icao);
                 if ($percentage > 0) {
                     $chart[] = [$names[$key]->icao, $percentage];
                 }
             } else {
                 $other += $flights;
             }
         }
     }
     $private = $this->query()->whereCallsignType(2)->count();
     $unknown = $this->query()->whereCallsignType(0)->count();
     $result['Private'] = array('count' => $private, 'percent' => $this->_total == 0 ? 0 : number_format($private / $this->_total * 100, 1), 'key' => 'Private');
     $chart[] = ['Private', $result['Private']['percent']];
     $result['Other'] = array('count' => $other + $unknown, 'percent' => $this->_total == 0 ? 0 : number_format(($other + $unknown) / $this->_total * 100, 1), 'key' => 'Other');
     $chart[] = ['Other', $result['Other']['percent']];
     $piechartData = piechartData($chart);
     return array('table' => $result, 'chart' => $piechartData['javascript'], 'colours' => $piechartData['colours']);
 }
Example #2
0
 function index()
 {
     $q = trim(Input::get('q'));
     if (empty($q) || !Input::has('q')) {
         return Redirect::home();
     }
     if (!Input::has('guess') || Input::get('guess') != 'no') {
         $regex = array('pilot' => '[0-9]+', 'airport' => '[A-Z0-9]{4}', 'airline' => '[A-Z0-9]{3}', 'airportIata' => '[A-Z0-9]{3}', 'citypair' => '([A-Z0-9]{3,4})(?:(?:\\s*?[-|>]\\s*?)|\\s+to\\s+|\\s+)([A-Z0-9]{3,4})', 'callsign' => '.*');
         $search = new Search($q);
         foreach ($regex as $type => $pattern) {
             if (preg_match('/^' . $pattern . '$/i', $q, $matches) && ($match = $search->quick($type, $matches))) {
                 Messages::info('You were redirected here by a best guess of the search system. <a href="' . URL::route('search', array('q' => $q, 'guess' => 'no')) . '" class="alert-link">Return to search results.</a>');
                 return $match;
             }
         }
     }
     $pilots = Pilot::where(function ($search) use($q) {
         $search->where('vatsim_id', '=', $q);
         $search->orWhere(function ($name) use($q) {
             $name->where('name', 'LIKE', '%' . $q . '%');
             $name->where('anonymous', '=', false);
         });
     })->where('vatsim_id', '!=', 0)->get();
     $flights = Flight::where('callsign', '=', $q)->orderBy('departure_time', 'desc')->get();
     $airlines = Airline::where('icao', '=', $q)->orWhere('name', 'LIKE', '%' . $q . '%')->get();
     $airports = Airport::where('icao', '=', $q)->orWhere('iata', '=', $q)->orWhere('name', 'LIKE', '%' . $q . '%')->orWhere('city', 'LIKE', '%' . $q . '%')->get();
     $this->autoRender(compact('q', 'flights', 'pilots', 'airlines', 'airports'), 'Search');
 }
Example #3
0
 function airline()
 {
     $airline = Airline::whereIcao($this->query)->first();
     if (!is_null($airline)) {
         return Redirect::route('airline.show', $airline->icao);
     }
     return false;
 }
 /**
  * Show the form for creating a new resource.
  *
  * @return Response
  */
 public function create($airline_id, $type, $amount)
 {
     $fo = new FinanceOperation();
     $fo->airline_id = $airline_id;
     $fo->type = $type;
     $fo->amount = $amount;
     $fo->bilance_after_operation = Airline::find($airline_id)->funds;
     $fo->save();
 }
 /**
  * Display the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function show($airline_id = 0)
 {
     if ($airline_id == 0) {
         $airline_id = Auth::user()->id;
     }
     $airline = Airline::with("financeOperations")->find($airline_id);
     $timetableRoutes = $this->timetableRepo->getByAirline($airline, true);
     return View::make('airlines/show')->with(compact('airline', 'timetableRoutes'));
 }
 public function run()
 {
     //DB::table('airlines')->delete();
     // lot
     Airline::create(array('name' => 'LOT Polish Airlines', 'funds' => 69000000, 'ceo' => 'Sebastian Mikosz', 'iata_code' => 'lo', 'headquarters_airport_id' => 1));
     // Lufthansa
     Airline::create(array('name' => 'Lufthansa', 'funds' => 87810300, 'ceo' => 'Carsten Spohr', 'iata_code' => 'lh', 'headquarters_airport_id' => 4));
     // ba
     Airline::create(array('name' => 'British Airways', 'funds' => 98200490, 'ceo' => 'Keith Williams', 'iata_code' => 'ba', 'headquarters_airport_id' => 5));
     // eurolot
     Airline::create(array('name' => 'Eurolot', 'funds' => 3700000, 'ceo' => 'Tomasz Balcerzak', 'iata_code' => 'k2', 'headquarters_airport_id' => 1));
 }
Example #7
0
 public static function getAirlineByCode($code)
 {
     if (isset(Airline::$codeIdMap[$code])) {
         return Airline::$airlines[Airline::$codeIdMap[$code]];
     } else {
         $airline = Airline::model()->findByAttributes(array('code' => $code));
         if ($airline) {
             Airline::$airlines[$airline->id] = $airline;
             Airline::$codeIdMap[$airline->code] = $airline->id;
             return Airline::$airlines[Airline::$codeIdMap[$code]];
         } else {
             throw new CException(Yii::t('application', 'Airline with code ' . CVarDumper::dumpAsString($code) . ' not found'));
         }
     }
 }
 function show(Airline $airline)
 {
     $activeFlights = $airline->flights()->whereIn('state', [0, 1, 3, 4])->join('pilots', 'flights.vatsim_id', '=', 'pilots.vatsim_id')->with(['departure' => function ($departure) {
         $departure->remember(15);
     }, 'arrival' => function ($arrival) {
         $arrival->remember(15);
     }])->select('flights.*', 'pilots.name')->orderBy('departure_time', 'desc')->remember(15)->get();
     $historicFlights = $airline->flights()->whereState(2)->join('pilots', 'flights.vatsim_id', '=', 'pilots.vatsim_id')->with(['departure' => function ($departure) {
         $departure->remember(15);
     }, 'arrival' => function ($arrival) {
         $arrival->remember(15);
     }])->select('flights.*', 'pilots.name')->orderBy('departure_time', 'desc')->take(25)->remember(15)->get();
     if ($airline->duration == 0) {
         $airline->duration = $airline->flights()->whereState(2)->remember(120)->sum('duration');
         $airline->save();
     }
     if ($airline->duration > 0) {
         $pilots = $airline->flights()->whereState(2)->leftJoin('pilots', 'flights.vatsim_id', '=', 'pilots.vatsim_id')->select('pilots.*', DB::raw('SUM(flights.duration) AS duration'))->orderBy('duration', 'desc')->groupBy('flights.vatsim_id')->take(5)->remember(120)->get()->transform(function ($pilot) use($airline) {
             return array('name' => $pilot->name, 'duration' => $pilot->duration, 'percent' => number_format($pilot->duration / $airline->duration * 100, 1));
         });
         $pilots->add(array('name' => 'Others', 'duration' => $airline->duration - $pilots->sum('duration'), 'percent' => number_format(($airline->duration - $pilots->sum('duration')) / $airline->duration * 100, 1)));
         $pilots = $pilots->toArray();
         foreach ($pilots as &$pilot) {
             $pilot = array($pilot['name'], $pilot['duration']);
         }
         $aircraft = $airline->flights()->whereState(2)->whereNotNull('aircraft_id')->where('aircraft_id', '!=', '')->with(['aircraft' => function ($aircraft) {
             $aircraft->remember(120);
         }])->select('aircraft_id', DB::raw('SUM(duration) AS duration'))->orderBy('duration', 'desc')->groupBy('aircraft_id')->take(5)->remember(120)->get()->transform(function ($aircraft) use($airline) {
             return array('name' => $aircraft->aircraft->implode('name', '<br />'), 'duration' => $aircraft->duration, 'percent' => number_format($aircraft->duration / $airline->duration * 100, 1));
         });
         $aircraft->add(array('name' => 'Other', 'duration' => $airline->duration - $aircraft->sum('duration'), 'percent' => number_format(($airline->duration - $aircraft->sum('duration')) / $airline->duration * 100, 1)));
         $aircraft = $aircraft->toArray();
         foreach ($aircraft as &$airplane) {
             $airplane = array($airplane['name'], $airplane['duration']);
         }
     } else {
         $pilots = array();
         $aircraft = array();
     }
     $pilots = piechartData($pilots)['javascript'];
     $aircraft = piechartData($aircraft)['javascript'];
     if (!in_array($airline->icao, Cache::get('legacy.airlines', []))) {
         Queue::push('LegacyUpdateAirline', array('airline' => $airline->icao), 'legacy');
         Messages::warning('Data for this airline may be missing. It is being processed by year. Depending on the popularity of the airline, it could take minutes to hours before it is done.')->one();
     }
     $this->javascript('assets/javascript/jquery.flot.min.js');
     $this->javascript('assets/javascript/jquery.flot.pie.min.js');
     $this->autoRender(compact('airline', 'historicFlights', 'pilots', 'aircraft', 'activeFlights'), $airline->icao . ' - ' . $airline->name);
 }
 /**
  * Execute the action.
  * @param array command line parameters specific for this command
  */
 public function actionIndex($type = 'airports', $filename = '')
 {
     if ($type == 'airports') {
         if ($filename) {
             $path = Yii::getPathOfAlias('application.runtime');
             if (file_exists($filename)) {
                 $fp = fopen($filename, 'r');
                 $outfp = fopen($path . '/' . basename($filename), 'w');
                 if (!$outfp) {
                     echo "Cant open file " . $path . '/' . basename($filename) . " for writing\n";
                     die;
                 }
                 $formatLine = fgets($fp);
                 $formatLine = str_replace(array("\r", "\n"), array(''), $formatLine);
                 $columnNames = explode('|', $formatLine);
                 //print_r($formatLine);die();
                 $column = array();
                 foreach ($columnNames as $i => $columnName) {
                     $column[$columnName] = $i;
                 }
                 //print_r($column);
                 $skipAll = false;
                 while (!feof($fp)) {
                     $lineData = fgets($fp);
                     $lineData = str_replace(array("\r", "\n"), array(''), $lineData);
                     $lineData = iconv("cp1251", "UTF-8", $lineData);
                     $data = explode('|', $lineData);
                     $needSave = true;
                     $country = Country::getCountryByCode($data[$column['country_code']]);
                     if ($country) {
                         $cities = $this->getCities($country->id, $data[$column['city_en']], $data[$column['city_ru']]);
                         if (!$cities) {
                             $cities = City::model()->findAllByAttributes(array('countryId' => $country->id, 'code' => $data[$column['iata_code']]));
                         }
                         $abort = false;
                         while (!$abort) {
                             if ($cities) {
                                 if (count($cities) > 1) {
                                     $citiesTmp = City::model()->findAllByAttributes(array('countryId' => $country->id, 'code' => $data[$column['iata_code']]));
                                     if ($citiesTmp && count($citiesTmp) == 1) {
                                         $cities = $citiesTmp;
                                     }
                                 }
                                 if (count($cities) > 1) {
                                     echo "Found " . count($cities) . " cities for line: {$lineData}\n";
                                     echo str_pad('code', 5, " ", STR_PAD_RIGHT) . str_pad('localRu', 15, " ", STR_PAD_LEFT) . str_pad('localEn', 15, " ", STR_PAD_LEFT) . "\n";
                                     foreach ($cities as $city) {
                                         echo str_pad($city->code, 5, " ", STR_PAD_RIGHT) . str_pad($city->localRu, 15, " ", STR_PAD_LEFT) . str_pad($city->localEn, 15, " ", STR_PAD_LEFT) . "\n";
                                     }
                                     echo "Type code of the selected city:\n";
                                     $name = trim(fgets(STDIN));
                                     $cities = $this->getCities($country->id, $name);
                                 } else {
                                     $this->selectAirport($data, $column, $lineData, $outfp, $cities[0]);
                                     $abort = true;
                                 }
                             } else {
                                 echo "City not found in Db. Type s - skip, c - create, f - try find in db:\n";
                                 echo "{$lineData}\n";
                                 //$char = trim(fgets(STDIN));
                                 $char = 's';
                                 if ($char == 's') {
                                     echo "Dont found any same city. Skipping line: {$lineData} \n";
                                     fwrite($outfp, $lineData . "|nocity\n");
                                     $abort = true;
                                 } elseif ($char == 'c') {
                                     $city = new City();
                                     echo "Creating new city...\n";
                                     $city->countryId = $country->id;
                                     if (!$data[$column['city_ru']]) {
                                         $data[$column['city_ru']] = $data[$column['city_en']];
                                     }
                                     echo "City name rus (default {$data[$column['city_ru']]}):\n";
                                     $newName = trim(fgets(STDIN));
                                     if ($newName) {
                                         $city->localRu = $newName;
                                     } else {
                                         $city->localRu = $data[$column['city_ru']];
                                     }
                                     echo "City name eng (default {$data[$column['city_en']]}):\n";
                                     $newName = trim(fgets(STDIN));
                                     if ($newName) {
                                         $city->localEn = $newName;
                                     } else {
                                         $city->localEn = $data[$column['city_en']];
                                     }
                                     echo "City code:\n";
                                     $newCode = trim(fgets(STDIN));
                                     if ($newCode) {
                                         $city->code = $newCode;
                                     } else {
                                         continue;
                                     }
                                     $city->position = 0;
                                     $city->save();
                                     $city->id = $city->getPrimaryKey();
                                     $this->selectAirport($data, $column, $lineData, $outfp, $city);
                                 } else {
                                     echo "Type part of city name:\n";
                                     $name = trim(fgets(STDIN));
                                     $cities = $this->getCities($country->id, $name);
                                 }
                             }
                         }
                     } else {
                         echo "Country not found, skipping line: {$lineData} \n";
                         fwrite($outfp, $lineData . "|nocountry\n");
                     }
                 }
                 fclose($fp);
                 fclose($outfp);
             } else {
                 echo 'Import file not found on path: ' . $filename;
             }
         } else {
             echo 'Option --filename cant be empty';
         }
     }
     if ($type == 'airlineWeight') {
         echo 'INN';
         if ($filename) {
             $path = Yii::getPathOfAlias('application.runtime');
             if (file_exists($filename)) {
                 $airlinessxe = simplexml_load_string(file_get_contents($filename));
                 foreach ($airlinessxe->Item as $item) {
                     $airlineCode = (string) $item['id'];
                     $modified = false;
                     try {
                         $airline = Airline::getAirlineByCode($airlineCode);
                     } catch (CException $e) {
                         $airline = false;
                     }
                     if ($airline) {
                         $airlineLocalRu = (string) $item['rusname'];
                         $airlineLocalEn = (string) $item['name'];
                         if (UtilsHelper::countRussianCharacters($airline->localRu) <= 0) {
                             $airline->localRu = $airlineLocalRu;
                             $modified = true;
                         } else {
                             echo "o_O !!! " . $airline->localRu;
                         }
                         if (!$airline->localEn && $airlineLocalEn) {
                             $airline->localEn = $airlineLocalEn;
                             $modified = true;
                         }
                         $economPrice = (string) $item->luggage->econom->price;
                         $economFreeWeight = (string) $item->luggage->econom->weight;
                         if ($airline->economFreeWeight && $economFreeWeight) {
                             if ($economPrice == 'charge') {
                                 $airline->economFreeWeight = 0;
                             } else {
                                 $airline->economFreeWeight = str_replace('kg', '', $economFreeWeight);
                             }
                             $modified = true;
                         }
                         $businessPrice = (string) $item->luggage->business->price;
                         $businessFreeWeight = (string) $item->luggage->business->weight;
                         if ($airline->businessFreeWeight && $businessFreeWeight) {
                             if ($businessPrice == 'charge') {
                                 $airline->businessFreeWeight = 0;
                             } else {
                                 $airline->businessFreeWeight = str_replace('kg', '', $businessFreeWeight);
                             }
                             $modified = true;
                         }
                         $economDescription = (string) $item->luggage->econom->description;
                         if ($airline->economDescription && $economDescription) {
                             $economDescription = substr($economDescription, strpos($economDescription, 'Багаж не должен'));
                             $airline->economDescription = trim($economDescription);
                             $modified = true;
                         }
                         $businessDescription = (string) $item->luggage->business->description;
                         if ($airline->businessDescription && $businessDescription) {
                             $businessDescription = substr($businessDescription, strpos($businessDescription, 'Багаж не должен'));
                             $airline->businessDescription = trim($businessDescription);
                             echo "try modyf ";
                             $modified = true;
                         }
                         if ($modified) {
                             $airline->save();
                         }
                     } else {
                         echo "!!!! NOT FOUND {$airlineCode}";
                         $airline = new Airline();
                         $airline->code = $airlineCode;
                         $airlineLocalRu = (string) $item['rusname'];
                         $airlineLocalEn = (string) $item['name'];
                         if (UtilsHelper::countRussianCharacters($airline->localRu) <= 0) {
                             $airline->localRu = $airlineLocalRu;
                             $airline->localEn = $airlineLocalEn;
                             $modified = true;
                         }
                         $economFreeWeight = (string) $item->luggage->econom->weight;
                         if (!$airline->economFreeWeight && $economFreeWeight) {
                             $airline->economFreeWeight = str_replace('kg', '', $economFreeWeight);
                             $modified = true;
                         }
                         $businessFreeWeight = (string) $item->luggage->business->weight;
                         if (!$airline->businessFreeWeight && $businessFreeWeight) {
                             $airline->businessFreeWeight = str_replace('kg', '', $businessFreeWeight);
                             $modified = true;
                         }
                         $economDescription = (string) $item->luggage->econom->description;
                         if (!$airline->economDescription && $economDescription) {
                             $airline->economDescription = $economDescription;
                             $modified = true;
                         }
                         $businessDescription = (string) $item->luggage->business->description;
                         if (!$airline->businessDescription && $businessDescription) {
                             $airline->businessDescription = $businessDescription;
                             $modified = true;
                         }
                         if (!$airline->save()) {
                             CVarDumper::dump($airline->getErrors());
                         }
                     }
                     echo "airline {$airlineCode} {$airlineLocalRu} {$economFreeWeight}\n";
                 }
                 echo 'ÑŽÑ‚Ñ„?';
                 //CVarDumper::dump($airlinessxe);
             }
         }
     }
     if ($type == 'iconv') {
         if ($filename) {
             $path = Yii::getPathOfAlias('application.runtime');
             if (file_exists($filename)) {
                 $data = file_get_contents($filename);
                 echo iconv('cp1251', 'UTF-8', $data);
             }
         }
     }
     if ($type == 'test') {
         $cities = City::model()->findAllByAttributes(array('code' => 'LED', 'countryId' => 174));
         if ($cities) {
             echo "Found " . count($cities) . " cities for line: \n";
             echo str_pad('code', 5, " ", STR_PAD_RIGHT) . str_pad('localRu', 19, " ", STR_PAD_LEFT) . str_pad('localEn', 19, " ", STR_PAD_LEFT) . "\n";
             foreach ($cities as $city) {
                 echo str_pad($city->code, 5, " ", STR_PAD_RIGHT) . str_pad($city->localRu, 19, " ", STR_PAD_LEFT) . str_pad($city->localEn, 19, " ", STR_PAD_LEFT) . ' ' . $city->country->id . "\n";
             }
         }
     }
     if ($type == 'hotelbookCountries') {
         Yii::import('site.common.modules.hotel.models.*');
         $HotelClient = new HotelBookClient();
         $countries = $HotelClient->getCountries();
         print_r($countries);
         foreach ($countries as $hotelCountry) {
             $nameRu = $hotelCountry['nameRu'];
             $name = $hotelCountry['nameEn'];
             $ourCountries = $this->getCountries($name, $nameRu);
             if ($ourCountries) {
                 if (count($ourCountries) > 1) {
                     echo "Found " . count($ourCountries) . " countries for nameEn:{$hotelCountry['nameEn']} nameRu:{$hotelCountry['nameRu']} \n";
                     echo str_pad('code', 5, " ", STR_PAD_RIGHT) . str_pad('localRu', 19, " ", STR_PAD_LEFT) . str_pad('localEn', 19, " ", STR_PAD_LEFT) . "\n";
                     foreach ($ourCountries as $country) {
                         echo str_pad($country->code, 5, " ", STR_PAD_RIGHT) . str_pad($country->localRu, 19, " ", STR_PAD_LEFT) . str_pad($country->localEn, 19, " ", STR_PAD_LEFT) . ' ' . $country->id . "\n";
                     }
                     echo "Enter id of country or 's' - for skip \n";
                     $oldId = trim(fgets(STDIN));
                     if ($oldId !== 's') {
                         $country = Country::getCountryByPk(intval($oldId));
                         $country->hotelbookId = $hotelCountry['id'];
                         $country->save();
                     }
                 } else {
                     $country = $ourCountries[0];
                     if (!$country->hotelbookId) {
                         $country->hotelbookId = $hotelCountry['id'];
                         $country->save();
                     }
                 }
             } else {
                 $nameRu = substr($hotelCountry['nameRu'], 0, strpos($hotelCountry['nameRu'], ' '));
                 $name = substr($hotelCountry['nameEn'], 0, strpos($hotelCountry['nameRu'], ' '));
                 $ourCountries = $this->getCountries($name, $nameRu);
                 if ($ourCountries) {
                     if (count($ourCountries) > 1) {
                         echo "Found " . count($ourCountries) . " countries for nameEn:{$hotelCountry['nameEn']} nameRu:{$hotelCountry['nameRu']} \n";
                         echo str_pad('code', 5, " ", STR_PAD_RIGHT) . str_pad('localRu', 19, " ", STR_PAD_LEFT) . str_pad('localEn', 19, " ", STR_PAD_LEFT) . "\n";
                         foreach ($ourCountries as $country) {
                             echo str_pad($country->code, 5, " ", STR_PAD_RIGHT) . str_pad($country->localRu, 19, " ", STR_PAD_LEFT) . str_pad($country->localEn, 19, " ", STR_PAD_LEFT) . ' ' . $country->id . "\n";
                         }
                         echo "Enter id of country or 's' - for skip \n";
                         $oldId = trim(fgets(STDIN));
                         if ($oldId !== 's') {
                             $country = Country::getCountryByPk(intval($oldId));
                             $country->hotelbookId = $hotelCountry['id'];
                             $country->save();
                         }
                     } else {
                         if (!$country->hotelbookId) {
                             $country = $ourCountries[0];
                             $country->hotelbookId = $hotelCountry['id'];
                             $country->save();
                         }
                     }
                 }
             }
         }
     }
     if ($type == 'geonames') {
         $criteria = new CDbCriteria();
         $criteria->condition = 'hotelbookId IS NOT NULL';
         //$criteria->params=array(':postID'=>10);
         $start = false;
         $countries = Country::model()->findAll($criteria);
         $formatLine = 'geonameid|name_mixed|name|names|latitude|longitude|feature|feature_code|country_code|country_codes|state_code|admin2_code|admin3_code|admin4_code|population|elevation|dem|timezone|modification_date';
         $formatLine = str_replace(array("\r", "\n"), array(''), $formatLine);
         $columnNames = explode('|', $formatLine);
         //print_r($formatLine);die();
         $column = array();
         foreach ($columnNames as $i => $columnName) {
             $column[$columnName] = $i;
         }
         foreach ($countries as $country) {
             $filename = '/srv/www/oleg.voyanga/public_html/console/data_files/' . $country->code . '.txt';
             if (!$start) {
                 if ($country->code == 'HR') {
                     $start = true;
                 } else {
                     continue;
                 }
             }
             if ($filename) {
                 $path = Yii::getPathOfAlias('application.runtime');
                 if (file_exists($filename)) {
                     echo "Starting parse " . $country->code . ".txt\n";
                     $fp = fopen($filename, 'r');
                     //$countryCode = basename($filename);
                     //$countryCode = substr($countryCode,0,strpos($countryCode,'.'));
                     $outfp = fopen($path . '/' . basename($filename), 'w');
                     if (!$outfp) {
                         echo "Cant open file " . $path . '/' . basename($filename) . " for writing\n";
                         die;
                     }
                     //print_r($column);
                     $skipAll = false;
                     $lineCount = 0;
                     $addedCount = 0;
                     $haveAltNames = 0;
                     $haveRuName = 0;
                     $haveIataCode = 0;
                     echo str_pad('Parsed', 10, " ", STR_PAD_RIGHT) . str_pad('Added', 10, " ", STR_PAD_RIGHT) . str_pad('AltNames', 10, " ", STR_PAD_RIGHT) . str_pad('RuName', 10, " ", STR_PAD_RIGHT) . str_pad('IataCode', 10, " ", STR_PAD_RIGHT) . "\n";
                     while (!feof($fp)) {
                         $lineData = fgets($fp);
                         $lineData = str_replace(array("\r", "\n"), array(''), $lineData);
                         $data = explode("\t", $lineData);
                         if (!$data) {
                             continue;
                         }
                         if (count($data) <= 11) {
                             continue;
                         }
                         $lineCount++;
                         $geoNames = new GeoNames();
                         if ($data[$column['feature_code']]) {
                             if ($data[$column['feature_code']] == 'PPL' || $data[$column['feature_code']] == 'PPLA' || $data[$column['feature_code']] == 'PPLC' || $data[$column['feature_code']] == 'AIRP') {
                                 $geoNames->type = $data[$column['feature_code']];
                                 $geoNames->nameEn = $data[$column['name']];
                                 $geoNames->soundexEn = UtilsHelper::soundex($geoNames->nameEn);
                                 $geoNames->countryCode = $data[$column['country_code']];
                                 $geoNames->latitude = $data[$column['latitude']];
                                 $geoNames->longitude = $data[$column['longitude']];
                                 if (in_array($data[$column['country_code']], self::$sng)) {
                                     $geoNames->nameRu = UtilsHelper::fromTranslite($geoNames->nameEn);
                                     $ruFactor = 6;
                                 } else {
                                     $geoNames->nameRu = UtilsHelper::ruTranscript($geoNames->nameEn);
                                     $ruFactor = 12;
                                 }
                                 if ($data[$column['state_code']]) {
                                     $geoNames->stateCode = $data[$column['state_code']];
                                 }
                                 if ($data[$column['names']]) {
                                     $names = explode(',', $data[$column['names']]);
                                     $rusWord = array('index' => 0, 'count' => 0, 'replacements' => 20);
                                     $manyRusWords = false;
                                     $altNames = array();
                                     $iataCode = '';
                                     foreach ($names as $ind => $altName) {
                                         $altNames[] = $altName;
                                         if ($this->isIataCode($altName)) {
                                             if ($altName != mb_strtoupper($data[$column['name']])) {
                                                 $iataCode = $altName;
                                                 $geoNames->iataCode = $iataCode;
                                                 $haveIataCode++;
                                                 unset($altNames[$ind]);
                                                 continue;
                                             }
                                         }
                                         $n = UtilsHelper::countRussianCharacters($altName);
                                         if ($n > 0) {
                                             $altCase = mb_convert_case($altName, MB_CASE_TITLE, "UTF-8");
                                             $k = levenshtein($geoNames->nameRu, $altName);
                                             $l = levenshtein($geoNames->nameRu, $altCase);
                                             if ($l < $k) {
                                                 $k = $l;
                                                 $altNames[$ind] = $altCase;
                                                 $names[$ind] = $altCase;
                                             }
                                         }
                                         if ($n > 0 && $k < $rusWord['replacements']) {
                                             if ($rusWord['count'] > 0) {
                                                 $manyRusWords = true;
                                             }
                                             $rusWord['index'] = $ind;
                                             $rusWord['replacements'] = $k;
                                             $rusWord['count'] = $n;
                                         }
                                     }
                                     if ($manyRusWords) {
                                         fwrite($outfp, "{$geoNames->latitude}|{$geoNames->longitude}|{$data[$column['name']]}|{$names[$rusWord['index']]}\n");
                                     }
                                     if ($rusWord['count'] > 0) {
                                         if ($rusWord['replacements'] < $ruFactor) {
                                             $geoNames->nameRu = $names[$rusWord['index']];
                                             $haveRuName++;
                                             //unset($altNames[$rusWord['index']]);
                                         }
                                     }
                                     $geoNames->alternateNames = implode(',', $altNames);
                                     unset($names);
                                     unset($altNames);
                                     unset($rusWord);
                                     $haveAltNames++;
                                 }
                                 $geoNames->soundexRu = UtilsHelper::soundex($geoNames->nameRu, 'RU');
                                 $geoNames->metaphoneRu = UtilsHelper::ruMetaphone($geoNames->nameRu);
                                 $geoNames->save();
                                 $addedCount++;
                             }
                         }
                         unset($geoNames);
                         unset($lineData);
                         unset($data);
                         if ($lineCount % 30000 == 0) {
                             echo str_pad($lineCount, 10, " ", STR_PAD_RIGHT) . str_pad($addedCount, 10, " ", STR_PAD_RIGHT) . str_pad($haveAltNames, 10, " ", STR_PAD_RIGHT) . str_pad($haveRuName, 10, " ", STR_PAD_RIGHT) . str_pad($haveIataCode, 10, " ", STR_PAD_RIGHT) . "\n";
                         }
                     }
                     echo str_pad($lineCount, 10, " ", STR_PAD_RIGHT) . str_pad($addedCount, 10, " ", STR_PAD_RIGHT) . str_pad($haveAltNames, 10, " ", STR_PAD_RIGHT) . str_pad($haveRuName, 10, " ", STR_PAD_RIGHT) . str_pad($haveIataCode, 10, " ", STR_PAD_RIGHT) . "\n";
                     fclose($outfp);
                 } else {
                     echo "Not found " . $country->code . ".txt\n";
                 }
             }
             //endif filename
         }
         //endforeach countries
     }
     if ($type == 'hotelbookCities') {
         Yii::import('site.common.modules.hotel.models.*');
         $HotelClient = new HotelBookClient();
         $criteria = new CDbCriteria();
         $criteria->condition = 'hotelbookId IS NOT NULL';
         $path = Yii::getPathOfAlias('application.runtime');
         //$criteria->params=array(':postID'=>10);
         $countries = Country::model()->findAll($criteria);
         $start = false;
         foreach ($countries as $country) {
             if (!$start) {
                 /*if($country->code == 'UA')
                   {
                       $start = true;
                   }else{
                       continue;
                   }/**/
                 if ($country->code == 'US') {
                     continue;
                 }
             }
             $hotelCities = $HotelClient->getCities($country->hotelbookId);
             $oneResult = 0;
             $someResult = 0;
             $manyResult = 0;
             $noResult = 0;
             $outfp = fopen($path . '/' . $country->code . '-hotel-log.txt', 'w');
             if (!$outfp) {
                 echo "Cant open file " . $path . '/' . $country->code . "-hotel-log.txt for writing\n";
                 die;
             }
             foreach ($hotelCities as $hotelCity) {
                 if (in_array($country->code, self::$sng)) {
                     $hotelCity['nameRu'] = UtilsHelper::fromTranslite($hotelCity['nameEn']);
                 } else {
                     $hotelCity['nameRu'] = UtilsHelper::ruTranscript($hotelCity['nameEn']);
                 }
                 $hotelCity['metaphoneRu'] = UtilsHelper::ruMetaphone($hotelCity['nameRu']);
                 $hotelCity['sondexEn'] = UtilsHelper::soundex($hotelCity['nameEn']);
                 $hotels = $HotelClient->getHotels($hotelCity);
                 if (count($hotels) == 0) {
                     //We are don't need empty cities
                     continue;
                 }
                 $cnt = 0;
                 $haveCoordinates = false;
                 foreach ($hotels as $hotelObj) {
                     $cnt++;
                     $query[$hotelObj['id']] = $HotelClient->hotelDetail($hotelObj['id'], true);
                     if ($cnt > 10) {
                         break;
                     }
                 }
                 $HotelClient->processAsyncRequests();
                 foreach ($query as $hotelId => $responseId) {
                     if (isset($HotelClient->requests[$responseId]['result'])) {
                         if (isset($HotelClient->requests[$responseId]['result']->latitude, $HotelClient->requests[$responseId]['result']->longitude) && $HotelClient->requests[$responseId]['result']->latitude && $HotelClient->requests[$responseId]['result']->longitude) {
                             $haveCoordinates = true;
                             $possibleLatitude = $HotelClient->requests[$responseId]['result']->latitude;
                             $possibleLongitude = $HotelClient->requests[$responseId]['result']->longitude;
                             break;
                         }
                     }
                 }
                 $cityCriteria = new CityFindCriteria();
                 $cityCriteria->paramValues = array('countryCode' => $country->code, 'nameEn' => $hotelCity['nameEn'], 'metaphoneRu' => $hotelCity['metaphoneRu'], 'soundexEn' => $hotelCity['sondexEn']);
                 //$prevCriteria = null;
                 //$prevCount = 0;
                 $currCriteria = null;
                 $count = 0;
                 $findEnd = false;
                 $needSave = false;
                 while (!$findEnd) {
                     $prevCriteria = $currCriteria;
                     $prevCount = $count;
                     $currCriteria = $cityCriteria->getCriteria();
                     $count = GeoNames::model()->count($currCriteria);
                     $findGeo = null;
                     echo "Params: " . implode(',', $cityCriteria->paramUsed) . ' count:' . $count . "\n";
                     if ($haveCoordinates && $count < 15) {
                         $geoNames = GeoNames::model()->findAll($currCriteria);
                         foreach ($geoNames as $geoName) {
                             if ($geoName->latitude && $geoName->longitude) {
                                 $distance = intval(UtilsHelper::calculateTheDistance($geoName->latitude, $geoName->longitude, $possibleLatitude, $possibleLongitude));
                                 if ($distance < 10000) {
                                     $findGeo = $geoName;
                                     $count = 1;
                                 }
                             }
                         }
                     }
                     if ($count > 1) {
                         $findEnd = !$cityCriteria->setPlus();
                     } elseif ($count < 1) {
                         $findEnd = !$cityCriteria->setMinus();
                     } else {
                         $findEnd = true;
                     }
                 }
                 if ($count < 1) {
                     if ($count < $prevCount) {
                         $currCriteria = $prevCriteria;
                         $count = $prevCount;
                         $needSave = true;
                     }
                 } else {
                     $needSave = true;
                 }
                 if ($needSave) {
                     if ($count > 6) {
                         echo "Many results for city {$hotelCity['nameEn']} - {$count}\n";
                         $manyResult++;
                         fwrite($outfp, "{$hotelCity['nameEn']}|{$hotelCity['nameRu']}|{$hotelCity['id']}|{$count}\n");
                     } elseif ($count > 1) {
                         //echo "Many results for city {$hotelCity['nameEn']} - $count\n";
                         $geoName = GeoNames::model()->find($currCriteria);
                         echo "Possible by city name city {$hotelCity['nameEn']} City: {$geoName->nameEn} Ru: {$geoName->nameRu} IATA: {$geoName->iataCode} coords: {$geoName->longitude} {$geoName->latitude}\n";
                         $someResult++;
                         fwrite($outfp, "{$hotelCity['nameEn']}|{$hotelCity['nameRu']}|{$hotelCity['id']}|{$count}\n");
                     } else {
                         if ($findGeo) {
                             $geoName = $findGeo;
                         } else {
                             $geoName = GeoNames::model()->find($currCriteria);
                         }
                         echo "Found by city name city {$hotelCity['nameEn']} City: {$geoName->nameEn} Ru: {$geoName->nameRu} IATA: {$geoName->iataCode} coords: {$geoName->longitude} {$geoName->latitude}" . ($findGeo ? " ByCoords" : "") . "\n";
                         if ($geoName->iataCode) {
                             $city = City::model()->findByAttributes(array('code' => $geoName->iataCode, 'countryId' => $country->id));
                             if (!$city) {
                                 $city = new City();
                                 $city->localEn = $geoName->nameEn;
                                 $city->localRu = $geoName->nameRu;
                                 $city->countryId = $country->id;
                                 $city->code = $geoName->iataCode;
                             }
                             $city->latitude = $geoName->latitude;
                             $city->longitude = $geoName->longitude;
                             $city->metaphoneRu = $geoName->metaphoneRu;
                             $city->hotelbookId = $hotelCity['id'];
                             if ($geoName->stateCode) {
                                 $city->stateCode = $geoName->stateCode;
                             }
                             $city->save();
                         } else {
                             $city = City::model()->findByAttributes(array('localEn' => $geoName->nameEn, 'localRu' => $geoName->nameRu, 'countryId' => $country->id));
                             if (!$city) {
                                 $city = new City();
                                 $city->localEn = $geoName->nameEn;
                                 $city->localRu = $geoName->nameRu;
                                 $city->countryId = $country->id;
                                 $city->code = $geoName->iataCode;
                             }
                             $city->latitude = $geoName->latitude;
                             $city->longitude = $geoName->longitude;
                             $city->metaphoneRu = $geoName->metaphoneRu;
                             $city->hotelbookId = $hotelCity['id'];
                             if ($geoName->stateCode) {
                                 $city->stateCode = $geoName->stateCode;
                             }
                             $city->save();
                         }
                         $oneResult++;
                     }
                 } else {
                     echo "Dont found anything for city {$hotelCity['nameEn']}\n";
                     $noResult++;
                     fwrite($outfp, "{$hotelCity['nameEn']}|{$hotelCity['nameRu']}|{$hotelCity['id']}|{$count}\n");
                 }
                 //$criteria = new EMongoCriteria(array('conditions'=>array('countryCode'=>array('equals'=>$country->code)) ));
                 //$criteria->limit(10);
                 //$geoNames = GeoNames::model()->findAll($criteria);
             }
             echo "NoResults:{$noResult} OneResult:{$oneResult} SomeResults:{$someResult} ManyResults: {$manyResult}\n";
             fclose($outfp);
             //break;
         }
     }
     if ($type == 'iataCode') {
         $criteria = new CDbCriteria();
         $criteria->condition = 'hotelbookId IS NOT NULL';
         $path = Yii::getPathOfAlias('application.runtime');
         //$criteria->params=array(':postID'=>10);
         $countries = Country::model()->findAll($criteria);
         $start = false;
         foreach ($countries as $country) {
             if (!$start) {
                 /*
                                     if($country->code == 'RU')
                                     {
                                         $start = true;
                                     }else{
                                         continue;
                                     }/**/
                 /*if($country->code == 'US')
                   {
                       continue;
                   }/**/
             }
             $criteriaCity = new CDbCriteria();
             $criteriaCity->addCondition('code IS NOT NULL');
             $criteriaCity->addCondition('countryId=' . $country->id);
             $path = Yii::getPathOfAlias('application.runtime');
             //$criteria->params=array(':postID'=>10);
             $countCities = City::model()->count($criteriaCity);
             echo "Start parsing for country {$country->code} {$countCities} results\n";
             $pageLimit = 20;
             $n = ceil($countCities / $pageLimit);
             $criteriaCity->limit = $pageLimit;
             $oneResult = 0;
             $modifyCount = 0;
             $noResult = 0;
             $lineCount = 0;
             $outfp = fopen($path . '/' . $country->code . '-iata-log.txt', 'w');
             if (!$outfp) {
                 echo "Cant open file " . $path . '/' . $country->code . "-hotel-log.txt for writing\n";
                 die;
             }
             for ($i = 0; $i < $n; $i++) {
                 $criteriaCity->offset = $i * $pageLimit;
                 //print_r($criteriaCity);
                 //echo "\n";
                 $cities = City::model()->findAll($criteriaCity);
                 foreach ($cities as $city) {
                     $lineCount++;
                     if (UtilsHelper::countRussianCharacters($city->localRu)) {
                         $nameRu = $city->localRu;
                     } else {
                         if (in_array($country->code, self::$sng)) {
                             $nameRu = UtilsHelper::fromTranslite($city->localEn);
                         } else {
                             $nameRu = UtilsHelper::ruTranscript($city->localEn);
                         }
                     }
                     $metaphoneRu = UtilsHelper::ruMetaphone($nameRu);
                     $sondexEn = UtilsHelper::soundex($city->localEn);
                     $cityCriteria = new CityFindCriteria();
                     $cityCriteria->states = array('value' => array('iata'));
                     $cityCriteria->states[0] = array('value' => array('nameEn'));
                     $cityCriteria->states[1] = array('value' => array('iata', 'nameEn'));
                     $cityCriteria->states[1][0] = array('value' => array('iata', 'metaphoneRu'));
                     $cityCriteria->states[1][1] = array('value' => array('iata', 'nameEn', 'metaphoneRu'));
                     $cityCriteria->states[0][1] = array('value' => array('nameEn', 'metaphoneRu'));
                     $cityCriteria->states[0][0] = array('value' => array('metaphoneRu'));
                     $cityCriteria->paramUsed = $cityCriteria->states['value'];
                     $cityCriteria->paramValues = array('countryCode' => $country->code, 'nameEn' => $city->localEn, 'metaphoneRu' => $metaphoneRu, 'soundexEn' => $sondexEn, 'iata' => $city->code);
                     $currCriteria = null;
                     $count = 0;
                     $findEnd = false;
                     while (!$findEnd) {
                         //$prevCriteria = $currCriteria;
                         //$prevCount = $count;
                         $currCriteria = $cityCriteria->getCriteria();
                         $count = GeoNames::model()->count($currCriteria);
                         //echo "Params: ".implode(',',$cityCriteria->paramUsed).' count:'.$count."\n";
                         if ($count > 1) {
                             $findEnd = !$cityCriteria->setPlus();
                         } elseif ($count < 1) {
                             $findEnd = !$cityCriteria->setMinus();
                         } else {
                             $findEnd = true;
                         }
                     }
                     if ($count == 1) {
                         $oneResult++;
                         $geoName = GeoNames::model()->find($currCriteria);
                         $needSave = false;
                         if (!$city->latitude) {
                             $city->latitude = $geoName->latitude;
                             $city->longitude = $geoName->longitude;
                             $needSave = true;
                         }
                         if (!UtilsHelper::countRussianCharacters($city->localRu)) {
                             $city->localRu = $geoName->nameRu;
                             $needSave = true;
                         }
                         if (!$city->metaphoneRu) {
                             $city->metaphoneRu = $geoName->metaphoneRu;
                             $needSave = true;
                         }
                         if (!$city->stateCode) {
                             $city->stateCode = $geoName->stateCode;
                             $needSave = true;
                         }
                         if ($needSave) {
                             $modifyCount++;
                             $city->save();
                         }
                     } else {
                         $noResult++;
                         fwrite($outfp, "{$city->localEn}|{$city->code}|{$city->id}|{$count}\n");
                     }
                     if ($lineCount % 30000 == 0) {
                         echo "NoResults:{$noResult} OneResult:{$oneResult}\n";
                     }
                 }
             }
             echo "Total NoResults:{$noResult} OneResult:{$oneResult} ModifyCount: {$modifyCount} line count: {$lineCount}\n";
             fclose($outfp);
             //break;
         }
     }
     if ($type == 'updateMetaphone') {
         $criteria = new CDbCriteria();
         $criteria->condition = 'hotelbookId IS NOT NULL';
         //$criteria->params=array(':postID'=>10);
         $countries = Country::model()->findAll($criteria);
         $start = false;
         foreach ($countries as $country) {
             if (!$start) {
                 if ($country->code == 'UA') {
                     $start = true;
                 } else {
                     continue;
                 }
             }
             echo 'Update ' . $country->code . " metaphone\n";
             $criteria = new EMongoCriteria(array('conditions' => array('countryCode' => array('equals' => $country->code))));
             //$criteria->limit(10);
             $geoNames = GeoNames::model()->findAll($criteria);
             $k = 0;
             foreach ($geoNames as $geoName) {
                 $geoName->metaphoneRu = UtilsHelper::ruMetaphone($geoName->nameRu);
                 $geoName->save();
                 $k++;
                 if ($k % 30000 == 0) {
                     echo "Updated {$k} lines\n";
                 }
             }
             echo "{$country->code} complete. Updated {$k} lines\n";
             //break;
         }
         //$criteria = new EMongoCriteria(array('conditions'=>array('countryCode'=>array('equals'=>$country),'metaphoneRu'=>array('equals'=>$metaphoneRu)) ));
         //VarDumper::dump(GeoNames::model()->find($criteria));
     }
 }
Example #10
0
 /**
  * Show Itinerary details
  * CODE: itinerary_view
  */
 public function executeDetail(sfWebRequest $request)
 {
     #Security
     if (!$this->getUser()->hasCredential(array('Administrator', 'Staff', 'Pilot', 'Coordinator', 'Volunteer'), false)) {
         $this->getUser()->setFlash("warning", 'You don\'t have permission to access this url ' . $request->getReferer());
         $this->redirect('dashboard/index');
     }
     $this->orginset = '';
     $this->destset = '';
     $this->orgintset = '';
     $this->desttset = '';
     if ($request->getParameter('add_passengers')) {
         $this->group_camp_id = $request->getParameter('add_passengers');
     }
     $this->mission;
     $this->mission2;
     $mission;
     $mission2;
     $this->ground_addr_sel = sfConfig::get('app_ground_address_type', array());
     $this->errors = array();
     $this->errors2 = array();
     if ($request->getParameter('id')) {
         $this->itinerary = ItineraryPeer::retrieveByPK($request->getParameter('id'));
         $this->back = $request->getReferer();
         //echo $this->itinerary->getId();
         if (strstr($this->back, '/mission/view')) {
             $this->frommission = 1;
         } else {
             $this->frommission = 0;
         }
         $this->mis = MissionPeer::getMissionByItineraryId($this->itinerary->getId(), 1);
         $mission = $this->mis;
         /*echo "<pre>";
           print_r($this->mis);
           echo "</pre>";
           die("ok");
           */
         $this->mission = $mission;
         //print_r($mission);      exit ();
         ///Show leges
         if (isset($mission)) {
             $this->mis_legs = MissionLegPeer::getbyMissId($mission->getId());
         }
         //echo "<pre>";
         //print_r($this->mis_legs);
         //echo $this->itinerary->getId();
         $this->mis2 = MissionPeer::getMissionByItineraryId($this->itinerary->getId(), 2);
         /*
         echo "<pre>";
         print_r($this->mis2);
         echo "</pre>";
         die("ok");
         */
         $mission2 = $this->mis2;
         $this->mission2 = $mission2;
         $this->ground_addresses = array('patient' => '', 'facility' => '', 'lodging' => '', 'airport' => '');
         $pass;
         $this->personnew;
         if ($this->itinerary) {
             $this->ground_addresses['lodging'] = $this->ground_addresses['facility'] = $this->itinerary->getDestCity() . ', ' . $this->itinerary->getDestState();
             $pass = PassengerPeer::retrieveByPK($this->itinerary->getPassengerId());
             $this->personnew = PersonPeer::retrieveByPK($pass->getPersonId());
         }
         if ($pass) {
             $this->ground_addresses['lodging'] = $pass->getLodgingName() . ' ' . $this->ground_addresses['lodging'];
             $this->ground_addresses['facility'] = $pass->getFacilityName() . ' ' . $this->ground_addresses['facility'];
             $this->ground_addresses['patient'] = $this->personnew->getAddress1() . ' ' . $this->personnew->getAddress2() . ' ' . $this->personnew->getCity() . ', ' . $this->personnew->getState() . ' ' . $this->personnew->getZipcode();
             $this->ground_addresses['airport'] = $this->personnew->getAddress1() . ' ' . $this->personnew->getAddress2() . ' ' . $this->personnew->getCity() . ', ' . $this->personnew->getState() . ' ' . $this->personnew->getZipcode();
         }
     }
     if ($request->isMethod('post')) {
         if ($request->getParameter('com')) {
             if ($request->getParameter('com') == 1) {
                 $mission->setComment($request->getParameter('mis_comment'));
                 $mission->save();
             } elseif ($request->getParameter('com') == 2) {
                 $mission2->setComment($request->getParameter('mist_comment'));
                 $mission2->save();
             }
             $this->getUser()->setFlash('success', 'Comment successfully saved.');
         } else {
             if ($request->getParameter('misstsave') == 1) {
                 switch ($request->getParameter('transportation')) {
                     case 'air_mission':
                         $origin_airports = (array) $request->getParameter('origint_idents');
                         $dest_airports = (array) $request->getParameter('destinationt_idents');
                         $idents = $dest_airports;
                         $tmp_arr = array();
                         foreach ($origin_airports as $i => $ident) {
                             $idents[] = $ident;
                             $v = $ident . ' to ' . $dest_airports[$i];
                             if (in_array($v, $tmp_arr)) {
                                 $this->errors2[] = 'Leg ' . $v . ' appeared more than one';
                             } else {
                                 $tmp_arr[] = $v;
                             }
                             if ($dest_airports[$i] == $ident) {
                                 $this->errors2[] = 'Leg ' . $ident . ' to ' . $dest_airports[$i] . ' is invalid';
                             }
                         }
                         $idents = array_unique($idents);
                         $c = new Criteria();
                         $c->add(AirportPeer::IDENT, $idents, Criteria::IN);
                         if (count($idents) != AirportPeer::doCount($c)) {
                             $this->errors2[] = 'Some airport idents are invalid';
                         }
                         break;
                     case 'ground_mission':
                         $origin = $request->getParameter('groundt_origin');
                         $destination = $request->getParameter('groundt_destination');
                         $orgintset = $request->getParameter('orgintset');
                         $desttset = $request->getParameter('desttset');
                         $this->desttset = $desttset;
                         $this->orgintset = $orgintset;
                         if (empty($destination) && empty($desttset)) {
                             $this->errors2[] = 'Please specify destination address';
                         }
                         if (empty($origin) && empty($orgintset)) {
                             $this->errors2[] = 'Please specify origin address';
                         } elseif ($destination == $origin && $destination != '') {
                             $this->errors2[] = 'Origin and Destination addresses conflict';
                         }
                         break;
                     case 'commercial_mission':
                         $mission_date = $request->getParameter('mission_date');
                         if (empty($mission_date)) {
                             $this->errors2[] = 'Mission date is required';
                         }
                         if ($v = $request->getParameter('airline_id')) {
                             $custom = $request->getParameter('airline_custom');
                             if ($v == 'other') {
                                 if (empty($custom)) {
                                     $this->errors2[] = 'Please type a new airline name!';
                                 }
                             } else {
                                 $airline = AirlinePeer::retrieveByPK($v = $request->getParameter('airline_id'));
                                 if (!$airline instanceof Airline) {
                                     $this->errors2[] = 'Please select airline!';
                                 }
                             }
                         } else {
                             $this->errors2[] = 'Please select airline!';
                         }
                         break;
                     default:
                         $this->errors2[] = 'Please select Transportation Type';
                 }
                 if (count($this->errors2)) {
                     # error in form
                     switch ($request->getParameter('transportation')) {
                         case 'air_mission':
                             $this->origin_idents = $origin_airports;
                             $this->dest_idents = $dest_airports;
                             break;
                         case 'ground_mission':
                             break;
                         case 'commercial_mission':
                             break;
                     }
                     $this->erer = 2;
                 } else {
                     $missioncount = MissionLegPeer::getMaxLegNumber($mission2->getId());
                     switch ($request->getParameter('transportation')) {
                         case 'air_mission':
                             $aircount = MissionLegPeer::getCountbyMissIdAndType($mission2->getId(), 'air_mission');
                             for ($i = 0; $i < sizeof($origin_airports); $i++) {
                                 $airport_o = AirportPeer::getByIdent($origin_airports[$i]);
                                 $airport_d = AirportPeer::getByIdent($dest_airports[$i]);
                                 $missioncount++;
                                 $aircount++;
                                 $mission_leg = new MissionLeg();
                                 $mission_leg->setMissionId($mission2->getId());
                                 $mission_leg->setLegNumber($missioncount);
                                 $mission_leg->setFromAirportId($airport_o->getId());
                                 $mission_leg->setToAirportId($airport_d->getId());
                                 $mission_leg->setPrefix('air' . $aircount);
                                 //$mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                                 //$mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                                 $mission_leg->setPassOnBoard(0);
                                 $mission_leg->setTransportation('air_mission');
                                 $mission_leg->setCancelMissionLeg(1);
                                 $mission_leg->save();
                             }
                             $this->getUser()->setFlash('success', 'Mission and Leg #' . $mission_leg->getMissionId() . '-' . $mission_leg->getLegNumber() . ' has successfully created!');
                             return $this->redirect('/itinerary/detail/' . $this->itinerary->getId());
                             break;
                         case 'ground_mission':
                             $groundcount = MissionLegPeer::getCountbyMissIdAndType($mission2->getId(), 'ground_mission');
                             $mission_leg = new MissionLeg();
                             $orgintsetsave = $request->getParameter('groundt_origin');
                             if (empty($orgintsetsave)) {
                                 $orgintsetsave = $request->getParameter('orgintset');
                             }
                             $desttsetsave = $request->getParameter('groundt_destination');
                             if (empty($desttsetsave)) {
                                 $desttsetsave = $request->getParameter('desttset');
                             }
                             $groundcount++;
                             $sas = $missioncount + 1;
                             $mission_leg->setMissionId($mission2->getId());
                             $mission_leg->setLegNumber($sas);
                             $mission_leg->setPassOnBoard(0);
                             $mission_leg->setTransportation('ground_mission');
                             $mission_leg->setGroundOrigin($orgintsetsave);
                             $mission_leg->setGroundDestination($desttsetsave);
                             $mission_leg->setPrefix('g' . $groundcount);
                             $mission_leg->setCancelMissionLeg(1);
                             $mission_leg->save();
                             $this->getUser()->setFlash('success', 'Mission and Leg #' . $mission_leg->getMissionId() . '-' . $mission_leg->getLegNumber() . ' has successfully created!');
                             return $this->redirect('/itinerary/detail/' . $this->itinerary->getId());
                             break;
                         case 'commercial_mission':
                             $comcount = MissionLegPeer::getCountbyMissIdAndType($mission2->getId(), 'commercial_mission');
                             $flight_time = $request->getParameter('flight_time');
                             if (empty($flight_time['hour']) || empty($flight_time['minute'])) {
                                 $flight_time = null;
                             }
                             $airline_id = $request->getParameter('airline_id');
                             if ($airline_id == 'other') {
                                 $airline = new Airline();
                                 $airline->setName($request->getParameter('airline_custom'));
                                 $airline->save();
                             } else {
                                 $airline = AirlinePeer::retrieveByPK($airline_id);
                                 $this->forward404Unless($airline);
                             }
                             $origins = $request->getParameter('origin');
                             $destinations = $request->getParameter('destination');
                             $flight_numbers = $request->getParameter('flight_number');
                             $departures = $request->getParameter('departure');
                             $arrivals = $request->getParameter('arrival');
                             $mission->setFlightTime($flight_time['hour'] . ':' . $flight_time['minute'] . ' ' . $flight_time['period']);
                             $missioncount++;
                             $n_leg = $missioncount;
                             foreach ($origins as $i => $origin) {
                                 if (empty($origin) || empty($destinations[$i])) {
                                     continue;
                                 }
                                 $mission_leg = new MissionLeg();
                                 $comcount++;
                                 $mission_leg->setMissionId($mission2->getId());
                                 $mission_leg->setLegNumber($n_leg++);
                                 $mission_leg->setFlightTime($flight_time ? strtotime($flight_time['hour'] . ':' . $flight_time['minute'] . ' ' . $flight_time['period']) : null);
                                 //$mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                                 //$mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                                 $mission_leg->setAirlineId($airline->getId());
                                 $mission_leg->setFundId($request->getParameter('fund_id'));
                                 $mission_leg->setConfirmCode($request->getParameter('confirm_code'));
                                 $mission_leg->setFlightCost($request->getParameter('flight_cost'));
                                 $mission_leg->setCommOrigin($origin);
                                 $mission_leg->setCommDest($destinations[$i]);
                                 $mission_leg->setFlightNumber($flight_numbers[$i]);
                                 $v = $departures[$i];
                                 if (empty($v['hour']) || empty($v['minute'])) {
                                     $v = null;
                                 }
                                 $mission_leg->setDeparture($v ? strtotime($v['hour'] . ':' . $v['minute'] . ' ' . $v['period']) : null);
                                 $v = $arrivals[$i];
                                 if (empty($v['hour']) || empty($v['minute'])) {
                                     $v = null;
                                 }
                                 $mission_leg->setDeparture($v ? strtotime($v['hour'] . ':' . $v['minute'] . ' ' . $v['period']) : null);
                                 $mission_leg->setTransportation('commercial_mission');
                                 $mission_leg->setPrefix('com' . $comcount);
                                 $mission_leg->setCancelMissionLeg(1);
                                 $mission_leg->save();
                                 $this->getUser()->setFlash('success', 'Mission and Leg #' . $mission_leg->getMissionId() . '-' . $mission_leg->getLegNumber() . ' has successfully created!');
                                 return $this->redirect('/itinerary/detail/' . $this->itinerary->getId());
                             }
                             break;
                     }
                 }
             } else {
                 switch ($request->getParameter('transportation')) {
                     case 'air_mission':
                         $origin_airports = (array) $request->getParameter('origin_idents');
                         $dest_airports = (array) $request->getParameter('destination_idents');
                         $idents = $dest_airports;
                         $tmp_arr = array();
                         foreach ($origin_airports as $i => $ident) {
                             $idents[] = $ident;
                             $v = $ident . ' to ' . $dest_airports[$i];
                             if (in_array($v, $tmp_arr)) {
                                 $this->errors[] = 'Leg ' . $v . ' appeared more than one';
                             } else {
                                 $tmp_arr[] = $v;
                             }
                             if ($dest_airports[$i] == $ident) {
                                 $this->errors[] = 'Leg ' . $ident . ' to ' . $dest_airports[$i] . ' is invalid';
                             }
                         }
                         $idents = array_unique($idents);
                         $c = new Criteria();
                         $c->add(AirportPeer::IDENT, $idents, Criteria::IN);
                         if (count($idents) != AirportPeer::doCount($c)) {
                             $this->errors[] = 'Some airport idents are invalid';
                         }
                         break;
                     case 'ground_mission':
                         $origin = $request->getParameter('ground_origin');
                         $destination = $request->getParameter('ground_destination');
                         //echo $destination; die();
                         $orginset = $request->getParameter('orginset');
                         $destset = $request->getParameter('destset');
                         $this->destset = $destset;
                         $this->orginset = $orginset;
                         if (empty($destination) && empty($destset)) {
                             $this->errors[] = 'Please specify destination address';
                         }
                         if (empty($origin) && empty($orginset)) {
                             $this->errors[] = 'Please specify origin address';
                         } elseif ($destination == $origin && $destination != '') {
                             $this->errors[] = 'Origin and Destination addresses conflict';
                         }
                         break;
                     case 'commercial_mission':
                         $mission_date = $request->getParameter('mission_date');
                         if (empty($mission_date)) {
                             $this->errors[] = 'Mission date is required';
                         }
                         if ($v = $request->getParameter('airline_id')) {
                             $custom = $request->getParameter('airline_custom');
                             if ($v == 'other') {
                                 if (empty($custom)) {
                                     $this->errors[] = 'Please type a new airline name!';
                                 }
                             } else {
                                 $airline = AirlinePeer::retrieveByPK($v = $request->getParameter('airline_id'));
                                 if (!$airline instanceof Airline) {
                                     $this->errors[] = 'Please select airline!';
                                 }
                             }
                         } else {
                             $this->errors[] = 'Please select airline!';
                         }
                         break;
                     default:
                         $this->errors[] = 'Please select Transportation Type';
                 }
                 if (count($this->errors)) {
                     # error in form
                     switch ($request->getParameter('transportation')) {
                         case 'air_mission':
                             $this->origin_idents = $origin_airports;
                             $this->dest_idents = $dest_airports;
                             break;
                         case 'ground_mission':
                             break;
                         case 'commercial_mission':
                             break;
                     }
                 } else {
                     $missioncount = MissionLegPeer::getMaxLegNumber($mission->getId());
                     switch ($request->getParameter('transportation')) {
                         case 'air_mission':
                             $aircount = MissionLegPeer::getCountbyMissIdAndType($mission->getId(), 'air_mission');
                             for ($i = 0; $i < sizeof($origin_airports); $i++) {
                                 $airport_o = AirportPeer::getByIdent($origin_airports[$i]);
                                 $airport_d = AirportPeer::getByIdent($dest_airports[$i]);
                                 $missioncount++;
                                 $aircount++;
                                 $mission_leg = new MissionLeg();
                                 $mission_leg->setMissionId($mission->getId());
                                 $mission_leg->setLegNumber($missioncount);
                                 $mission_leg->setFromAirportId($airport_o->getId());
                                 $mission_leg->setToAirportId($airport_d->getId());
                                 $mission_leg->setPrefix('air' . $aircount);
                                 //$mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                                 //$mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                                 $mission_leg->setPassOnBoard(0);
                                 $mission_leg->setTransportation('air_mission');
                                 $mission_leg->setCancelMissionLeg(1);
                                 $mission_leg->save();
                             }
                             $this->getUser()->setFlash('success', 'Mission and Leg #' . $mission_leg->getMissionId() . '-' . $mission_leg->getLegNumber() . ' has successfully created!');
                             return $this->redirect('/itinerary/detail/' . $this->itinerary->getId());
                             break;
                         case 'ground_mission':
                             $groundcount = MissionLegPeer::getCountbyMissIdAndType($mission->getId(), 'ground_mission');
                             $mission_leg = new MissionLeg();
                             $orginsetsave = $request->getParameter('ground_origin');
                             if (empty($orginsetsave)) {
                                 $orginsetsave = $request->getParameter('orginset');
                             }
                             $destsetsave = $request->getParameter('ground_destination');
                             if (empty($destsetsave)) {
                                 $destsetsave = $request->getParameter('destset');
                             }
                             $groundcount++;
                             $missioncount++;
                             $sa = $missioncount;
                             $mission_leg->setMissionId($mission->getId());
                             $mission_leg->setLegNumber($sa);
                             $mission_leg->setPassOnBoard(0);
                             $mission_leg->setTransportation('ground_mission');
                             $mission_leg->setGroundOrigin($orginsetsave);
                             $mission_leg->setGroundDestination($destsetsave);
                             $mission_leg->setPrefix('g' . $groundcount);
                             $mission_leg->setCancelMissionLeg(1);
                             $mission_leg->save();
                             $this->getUser()->setFlash('success', 'Mission and Leg #' . $mission_leg->getMissionId() . '-' . $mission_leg->getLegNumber() . ' has successfully created!');
                             return $this->redirect('/itinerary/detail/' . $this->itinerary->getId());
                             break;
                         case 'commercial_mission':
                             $comcount = MissionLegPeer::getCountbyMissIdAndType($mission->getId(), 'commercial_mission');
                             $flight_time = $request->getParameter('flight_time');
                             if (empty($flight_time['hour']) || empty($flight_time['minute'])) {
                                 $flight_time = null;
                             }
                             $airline_id = $request->getParameter('airline_id');
                             if ($airline_id == 'other') {
                                 $airline = new Airline();
                                 $airline->setName($request->getParameter('airline_custom'));
                                 $airline->save();
                             } else {
                                 $airline = AirlinePeer::retrieveByPK($airline_id);
                                 $this->forward404Unless($airline);
                             }
                             $origins = $request->getParameter('origin');
                             $destinations = $request->getParameter('destination');
                             $flight_numbers = $request->getParameter('flight_number');
                             $departures = $request->getParameter('departure');
                             $arrivals = $request->getParameter('arrival');
                             $mission->setFlightTime($flight_time['hour'] . ':' . $flight_time['minute'] . ' ' . $flight_time['period']);
                             $missioncount++;
                             $n_leg = $missioncount;
                             foreach ($origins as $i => $origin) {
                                 if (empty($origin) || empty($destinations[$i])) {
                                     continue;
                                 }
                                 $mission_leg = new MissionLeg();
                                 $comcount++;
                                 $mission_leg->setMissionId($mission->getId());
                                 $mission_leg->setLegNumber($n_leg++);
                                 $mission_leg->setFlightTime($flight_time ? strtotime($flight_time['hour'] . ':' . $flight_time['minute'] . ' ' . $flight_time['period']) : null);
                                 $mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                                 $mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                                 $mission_leg->setAirlineId($airline->getId());
                                 $mission_leg->setFundId($request->getParameter('fund_id'));
                                 $mission_leg->setConfirmCode($request->getParameter('confirm_code'));
                                 $mission_leg->setFlightCost($request->getParameter('flight_cost'));
                                 $mission_leg->setCommOrigin($origin);
                                 $mission_leg->setCommDest($destinations[$i]);
                                 $mission_leg->setFlightNumber($flight_numbers[$i]);
                                 $v = $departures[$i];
                                 if (empty($v['hour']) || empty($v['minute'])) {
                                     $v = null;
                                 }
                                 $mission_leg->setDeparture($v ? strtotime($v['hour'] . ':' . $v['minute'] . ' ' . $v['period']) : null);
                                 $v = $arrivals[$i];
                                 if (empty($v['hour']) || empty($v['minute'])) {
                                     $v = null;
                                 }
                                 $mission_leg->setDeparture($v ? strtotime($v['hour'] . ':' . $v['minute'] . ' ' . $v['period']) : null);
                                 $mission_leg->setTransportation('commercial_mission');
                                 $mission_leg->setPrefix('com' . $comcount);
                                 $mission_leg->setCancelMissionLeg(1);
                                 $mission_leg->save();
                                 $this->getUser()->setFlash('success', 'Mission and Leg #' . $mission_leg->getMissionId() . '-' . $mission_leg->getLegNumber() . ' has successfully created!');
                                 return $this->redirect('/itinerary/detail/' . $this->itinerary->getId());
                             }
                             break;
                     }
                 }
             }
         }
     }
     if ($request->getParameter('id')) {
         //$this->itinerary = ItineraryPeer::retrieveByPK($request->getParameter('id'));
         //$this->mis  = MissionPeer::getMissionByItineraryId($this->itinerary->getId(), 'Home');
         //$mission = $this->mis;
         if (isset($mission)) {
             $this->mis_comment = $mission->getComment();
         }
         //$this->mis_legs = MissionLegPeer::getbyMissId($mission->getId());
         if ($mission2) {
             $this->mis2_legs = MissionLegPeer::getbyMissId($mission2->getId());
             $this->mist_comment = $mission2->getComment();
         }
         $this->date_widget = new widgetFormDate(array('format_date' => array('js' => 'mm/dd/yy', 'php' => 'm/d/Y')), array('class' => 'text'));
         $this->time_widget = new widgetFormTime();
         $this->airport_list = AirportPeer::getMappable();
         $this->ground_addresses = $this->getGroundAddresses();
         $this->airlines = AirlinePeer::doSelect(new Criteria());
         $this->funds = FundPeer::doSelect(new Criteria());
         $this->miss_ids = array();
         $c = 0;
         $count = 0;
         $count2 = 0;
         if (isset($this->itinerary)) {
             $this->missions = MissionPeer::getByItiId($this->itinerary->getId());
             if (isset($this->missions)) {
                 foreach ($this->missions as $mi) {
                     $this->miss_ids[$c] = $mi->getId();
                     $legs = MissionLegPeer::getbyMissId($mi->getId());
                 }
             }
         }
         $this->title = '#' . $this->itinerary->getId() . ' Itinerary Details';
     }
 }
Example #11
0
 public function FlightTicketing(FlightTicketingParams $flightTicketingRequest)
 {
     $aParams = array('Request' => array('Ticketing' => array('BookID' => $flightTicketingRequest->nemoBookId, 'Commision' => array('Percent' => '2'))), 'Source' => array('ClientId' => Yii::app()->params['GDSNemo']['agencyId'], 'APIKey' => Yii::app()->params['GDSNemo']['agencyApiKey'], 'Language' => 'RU', 'Currency' => 'RUB'));
     $response = self::request('Ticketing', $aParams, $bCache = FALSE, $iExpiration = 0);
     $flightTicketingResponse = new FlightTicketingResponse();
     if (isset($response->Response->Error)) {
         $status = 'error';
         $flightTicketingResponse->status = 2;
         $flightTicketingResponse->responseStatus = ResponseStatus::ERROR_CODE_EXTERNAL;
         $flightTicketingResponse->addError('error', $response->Response->Error);
     } else {
         if (isset($response->Response->Ticketing->Status)) {
             $status = $response->Response->Ticketing->Status;
         } elseif (isset($response->Error->_)) {
             $status = 'error';
             $flightTicketingResponse->addError($response->Error->Code, $response->Error->_);
         } else {
             $status = 'error';
             if (GDSNemoSoapClient::$lastCurlError) {
                 $flightTicketingResponse->addError('connection error', GDSNemoSoapClient::$lastCurlError);
             }
         }
     }
     if ($status == 'ticket') {
         $flightTicketingResponse->status = 1;
         $aParts = array();
         UtilsHelper::soapObjectsArray($response->Response->Ticketing->Flight->Segments->Segment);
         foreach ($response->Response->Ticketing->Flight->Segments->Segment as $arrKey => $oSegment) {
             $oPart = new stdClass();
             //Yii::beginProfile('loadAirportData');
             if (!isset($oSegment->DepAirp)) {
                 Yii::log(print_r($oSegment, true) . '|||' . $arrKey, 'info');
             }
             try {
                 $oPart->departure_airport = Airport::getAirportByCode(UtilsHelper::soapElementValue($oSegment->DepAirp));
                 $oPart->departure_city = $oPart->departure_airport->city;
                 $oPart->arrival_airport = Airport::getAirportByCode(UtilsHelper::soapElementValue($oSegment->ArrAirp));
                 $oPart->arrival_city = $oPart->arrival_airport->city;
                 $oPart->departure_terminal_code = isset($oSegment->DepTerminal) ? UtilsHelper::soapElementValue($oSegment->DepTerminal) : '';
                 $oPart->arrival_terminal_code = isset($oSegment->ArrTerminal) ? UtilsHelper::soapElementValue($oSegment->ArrTerminal) : '';
                 $oPart->markAirline = Airline::getAirlineByCode($oSegment->MarkAirline);
                 if ($oSegment->OpAirline == '**') {
                     $oPart->opAirline = $oPart->markAirline;
                     $oPart->transport_airline = $oPart->markAirline;
                 } else {
                     $oPart->opAirline = Airline::getAirlineByCode($oSegment->OpAirline);
                     $oPart->transport_airline = Airline::getAirlineByCode($oSegment->OpAirline);
                 }
                 $oPart->code = $oSegment->FlightNumber;
                 $oPart->duration = $oSegment->FlightTime * 60;
                 $oPart->datetime_begin = UtilsHelper::soapElementValue($oSegment->DepDateTime);
                 $oPart->datetime_end = UtilsHelper::soapElementValue($oSegment->ArrDateTime);
                 $oPart->stopNum = UtilsHelper::soapElementValue($oSegment->StopNum);
                 $oPart->aircraft_code = $oSegment->AircraftType;
                 $oPart->aTariffs = array();
                 $oPart->aTaxes = array();
                 $oPart->aBookingCodes = array();
                 UtilsHelper::soapObjectsArray($oSegment->BookingCodes->BookingCode);
                 foreach ($oSegment->BookingCodes->BookingCode as $sBookingCode) {
                     $oPart->aBookingCodes[] = UtilsHelper::soapElementValue($sBookingCode);
                 }
                 $aParts[$oSegment->SegNum] = $oPart;
             } catch (CException $e) {
             }
         }
         if ($aParts) {
             $flightTicketingResponse->aParts = $aParts;
         }
         UtilsHelper::soapObjectsArray($response->Response->Ticketing->Travellers->Traveller);
         foreach ($response->Response->Ticketing->Travellers->Traveller as $traveller) {
             $ticket = array('ticketNumber' => $traveller->Ticket->TickectNum, 'documentNumber' => $traveller->DocumentInfo->DocNum);
             $flightTicketingResponse->tickets[] = $ticket;
         }
     } else {
         $flightTicketingResponse->responseStatus = ResponseStatus::ERROR_CODE_EXTERNAL;
         $flightTicketingResponse->addError('error', 'Status is:' . $status);
         $flightTicketingResponse->status = 2;
     }
     return $flightTicketingResponse;
 }
 function fire($job, $data)
 {
     Log::info('queue:legacy[' . $job->getJobId() . '] - started airline ' . $data['airline']);
     $running = Cache::get('legacy.airlines.' . $data['airline'], false);
     if ($running != $job->getJobId() && $running !== false) {
         Log::info('queue:legacy[' . $job->getJobId() . '] - already running ' . $data['airline']);
         Cache::forget('legacy.airlines.' . $data['airline']);
         $job->delete();
         return;
     } else {
         Cache::forever('legacy.airlines.' . $data['airline'], $job->getJobId());
     }
     $flights = Flight::where('callsign', 'LIKE', $data['airline'] . '%')->whereState(2)->whereProcessed(false)->take($this->take)->get();
     $totalFlights = $flights->count();
     Log::info('queue:legacy[' . $job->getJobId() . '] - selected flights ' . $totalFlights);
     if ($flights->count() == 0) {
         Log::info('queue:legacy[' . $job->getJobId() . '] - no more flights for ' . $data['airline']);
         $airline = Airline::whereIcao($data['airline'])->first();
         $airline->duration = $airline->flights()->whereState(2)->sum('duration');
         $airline->save();
         return $this->finishJob($job, $data['airline']);
     }
     $job->delete();
     if ($job->attempts() > 1) {
         return;
     }
     DB::statement("create temporary table if not exists flights_temp (\n\t\t\t`id` int(10) unsigned NOT NULL,\n\t\t\t`callsign_type` tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t`airline_id` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,\n\t\t\t`duration` smallint(6) NOT NULL DEFAULT '0',\n\t\t\t`distance` smallint(6) NOT NULL DEFAULT '0',\n\t\t\tPRIMARY KEY (`id`)\n\t\t)");
     Log::info('queue:legacy[' . $job->getJobId() . '] - created temp table');
     foreach ($flights as $i => $flight) {
         $callsign = str_replace('-', '', strtoupper($flight->callsign));
         if (preg_match('/^' . $data['airline'] . '[0-9]{1,5}[A-Z]{0,2}$/', $flight->callsign)) {
             // Airline
             $flight->isAirline($data['airline']);
         } elseif (!is_null($registration = $this->getRegistrations($callsign))) {
             $flight->isPrivate($registration->country_id);
             unset($registration);
         } else {
             $flight->airline_id = null;
         }
         if (!is_null($flight->departure_time) && !is_null($flight->arrival_time)) {
             $duration = $this->duration($flight->departure_time, $flight->arrival_time);
             $flight->duration = $duration;
             unset($duration);
         }
         // $distance = 0;
         // foreach($flight->positions as $key => $position) {
         // 	if($key > 0) $distance += $this->distance($position->lat, $position->lon, $previous->lat, $previous->lon);
         // 	$previous = $position;
         // }
         // $flight->distance = $distance;
         // $flight->processed = true;
         // $flight->save();
         $newFlights[] = array('id' => $flight->id, 'callsign_type' => $flight->callsign_type, 'airline_id' => $flight->airline_id, 'duration' => $flight->duration, 'distance' => $flight->distance);
         unset($flight, $i, $newFlight);
     }
     Log::info('queue:legacy[' . $job->getJobId() . '] - processed flights');
     unset($flights);
     $remaining = count($newFlights);
     $step = 0;
     do {
         Log::info('queue:legacy[' . $job->getJobId() . '] - inserted flights - ' . $remaining);
         DB::table('flights_temp')->insert(array_slice($newFlights, 100 * $step, 100));
         $remaining -= 100;
         $step++;
     } while ($remaining > 0);
     Log::info('queue:legacy[' . $job->getJobId() . '] - inserted flights - done');
     DB::statement("update flights dest, flights_temp src set\n\t\t\tdest.callsign_type = src.callsign_type,\n\t\t\tdest.airline_id = src.airline_id,\n\t\t\tdest.duration = src.duration,\n\t\t\tdest.processed = 2\n\t\twhere dest.id = src.id\n\t\t");
     Log::info('queue:legacy[' . $job->getJobId() . '] - updated flights');
     Log::info('queue:legacy[' . $job->getJobId() . '] - finished airline ' . $data['airline']);
     Cache::forget('legacy.airlines.' . $data['airline']);
 }
 protected function prepareDatabase()
 {
     // Get database records for all airlines, airports, registrations
     $this->airlines = Airline::get();
     $this->registrations = Registration::get()->each(function ($registration) {
         $registration->prefix = str_replace('-', '', $registration->prefix);
         if (!$registration->regex) {
             $registration->prefix .= '.*';
         }
     });
 }
Example #14
0
Route::bind('airport', function ($value, $route) {
    $admin = in_array('admin', $route->getAction());
    $airport = Airport::whereIcao($value);
    if (!$admin) {
        $airport->whereNew(false);
    }
    $airport = $airport->first();
    if (is_null($airport)) {
        return App::abort(404, 'airport');
    } else {
        return $airport;
    }
});
Route::bind('airline', function ($value, $route) {
    $admin = in_array('admin', $route->getAction());
    $airline = Airline::whereIcao($value);
    if (!$admin) {
        $airline = $airline->whereNew(false);
    }
    $airline = $airline->first();
    if (is_null($airline)) {
        return App::abort(404, 'airline');
    } else {
        return $airline;
    }
});
Route::bind('team', function ($value) {
    $team = Team::withTrashed()->find($value);
    if (is_null($team)) {
        return App::abort(404);
    } else {
Example #15
0
 /**
  * Mission Leg Edit
  * CODE: mission_leg_create
  */
 public function executeUpdate(sfWebRequest $request)
 {
     #Security
     if (!$this->getUser()->hasCredential(array('Administrator', 'Staff', 'Coordinator'), false)) {
         $this->getUser()->setFlash("warning", 'You don\'t have permission to access this url ' . $request->getReferer());
         $this->redirect('dashboard/index');
     }
     $this->errors = array();
     // for validation
     $this->orig_set = '';
     $this->dest_set = '';
     if ($request->getParameter('id')) {
         $this->title = 'Edit Mission Leg';
         $this->leg = MissionLegPeer::retrieveByPK($request->getParameter('id'));
         if ($this->leg->getFromAirportId()) {
             $this->fromAirport = $this->leg->getAirportRelatedByFromAirportId();
         }
         if ($this->leg->getToAirportId()) {
             $this->toAirport = $this->leg->getAirportRelatedBytoAirportId();
         }
         if ($this->leg->getCoordinatorId()) {
             $this->coordinator = CoordinatorPeer::retrieveByPK($this->leg->getCoordinatorId());
         }
         //print_r($this->coordinator);
         if ($this->leg->getFboId()) {
             $this->fbo = FboPeer::retrieveByPK($this->leg->getFboId());
             $this->fbo_address = $this->leg->getFboId();
         }
         if ($this->leg->getBackupPilotId()) {
             $this->backup_pilot = PilotPeer::retrieveByPK($this->leg->getBackupPilotId());
             if (isset($this->backup_pilot) && $this->backup_pilot instanceof Pilot) {
                 $this->bp_person = $this->backup_pilot->getMember()->getPerson();
             }
         }
         if ($this->leg->getBackupCopilotId()) {
             $this->backup_co_pilot = PilotPeer::retrieveByPK($this->leg->getBackupCopilotId());
             if (isset($this->backup_co_pilot) && $this->backup_co_pilot instanceof Pilot) {
                 $this->bp_co_person = $this->backup_co_pilot->getMember()->getPerson();
             }
         }
         if ($this->leg->getWaiverReceived()) {
             $this->waiver_rec = $this->leg->getWaiverReceived();
         } else {
             $this->waiver_rec = '';
         }
         if ($this->leg->getFboAddressNew()) {
             $this->new_fbo_address = $this->leg->getFboAddressNew();
         } else {
             $this->new_fbo_address = '';
         }
         $this->date_widget = new widgetFormDate(array('format_date' => array('js' => 'mm/dd/yy', 'php' => 'm/d/Y')), array('class' => 'text'));
         $this->forward404Unless($this->leg);
         $this->mission = $this->leg->getMission();
         $this->passenger = $this->mission->getPassenger();
         $this->person = $this->passenger->getPerson();
         $this->member = MemberPeer::getByPersonId($this->person->getId());
         /*echo "<pre>";
           print_r($this->member );
           */
         /*
          if(isset($this->member) && $this->member instanceof Member){
          $this->pilot = PilotPeer::getByMemberId($this->member->getId());
          }
          /*
          if(isset($this->leg) && $this->leg instanceof MissionLeg){
          $this->pilot = PilotPeer::retrieveByPK($this->leg->getPilotId());
          }
         *
         */
         if (isset($this->leg) && $this->leg instanceof MissionLeg) {
             if ($this->leg->getPilotId()) {
                 $this->pilot = PilotPeer::retrieveByPK($this->leg->getPilotId());
                 $this->pilot_member = MemberPeer::retrieveByPK($this->pilot->getMemberId());
                 $this->copilot = PilotPeer::retrieveByPK($this->leg->getCoPilotId());
                 //echo "<pre>";
                 //print_r($this->mission_assistant);
                 $this->back_up_mission_assistant = PilotPeer::retrieveByPK($this->leg->getBackupMissAssisId());
             }
             if ($this->leg->getMissAssisId()) {
                 $this->mission_assistant = PilotPeer::getByMemberId($this->leg->getMissAssisId());
             }
         }
         //echo "<pre>";
         //print_r($this->pilot_member);
         $is_pilot_requested = PilotRequestPeer::getByLegId($this->leg->getId());
         if (isset($is_pilot_requested) && $is_pilot_requested instanceof PilotRequest) {
             $this->p_req = $is_pilot_requested;
         }
         /*
          echo "<pre>";
          print_r($this->person->getId());
          die();
         */
         $this->forward404Unless($this->mission);
         $mission_id = $this->mission->getId();
     } else {
         $this->title = 'Add Mission Leg';
         $this->leg = new MissionLeg();
         $mission_id = $request->hasParameter('mis') ? $request->getParameter('mis') : $request->getParameter('mission_id');
         $this->mission = MissionPeer::retrieveByPK($mission_id);
         $this->forward404Unless($this->mission);
     }
     if ($request->isMethod('post')) {
         if ($request->getParameter('transportation') == 'air_mission') {
             # AIR MISSION
             if ($request->getParameter('orgin_airport')) {
                 $o_airport = AirportPeer::getByIdent($request->getParameter('orgin_airport'));
                 if (!$o_airport instanceof Airport) {
                     $this->errors[] = 'Origin airport not found in database';
                 }
             } else {
                 $this->errors[] = 'Please specify origin airport';
             }
             if ($request->getParameter('dest_airport')) {
                 $d_airport = AirportPeer::getByIdent($request->getParameter('dest_airport'));
                 if (!$d_airport instanceof Airport) {
                     $this->errors[] = 'Destination airport not found in database';
                 }
             } else {
                 $this->errors[] = 'Please specify destination airport';
             }
             if (count($this->errors) == 0) {
                 $mission_leg = $this->leg;
                 $mission_leg->setMissionId($mission_id);
                 $mission_leg->setCancelled($request->getParameter('cancelled'));
                 if ($mission_leg->isNew()) {
                     $mission_leg->setLegNumber(MissionLegPeer::getMaxLegNumber($mission_id) + 1);
                 }
                 $mission_leg->setFromAirportId($o_airport->getId());
                 $mission_leg->setToAirportId($d_airport->getId());
                 $o_air = AirportPeer::retrieveByPK($o_airport->getId());
                 $d_air = AirportPeer::retrieveByPK($d_airport->getId());
                 $distances = MissionLegPeer::getDistance($o_air->getIdent(), $d_air->getIdent());
                 //$mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                 //$mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                 $mission_leg->setPassOnBoard(0);
                 $mission_leg->setTransportation('air_mission');
                 $mission_leg->save();
                 $id = $mission_leg->getId();
                 $leg = MissionLegPeer::retrieveByPK($id);
                 $leg->setReverseFrom($id);
                 $leg->save();
             }
         } elseif ($request->getParameter('transportation') == 'ground_mission') {
             # GROUND MISSION
             $origin = $request->getParameter('ground_origin');
             $destination = $request->getParameter('ground_destination');
             $orgintset = $request->getParameter('orig_set');
             $desttset = $request->getParameter('dest_set');
             $fbo_address = $request->getParameter('fbo_address');
             $this->orig_set = $orgintset;
             $this->dest_set = $desttset;
             $this->fbo_address = $fbo_address;
             if (empty($destination) && empty($desttset)) {
                 $this->errors[] = 'Please specify destination address';
             }
             if (empty($origin) && empty($orgintset)) {
                 $this->errors[] = 'Please specify origin address';
             } elseif ($destination == $origin && $destination != '') {
                 $this->errors[] = 'Origin and Destination addresses conflict';
             }
             if (empty($fbo_address)) {
                 $this->errors[] = 'Please specify FBO name';
             }
             if (count($this->errors) == 0) {
                 $mission_leg = $this->leg;
                 $mission_leg->setMissionId($mission_id);
                 if ($mission_leg->isNew()) {
                     $mission_leg->setLegNumber(MissionLegPeer::getMaxLegNumber($mission_id) + 1);
                 }
                 $mission_leg->setPassOnBoard(0);
                 $mission_leg->setTransportation('ground_mission');
                 //get addresses by type
                 $p = $this->passenger = $this->mission->getPassenger();
                 if ($p instanceof Passenger) {
                     $this->person = $p->getPerson();
                 }
                 $this->ground_addresses = array('patient' => '', 'facility' => '', 'lodging' => '');
                 $orgintsetsave = $request->getParameter('ground_origin');
                 if (empty($orgintsetsave)) {
                     $orgintsetsave = $request->getParameter('orig_set');
                 }
                 $desttsetsave = $request->getParameter('ground_destination');
                 if (empty($desttsetsave)) {
                     $desttsetsave = $request->getParameter('dest_set');
                 }
                 $mission_leg->setGroundOrigin($orgintsetsave);
                 $mission_leg->setGroundDestination($desttsetsave);
                 $mission_leg->setFboId($fbo_address);
                 //ziyed
                 $fbo_address_new = $request->getParameter('fbo_address_new');
                 $mission_leg->setFboAddressNew($fbo_address_new);
                 //end ziyed
                 $mission_leg->save();
                 $id = $mission_leg->getId();
                 $leg = MissionLegPeer::retrieveByPK($id);
                 $leg->setReverseFrom($id);
                 $leg->save();
             }
         } elseif ($request->getParameter('transportation') == 'commercial_mission') {
             # COMMERCIAL MISSION
             $airline_id = $request->getParameter('airline_id');
             if ($airline_id) {
                 $custom = $request->getParameter('airline_custom');
                 if ($airline_id == 'other') {
                     if (empty($custom)) {
                         $this->errors[] = 'Please type a new airline name!';
                     }
                 } else {
                     $airline = AirlinePeer::retrieveByPK($airline_id = $request->getParameter('airline_id'));
                     if (!$airline instanceof Airline) {
                         $this->errors[] = 'Please select airline!';
                     }
                 }
             } else {
                 $this->errors[] = 'Please select airline!';
             }
             $origin = $request->getParameter('origin');
             $destination = $request->getParameter('destination');
             if (empty($origin)) {
                 $this->errors[] = 'Please specify origin';
             }
             if (empty($destination)) {
                 $this->errors[] = 'Please specify destination';
             }
             if (count($this->errors) == 0) {
                 $flight_time = $request->getParameter('flight_time');
                 if (empty($flight_time['hour']) || empty($flight_time['minute'])) {
                     $flight_time = null;
                 }
                 $airline_id = $request->getParameter('airline_id');
                 if ($airline_id == 'other') {
                     $airline = new Airline();
                     $airline->setName($request->getParameter('airline_custom'));
                     $airline->save();
                 } else {
                     $airline = AirlinePeer::retrieveByPK($airline_id);
                     $this->forward404Unless($airline);
                 }
                 $flight_number = $request->getParameter('flight_number');
                 $departure = $request->getParameter('departure');
                 $arrival = $request->getParameter('arrival');
                 $mission_leg = $this->leg;
                 $mission_leg->setMissionId($this->mission->getId());
                 if ($mission_leg->isNew()) {
                     $mission_leg->setLegNumber(MissionLegPeer::getMaxLegNumber($mission_id) + 1);
                 }
                 $mission_leg->setFlightTime($flight_time ? strtotime($flight_time['hour'] . ':' . $flight_time['minute'] . ' ' . $flight_time['period']) : null);
                 //$mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                 //$mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                 $mission_leg->setAirlineId($airline->getId());
                 $mission_leg->setFundId($request->getParameter('fund_id'));
                 $mission_leg->setConfirmCode($request->getParameter('confirm_code'));
                 $mission_leg->setFlightCost($request->getParameter('flight_cost'));
                 $mission_leg->setCommOrigin($origin);
                 $mission_leg->setCommDest($destination);
                 $mission_leg->setFlightNumber($flight_number);
                 $v = $departure;
                 if (empty($v[0]['hour']) || empty($v[0]['minute'])) {
                     $v = null;
                 }
                 $mission_leg->setDeparture($v ? strtotime($v[0]['hour'] . ':' . $v[0]['minute'] . ' ' . $v[0]['period']) : null);
                 $v = $arrival;
                 if (empty($v[0]['hour']) || empty($v[0]['minute'])) {
                     $v = null;
                 }
                 $mission_leg->setArrival($v ? strtotime($v[0]['hour'] . ':' . $v[0]['minute'] . ' ' . $v[0]['period']) : null);
                 $mission_leg->setTransportation('commercial_mission');
                 $mission_leg->save();
             }
         } else {
             $this->forward404();
         }
         if (count($this->errors) == 0) {
             $this->getUser()->setFlash('success', 'New Mission leg has successfully created!');
             if ($request->getParameter('add_another')) {
                 $this->redirect('@leg_create?mis=' . $this->mission->getId());
             } else {
                 $this->redirect('@mission_view?id=' . $this->mission->getId());
             }
         }
     }
     $this->date_widget = new widgetFormDate(array('format_date' => array('js' => 'mm/dd/yy', 'php' => 'm/d/Y')), array('class' => 'text'));
     //echo '<pre>';print_r($this->date_widget);
     $this->time_widget = new widgetFormTime();
     $this->airport_list = AirportPeer::getMappable();
     $this->airlines = AirlinePeer::doSelect(new Criteria());
     $this->funds = FundPeer::doSelect(new Criteria());
     $p = $this->passenger = $this->mission->getPassenger();
     if ($p instanceof Passenger) {
         $this->person = $p->getPerson();
     } else {
         unset($this->passenger);
     }
     $this->itinerary = $this->mission->getItinerary();
     //echo '<pre>';print_r($this->itinerary);
     // Pre-define addresses for ground missions
     $this->ground_addresses = array('patient' => '', 'facility' => '', 'lodging' => '', 'airport' => '');
     $this->ground_addr_sel = sfConfig::get('app_ground_address_type', array());
     if ($this->itinerary) {
         $this->ground_addresses['lodging'] = $this->ground_addresses['facility'] = $this->itinerary->getDestCity() . ', ' . $this->itinerary->getDestState();
     }
     if ($this->passenger) {
         $this->ground_addresses['lodging'] = $this->passenger->getLodgingName() . ' ' . $this->ground_addresses['lodging'];
         $this->ground_addresses['facility'] = $this->passenger->getFacilityName() . ' ' . $this->ground_addresses['facility'];
         $this->ground_addresses['patient'] = $this->person->getAddress1() . ' ' . $this->person->getAddress2() . ' ' . $this->person->getCity() . ', ' . $this->person->getState() . ' ' . $this->person->getZipcode();
     }
 }
Example #16
0
 /**
  * Mission
  * CODE: mission_create, mission_leg_create
  */
 public function executeUpdate(sfWebRequest $request)
 {
     #security
     if (!$this->getUser()->hasCredential(array('Administrator', 'Staff', 'Coordinator'), false)) {
         $this->getUser()->setFlash("warning", 'You don\'t have permission to access this url ' . $request->getReferer());
         $this->redirect('dashboard/index');
     }
     if ($request->getParameter('add_passengers')) {
         $this->group_camp_id = $request->getParameter('add_passengers');
     }
     if ($request->getParameter('id')) {
     } else {
         if ($request->isMethod('post')) {
             $main_id = $request->getParameter('main_id');
             $row_id = $request->getParameter('row_id');
             $camp_id = $request->getParameter('camp_id');
             if (isset($row_id)) {
                 $fname = $request->getParameter('pass_fname' . $row_id);
                 $lname = $request->getParameter('pass_lname' . $row_id);
                 $location = $request->getParameter('pass_loc' . $row_id);
                 $note = $request->getParameter('pass_note' . $row_id);
                 $link = $request->getParameter('pass_link' . $row_id);
             } else {
                 $main_id = $request->getParameter('person_id');
                 $fname = $request->getParameter('pass_fname');
                 $lname = $request->getParameter('pass_lname');
                 $location = $request->getParameter('pass_loc');
                 $note = $request->getParameter('pass_note');
                 $link = $request->getParameter('link');
             }
             //echo var_dump($request->getParameter('link'));die();
             #create default Itinerary to passenger
             if (isset($main_id)) {
                 $is_passenger = PassengerPeer::getByPersonId($main_id);
                 if (!$is_passenger->getRequesterId() && $camp_id) {
                     $this->getUser()->setFlash('success', 'Passenger has no Requester. Requester must be selected before create a Mission!');
                     $this->redirect('@add_passengers?id=' . $camp_id);
                 }
                 $itinerary = new Itinerary();
                 if (isset($is_passenger) && $is_passenger instanceof Passenger) {
                     $itinerary->setDateRequested(date('y/m/d'));
                     $itinerary->setApointTime('Morning');
                     $itinerary->setPassengerId($is_passenger->getId());
                     $miss_type = MissionTypePeer::getName('Camp');
                     if (isset($miss_type) && $miss_type instanceof MissionType) {
                         $itinerary->setMissionTypeId($miss_type->getId());
                     }
                     if ($is_passenger->getRequesterId()) {
                         $pass_req = $is_passenger->getRequester();
                         if (isset($pass_req) && $pass_req) {
                             if (isset($pass_req) && $pass_req instanceof Requester) {
                                 $itinerary->setRequesterId($pass_req->getId());
                             }
                         }
                     }
                     if (isset($camp_id)) {
                         $camp = CampPeer::retrieveByPK($camp_id);
                         if (isset($camp) && $camp instanceof Camp) {
                             if ($camp->getAgencyId()) {
                                 $agency = $camp->getAgency();
                                 if (isset($agency) && $agency instanceof Agency) {
                                     $itinerary->setAgencyId($agency->getId());
                                 }
                             }
                         }
                     }
                     $itinerary->setCampId($camp_id);
                     $itinerary->save();
                     if (isset($itinerary) && $itinerary instanceof Itinerary) {
                         $this->redirect('@itinerary_detail?id=' . $itinerary->getId() . '&add_passengers=' . $camp_id);
                     }
                 }
             }
         }
     }
     $this->itinerary = ItineraryPeer::retrieveByPK($request->getParameter('id'));
     $this->forward404Unless($this->itinerary);
     $itinerary =& $this->itinerary;
     $this->errors = array();
     if ($request->isMethod('post')) {
         # validation
         $mission_date = $request->getParameter('mission_date');
         if (empty($mission_date)) {
             $this->errors[] = 'Mission date is required';
         }
         $companions = (array) $request->getParameter('companions');
         if (count($companions)) {
             $c = new Criteria();
             $c->add(CompanionPeer::ID, $companions, Criteria::IN);
             $c->add(CompanionPeer::PASSENGER_ID, $this->itinerary->getPassengerId());
             if (CompanionPeer::doCount($c) != count($companions)) {
                 $this->errors[] = 'Some companions not found';
             }
         }
         #use it when add group mission
         $group_camp_id = $request->getParameter('add_passengers');
         switch ($request->getParameter('transportation')) {
             case 'air_mission':
                 $origin_airports = (array) $request->getParameter('origin_idents');
                 $dest_airports = (array) $request->getParameter('destination_idents');
                 $idents = $dest_airports;
                 $tmp_arr = array();
                 foreach ($origin_airports as $i => $ident) {
                     $idents[] = $ident;
                     $v = $ident . ' to ' . $dest_airports[$i];
                     if (in_array($v, $tmp_arr)) {
                         $this->errors[] = 'Leg ' . $v . ' appeared more than one';
                     } else {
                         $tmp_arr[] = $v;
                     }
                     if ($dest_airports[$i] == $ident) {
                         $this->errors[] = 'Leg ' . $ident . ' to ' . $dest_airports[$i] . ' is invalid';
                     }
                 }
                 $idents = array_unique($idents);
                 $c = new Criteria();
                 $c->add(AirportPeer::IDENT, $idents, Criteria::IN);
                 if (count($idents) != AirportPeer::doCount($c)) {
                     $this->errors[] = 'Some airport idents are invalid';
                 }
                 break;
             case 'ground_mission':
                 $origin = $request->getParameter('ground_origin');
                 $destination = $request->getParameter('ground_destination');
                 if (empty($destination)) {
                     $this->errors[] = 'Please specify destination address';
                 }
                 if (empty($origin)) {
                     $this->errors[] = 'Please specify origin address';
                 } elseif ($destination == $origin) {
                     $this->errors[] = 'Origin and Destination addresses conflict';
                 }
                 break;
             case 'commercial_mission':
                 if ($v = $request->getParameter('airline_id')) {
                     $custom = $request->getParameter('airline_custom');
                     if ($v == 'other') {
                         if (empty($custom)) {
                             $this->errors[] = 'Please type a new airline name!';
                         }
                     } else {
                         $airline = AirlinePeer::retrieveByPK($v = $request->getParameter('airline_id'));
                         if (!$airline instanceof Airline) {
                             $this->errors[] = 'Please select airline!';
                         }
                     }
                 } else {
                     $this->errors[] = 'Please select airline!';
                 }
                 break;
             default:
                 $this->errors[] = 'Please select Transportation Type';
         }
         if (count($this->errors)) {
             # error in form
             switch ($request->getParameter('transportation')) {
                 case 'air_mission':
                     $this->origin_idents = $origin_airports;
                     $this->dest_idents = $dest_airports;
                     break;
                 case 'ground_mission':
                     break;
                 case 'commercial_mission':
                     break;
             }
             $this->selected_companions = $companions;
         } else {
             # Create Mission
             $mission = new Mission();
             $mission->setItineraryId($itinerary->getId());
             $mission->setMissionTypeId($itinerary->getMissionTypeId());
             $mission->setDateRequested($itinerary->getDateRequested());
             $mission->setPassengerId($itinerary->getPassengerId());
             $mission->setRequesterId($itinerary->getRequesterId());
             $mission->setCampId($itinerary->getCampId());
             $mission->setMissionDate(strtotime($request->getParameter('mission_date')));
             $mission->setMissionSpecificComments($request->getParameter('comment'));
             $mission->save();
             # Create Companions
             foreach ($companions as $id) {
                 $mission_companion = new MissionCompanion();
                 $mission_companion->setMissionId($mission->getId());
                 $mission_companion->setCompanionId($id);
                 $mission_companion->save();
             }
             # Create Legs
             switch ($request->getParameter('transportation')) {
                 case 'air_mission':
                     for ($i = 0; $i < sizeof($origin_airports); $i++) {
                         $airport_o = AirportPeer::getByIdent($origin_airports[$i]);
                         $airport_d = AirportPeer::getByIdent($dest_airports[$i]);
                         $mission_leg = new MissionLeg();
                         $mission_leg->setMissionId($mission->getId());
                         $mission_leg->setLegNumber($i + 1);
                         $mission_leg->setFromAirportId($airport_o->getId());
                         $mission_leg->setToAirportId($airport_d->getId());
                         $mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                         $mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                         $mission_leg->setPassOnBoard(0);
                         $mission_leg->setTransportation('air_mission');
                         $mission_leg->save();
                     }
                     $this->getUser()->setFlash('success', 'Mission and Leg(s) has successfully created!');
                     break;
                 case 'ground_mission':
                     $mission_leg = new MissionLeg();
                     $mission_leg->setMissionId($mission->getId());
                     $mission_leg->setLegNumber(1);
                     $mission_leg->setPassOnBoard(0);
                     $mission_leg->setTransportation('ground_mission');
                     $mission_leg->setGroundOrigin($request->getParameter('ground_origin'));
                     $mission_leg->setGroundDestination($request->getParameter('ground_destination'));
                     $mission_leg->save();
                     break;
                 case 'commercial_mission':
                     $flight_time = $request->getParameter('flight_time');
                     if (empty($flight_time['hour']) || empty($flight_time['minute'])) {
                         $flight_time = null;
                     }
                     $airline_id = $request->getParameter('airline_id');
                     if ($airline_id == 'other') {
                         $airline = new Airline();
                         $airline->setName($request->getParameter('airline_custom'));
                         $airline->save();
                     } else {
                         $airline = AirlinePeer::retrieveByPK($airline_id);
                         $this->forward404Unless($airline);
                     }
                     $origins = $request->getParameter('origin');
                     $destinations = $request->getParameter('destination');
                     $flight_numbers = $request->getParameter('flight_number');
                     $departures = $request->getParameter('departure');
                     $arrivals = $request->getParameter('arrival');
                     $mission->setFlightTime($flight_time['hour'] . ':' . $flight_time['minute'] . ' ' . $flight_time['period']);
                     $n_leg = 0;
                     foreach ($origins as $i => $origin) {
                         if (empty($origin) || empty($destinations[$i])) {
                             continue;
                         }
                         $mission_leg = new MissionLeg();
                         $mission_leg->setMissionId($mission->getId());
                         $mission_leg->setLegNumber(++$n_leg);
                         $mission_leg->setFlightTime($flight_time ? strtotime($flight_time['hour'] . ':' . $flight_time['minute'] . ' ' . $flight_time['period']) : null);
                         $mission_leg->setBaggageDesc($request->getParameter('baggage_desc'));
                         $mission_leg->setBaggageWeight($request->getParameter('baggage_weight'));
                         $mission_leg->setAirlineId($airline->getId());
                         $mission_leg->setFundId($request->getParameter('fund_id'));
                         $mission_leg->setConfirmCode($request->getParameter('confirm_code'));
                         $mission_leg->setFlightCost($request->getParameter('flight_cost'));
                         $mission_leg->setCommOrigin($origin);
                         $mission_leg->setCommDest($destinations[$i]);
                         $mission_leg->setFlightNumber($flight_numbers[$i]);
                         $v = $departures[$i];
                         if (empty($v['hour']) || empty($v['minute'])) {
                             $v = null;
                         }
                         $mission_leg->setDeparture($v ? strtotime($v['hour'] . ':' . $v['minute'] . ' ' . $v['period']) : null);
                         $v = $arrivals[$i];
                         if (empty($v['hour']) || empty($v['minute'])) {
                             $v = null;
                         }
                         $mission_leg->setDeparture($v ? strtotime($v['hour'] . ':' . $v['minute'] . ' ' . $v['period']) : null);
                         $mission_leg->setTransportation('commercial_mission');
                         $mission_leg->save();
                     }
                     break;
             }
             //        $this->redirect('@create_companion?id='.$mission_leg->getId());
             if (isset($group_camp_id)) {
                 $this->redirect('@mission_view?id=' . $mission->getId() . '&add_passengers=' . $group_camp_id);
             } else {
                 $this->redirect('@mission_view?id=' . $mission->getId());
             }
         }
     }
     $this->date_widget = new widgetFormDate(array('format_date' => array('js' => 'mm/dd/yy', 'php' => 'm/d/Y')), array('class' => 'text'));
     $this->time_widget = new widgetFormTime();
     $this->mission = MissionPeer::getByItineraryId($this->itinerary->getId());
     $this->airport_list = AirportPeer::getMappable();
     $this->ground_addresses = $this->getGroundAddresses();
     $this->airlines = AirlinePeer::doSelect(new Criteria());
     $this->funds = FundPeer::doSelect(new Criteria());
 }
Example #17
0
 private function initFromJsonObject($params)
 {
     if (isset($params['price'])) {
         $this->price = $params['price'];
     }
     //$this->taxes = $oParams->commission_price;
     $this->flightKey = $params['flightKey'];
     //$this->commission = $oParams->commission_price;
     $this->webService = $params['service'];
     $this->charges = $params['commission'];
     $this->refundable = $params['refundable'];
     $this->_commission = $params['commission'];
     $this->_taxes = $params['taxes'];
     $this->flights = array();
     //$this->searchKey = $oParams->searchId;
     if (!$this->valAirline) {
         $this->valAirline = Airline::getAirlineByCode($params['valCompany']);
     }
     $iInd = 0;
     $lastArrTime = 0;
     $lastCityToId = 0;
     $bStart = true;
     if ($params['flights']) {
         foreach ($params['flights'] as $iGroupId => $aParts) {
             $iIndPart = 0;
             $this->flights[$iGroupId] = new Flight();
             foreach ($aParts['flightParts'] as $oPartParams) {
                 $oPart = new FlightPart($oPartParams);
                 $this->flights[$iGroupId]->addPart($oPart);
             }
         }
     } else {
         throw new CException(Yii::t('application', 'Required param $oParams->parts not set.'));
     }
 }
Example #18
0
 function getAirlines($callsign = null)
 {
     if (is_null($this->airlines)) {
         $this->airlines = Airline::get();
     }
     if (!is_null($callsign)) {
         return $this->airlines->first(function ($key, $airline) use($callsign) {
             return preg_match('/^' . $airline->icao . '[0-9]{1,5}[A-Z]{0,2}$/', $callsign);
         });
     }
     return $this->airlines;
 }
Example #19
0
 public function getJsonObject()
 {
     $airline = Airline::getAirlineByCode($this->transportAirlineCode);
     //echo 1;
     //die();
     if (!$this->markAirline) {
         //$this->markAirline = $airline;
         $ret = array('transportAirline' => $this->transportAirlineCode, 'transportAirlineName' => $airline->localRu, 'transportAirlineNameEn' => $airline->localEn, 'departureCity' => City::getCityByPk($this->departureCityId)->localRu, 'departureCityPre' => City::getCityByPk($this->departureCityId)->casePre, 'departureCityId' => $this->departureCityId, 'arrivalCity' => City::getCityByPk($this->arrivalCityId)->localRu, 'arrivalCityPre' => City::getCityByPk($this->arrivalCityId)->casePre, 'arrivalCityId' => $this->arrivalCityId, 'datetimeBegin' => DateTimeHelper::formatForJs($this->timestampBegin), 'datetimeEnd' => DateTimeHelper::formatForJs($this->timestampEnd), 'flightCode' => $this->code, 'duration' => $this->duration, 'departureAirport' => $this->departureAirport->localRu, 'arrivalAirport' => $this->arrivalAirport->localRu, 'departureAirportId' => $this->departureAirport->id, 'arrivalAirportId' => $this->arrivalAirport->id, 'aircraftCode' => $this->aircraftCode, 'aircraftName' => $this->getAircraftName(), 'stopNum' => $this->stopNum, 'bookingCode' => $this->bookingCodes[0]);
     } else {
         $ret = array('transportAirline' => $this->transportAirlineCode, 'transportAirlineName' => $airline->localRu, 'transportAirlineNameEn' => $airline->localEn, 'markAirline' => $this->markAirline->code, 'markAirlineName' => $this->markAirline->localRu, 'markAirlineNameEn' => $this->markAirline->localEn, 'departureCity' => City::getCityByPk($this->departureCityId)->localRu, 'departureCityPre' => City::getCityByPk($this->departureCityId)->casePre, 'departureCityId' => $this->departureCityId, 'arrivalCity' => City::getCityByPk($this->arrivalCityId)->localRu, 'arrivalCityPre' => City::getCityByPk($this->arrivalCityId)->casePre, 'arrivalCityId' => $this->arrivalCityId, 'datetimeBegin' => DateTimeHelper::formatForJs($this->timestampBegin), 'datetimeEnd' => DateTimeHelper::formatForJs($this->timestampEnd), 'flightCode' => $this->code, 'duration' => $this->duration, 'departureAirport' => $this->departureAirport->localRu, 'arrivalAirport' => $this->arrivalAirport->localRu, 'departureAirportId' => $this->departureAirport->id, 'arrivalAirportId' => $this->arrivalAirport->id, 'aircraftCode' => $this->aircraftCode, 'aircraftName' => $this->getAircraftName(), 'stopNum' => $this->stopNum, 'bookingCode' => $this->bookingCodes[0]);
     }
     //print_r($ret);
     //die();
     return $ret;
 }