public static function launchCount($substatistic, $dynamicString) { if ($substatistic === 'Total') { if ($dynamicString === 'currentMonth') { return Cache::remember('stats:description:launchCount:total:currentMonth', 60, function () { return Carbon::now()->format('F Y'); }); } if ($dynamicString === 'totalRockets') { return Cache::remember('stats:description:launchCount:total:totalRockets', 60, function () { return Mission::whereComplete()->count(); }); } } if ($substatistic === 'Falcon 9') { if ($dynamicString === 'launchCount') { return Cache::remember('stats:description:launchCount:falcon9:launchCount', 60, function () { return Mission::whereGenericVehicle('Falcon 9')->whereComplete()->count(); }); } } if ($substatistic === 'Falcon Heavy' || $substatistic === 'Falcon 1') { if ($dynamicString === 'launchCount') { return Cache::remember('stats:description:launchCount:' . $substatistic . ':launchCount', 60, function () use($substatistic) { return Mission::whereSpecificVehicle($substatistic)->whereComplete()->count(); }); } } }
public function getLaunchProbabilityAttribute() { if ($this->status == MissionStatus::Upcoming) { $preciseEstimatedTimeOfLaunch = Carbon::instance(LaunchDateTimeResolver::parseString($this->launch_date_time)->getDateTime()); $timeUntilLaunch = Carbon::now()->diffInSeconds($preciseEstimatedTimeOfLaunch); $delayedLaunches = count(DB::table('prelaunch_events')->select(['prelaunch_events.mission_id'])->where('event', 'Launch Change')->whereRaw('prelaunch_events.occurred_at > DATE_SUB(missions.launch_exact, INTERVAL ' . $timeUntilLaunch . ' SECOND)')->where('missions.status', 'Complete')->join('missions', 'missions.mission_id', '=', 'prelaunch_events.mission_id')->groupBy('missions.mission_id')->get()); $totalLaunches = Mission::whereComplete()->count(); return 1 / $totalLaunches * ($totalLaunches - $delayedLaunches); } return null; }
/** * @param $substatistic * @return string */ public static function kwajalein($substatistic) { if ($substatistic === 'Launches') { return Cache::remember('stats:kwajalein:launches', 60, function () { return Mission::whereComplete()->whereHas('launchSite', function ($q) { $q->where('name', 'Omelek Island'); })->count(); }); } else { if ($substatistic === 'Last Launch') { try { $lastLaunch = Mission::lastFromLaunchSite('Omelek Island')->firstOrFail(); } catch (ModelNotFoundException $e) { return false; } return $lastLaunch; } } }