Files
speedtest-tracker/app/Livewire/PlatformStats.php
T
Alex Justesen a47e3225e5 Release v1.12.0 (#2493)
Co-authored-by: Sven van Ginkel <svenvanginkel@icloud.com>
Co-authored-by: Alex Justesen <1144087+alexjustesen@users.noreply.github.com>
2025-12-05 15:33:44 -05:00

46 lines
1.1 KiB
PHP

<?php
namespace App\Livewire;
use App\Enums\ResultStatus;
use App\Models\Result;
use Carbon\Carbon;
use Cron\CronExpression;
use Illuminate\Support\Number;
use Livewire\Attributes\Computed;
use Livewire\Component;
class PlatformStats extends Component
{
#[Computed]
public function nextSpeedtest(): ?Carbon
{
if ($schedule = config('speedtest.schedule')) {
$cronExpression = new CronExpression($schedule);
return Carbon::parse(time: $cronExpression->getNextRunDate(timeZone: config('app.display_timezone')));
}
return null;
}
#[Computed]
public function platformStats(): array
{
$totalResults = Result::count();
$completedResults = Result::where('status', ResultStatus::Completed)->count();
$failedResults = Result::where('status', ResultStatus::Failed)->count();
return [
'total' => Number::format($totalResults),
'completed' => Number::format($completedResults),
'failed' => Number::format($failedResults),
];
}
public function render()
{
return view('livewire.platform-stats');
}
}