Files
Paymenter-Version-Tracks/app/Admin/Widgets/CronStat/CronOverview.php
Muhammad Tamir b3933b9960 v1.4.0
2025-11-14 10:59:24 +07:00

42 lines
1.4 KiB
PHP

<?php
namespace App\Admin\Widgets\CronStat;
use App\Models\Setting;
use Carbon\Carbon;
use Filament\Widgets\StatsOverviewWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;
class CronOverview extends StatsOverviewWidget
{
protected static bool $isDiscovered = false;
protected ?string $pollingInterval = '60s';
protected function getStats(): array
{
$lastRun = Setting::where('key', 'last_scheduler_run')->first()?->value;
$lastCronRun = Setting::where('key', 'last_cron_run')->first()?->value;
$cronTime = config('settings.cronjob_time', '00:00');
$now = Carbon::now();
$nextRun = $now->copy()->setTimeFromTimeString($cronTime);
if ($nextRun->lessThanOrEqualTo($now)) {
$nextRun->addDay();
}
return [
Stat::make('Last scheduler run', $lastRun ? Carbon::parse($lastRun)->diffForHumans() : 'Never')
->extraAttributes([
'class' => $lastRun && Carbon::parse($lastRun)->gt(Carbon::now()->subMinutes(5)) ? 'success' : 'error',
]),
Stat::make('Last cron run', $lastCronRun ? Carbon::parse($lastCronRun)->diffForHumans() : 'Never')
->extraAttributes([
'class' => $lastCronRun && Carbon::parse($lastCronRun)->gt(Carbon::now()->subHours(24)) ? 'success' : 'error',
]),
Stat::make('Next cron run', $nextRun->diffForHumans()),
];
}
}