<?php

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schedule as ScheduleFacade;

Artisan::command('inspire', function () {
    $this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');

// Daily tenant backups at 03:00 — auto-rotates after 14 days.
ScheduleFacade::command('backup:tenants --keep=14')
    ->dailyAt('03:00')
    ->withoutOverlapping()
    ->onOneServer();

// AI chat cleanup — keep tokens spend in check.
ScheduleFacade::command('queue:prune-batches --hours=48')->daily();
ScheduleFacade::command('queue:prune-failed --hours=72')->daily();

// Weekly supplier rating recomputation — Monday 04:00.
ScheduleFacade::command('suppliers:rate --days=90')
    ->weeklyOn(1, '04:00')
    ->withoutOverlapping()
    ->onOneServer();

// Daily service reminders at 09:00 (tenant-local time = UTC; adjust per-tenant later).
ScheduleFacade::command('reminders:send')
    ->dailyAt('09:00')
    ->withoutOverlapping()
    ->onOneServer();

// Weekly seasonal tire-swap reminders — Monday 09:30. Self-gates to the
// Feb 15-Mar 15 / Sep 15-Oct 15 windows; outside them it no-ops.
ScheduleFacade::command('tires:remind-seasonal')
    ->weeklyOn(1, '09:30')
    ->withoutOverlapping()
    ->onOneServer();

// Internal health probe every 10 min — pushes Telegram alerts via
// HEALTH_ALERT_BOT_TOKEN/CHAT_ID env when DB/cache/storage/backup fails.
// Pair with external uptime monitoring for total-outage coverage.
ScheduleFacade::command('health:check --silent')
    ->everyTenMinutes()
    ->withoutOverlapping()
    ->onOneServer();
