示例#1
0
 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();
 }
示例#2
0
 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']);
 }
示例#4
0
Route::bind('airport', function ($value, $route) {
    $admin = in_array('admin', $route->getAction());
    $airport = Airport::whereIcao($value);
    if (!$admin) {
        $airport->whereNew(false);
    }
    $airport = $airport->first();
    if (is_null($airport)) {
        return App::abort(404, 'airport');
    } else {
        return $airport;
    }
});
Route::bind('airline', function ($value, $route) {
    $admin = in_array('admin', $route->getAction());
    $airline = Airline::whereIcao($value);
    if (!$admin) {
        $airline = $airline->whereNew(false);
    }
    $airline = $airline->first();
    if (is_null($airline)) {
        return App::abort(404, 'airline');
    } else {
        return $airline;
    }
});
Route::bind('team', function ($value) {
    $team = Team::withTrashed()->find($value);
    if (is_null($team)) {
        return App::abort(404);
    } else {