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']); }
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'); }
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)); }
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)); } }
/** * 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'; } }
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 .= '.*'; } }); }
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 {
/** * 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(); } }
/** * 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()); }
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.')); } }
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; }
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; }