/** * @param $substatistic * @return mixed */ public static function dragon($substatistic) { if ($substatistic === 'Missions') { return Cache::remember('stats:dragon:missions', 60, function () { return SpacecraftFlight::whereHas('mission', function ($q) { $q->whereComplete(); })->count(); }); } if ($substatistic === 'ISS Resupplies') { return Cache::remember('stats:dragon:ISSResupplies', 60, function () { return SpacecraftFlight::whereNotNull('iss_berth')->whereHas('mission', function ($q) { $q->whereComplete(); })->count(); }); } if ($substatistic === 'Total Flight Time') { return Cache::remember('stats:dragon:totalflighttime', 60, function () { return DB::table('spacecraft_flights_pivot')->selectRaw('SUM(TIMESTAMPDIFF(SECOND,missions.launch_exact,spacecraft_flights_pivot.end_of_mission)) AS duration')->where('missions.status', 'Complete')->join('missions', 'missions.mission_id', '=', 'spacecraft_flights_pivot.mission_id')->first()->duration; }); } if ($substatistic === 'Flight Time') { return Cache::remember('stats:dragon:flighttime', 60, function () { return ['values' => SpacecraftFlight::selectRaw('TIMESTAMPDIFF(SECOND,missions.launch_exact,spacecraft_flights_pivot.end_of_mission) / 86400 AS duration, missions.name AS mission')->where('missions.status', 'Complete')->join('missions', 'missions.mission_id', '=', 'spacecraft_flights_pivot.mission_id')->get(), 'extrapolation' => false, 'xAxis' => ['type' => 'ordinal', 'key' => 'mission', 'title' => 'Mission'], 'yAxis' => ['type' => 'linear', 'key' => 'duration', 'title' => 'Duration (Days)', 'zeroing' => true]]; }); } if ($substatistic === 'Cargo') { $query = Cache::remember('stats:dragon:cargo', 60, function () { return SpacecraftFlight::select(DB::raw('SUM(upmass) AS upmass, SUM(downmass) AS downmass'))->whereHas('mission', function ($q) { $q->whereComplete(); })->first(); }); $stat[0] = number_format($query->upmass); $stat[1] = number_format($query->downmass); return $stat; } if ($substatistic === 'Reflights') { return Cache::remember('stats:dragon:reflights', 60, function () { return DB::select(DB::raw("SELECT COALESCE(SUM(reflights), 0) as total_flights FROM (SELECT COUNT(*)-1 as reflights FROM spacecraft JOIN spacecraft_flights_pivot ON spacecraft.spacecraft_id = spacecraft_flights_pivot.spacecraft_id WHERE spacecraft.spacecraft_id=spacecraft_flights_pivot.spacecraft_id GROUP BY spacecraft_flights_pivot.spacecraft_id HAVING reflights > 0) reflights"))[0]->total_flights; }); } }
public static function dragon($substatistic, $dynamicString) { if ($substatistic === 'Missions') { if ($dynamicString === 'missionCount') { return Cache::remember('stats:description:dragon:missions:missionCount', 60, function () { return SpacecraftFlight::whereHas('mission', function ($q) { $q->whereComplete(); })->count(); }); } } if ($substatistic === 'ISS Resupplies') { if ($dynamicString === 'issResupplyCount') { return Cache::remember('stats:description:dragon:issResupplies:issResupplyCount', 60, function () { return SpacecraftFlight::whereNotNull('iss_berth')->whereHas('mission', function ($q) { $q->whereComplete(); })->count(); }); } } }