示例#1
0
 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);
 }