Files
2026-08-07 09:16:13 +07:00

33 lines
1.1 KiB
PHP

<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schedule;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
Schedule::command('billing:process-schedules')
->dailyAt('00:05')
->timezone(config('app.timezone'))
->withoutOverlapping()
->onOneServer();
Schedule::command('notifications:prune')
->dailyAt('02:15')
->timezone(config('app.timezone'))
->withoutOverlapping()
->onOneServer();
Schedule::command('nas:check-mikrotiks')
->everyMinute()
->withoutOverlapping()
->onOneServer();
Schedule::call(function () {
\App\Models\CustomerNasAccount::query()->whereIn('status', ['active','disabled'])
->where(fn ($q) => $q->whereNull('last_reconciled_at')->orWhere('last_reconciled_at','<=',now()->subMinutes(5)))
->select('id')->chunkById(200, fn ($rows) => $rows->each(fn ($row) => \App\Jobs\ReconcileCustomerNasAccount::dispatch($row->id)));
})->everyMinute()->name('nas-reconcile-accounts')->withoutOverlapping()->onOneServer();