Merge pull request #597 from Lavoaster/fix/homepage_excessive_queriesv2

Refactored the way incidents are pulled out of the database + Sort fix
This commit is contained in:
James Brooks
2015-04-23 08:08:32 +01:00

View File

@@ -74,25 +74,31 @@ class HomeController extends AbstractController
$metrics = Metric::where('display_chart', 1)->get();
}
$allIncidents = [];
$daysToShow = Setting::get('app_incident_days') ?: 7;
$incidentDays = range(0, $daysToShow);
$dateFormat = Setting::get('date_format') ?: 'jS F Y';
$allIncidents = Incident::notScheduled()->whereBetween('created_at', [
$startDate->copy()->subDays($daysToShow)->format('Y-m-d').' 00:00:00',
$startDate->format('Y-m-d').' 23:59:59',
])->orderBy('created_at', 'desc')->get()->groupBy(function (Incident $incident) use ($dateFormat) {
return $incident->created_at->format($dateFormat);
});
// Add in days that have no incidents
foreach ($incidentDays as $i) {
$date = $startDate->copy()->subDays($i);
$incidents = Incident::notScheduled()->whereBetween('created_at', [
$date->format('Y-m-d').' 00:00:00',
$date->format('Y-m-d').' 23:59:59',
])->orderBy('created_at', 'desc')->get();
$allIncidents[] = [
'date' => (new Date($date->toDateString()))->format($dateFormat),
'incidents' => $incidents,
];
if (!isset($allIncidents[$date->format($dateFormat)])) {
$allIncidents[$date->format($dateFormat)] = [];
}
}
// Sort the array so it takes into account the added days
$allIncidents->sortBy(function ($value, $key) {
return $key;
}, SORT_REGULAR, true);
// Scheduled maintenance code.
$scheduledMaintenance = Incident::scheduled()->orderBy('scheduled_at')->get();