function store() { $rules = array('icao' => 'alpha|required', 'name' => 'required', 'radio' => '', 'website' => 'url'); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { Messages::error($validator->messages()->all()); return Redirect::back()->withInput(); } if (is_null($airline = Airline::whereIcao(Input::get('icao'))->whereNew(true)->first())) { $airline = new Airline(); $airline->icao = Input::get('icao'); $airline->name = Input::get('name'); $airline->new = true; $airline->save(); } Diff::compare($airline, Input::all(), function ($key, $value, $model) { $change = new AirlineChange(); $change->airline_id = $model->id; $change->user_id = Auth::id(); $change->key = $key; $change->value = $value; $change->save(); }, ['name', 'radio', 'website']); Messages::success('Thank you for your submission. We will check whether all information is correct and soon this airline might be available.'); return Redirect::back(); }
function airline() { $airline = Airline::whereIcao($this->query)->first(); if (!is_null($airline)) { return Redirect::route('airline.show', $airline->icao); } return false; }
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']); }
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 {