mirror of
https://github.com/alexjustesen/speedtest-tracker.git
synced 2026-06-23 07:10:10 +00:00
a47e3225e5
Co-authored-by: Sven van Ginkel <svenvanginkel@icloud.com> Co-authored-by: Alex Justesen <1144087+alexjustesen@users.noreply.github.com>
46 lines
1.1 KiB
PHP
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');
|
|
}
|
|
}
|