<?php

namespace App\Console\Commands;

use App\Models\PendingSyncQueue;
use App\Models\NameserverStatusHistory;
use Illuminate\Console\Command;

class CleanupSyncData extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'sync:cleanup
                            {--days=7 : Zile pentru păstrarea elementelor completate}
                            {--history-days=30 : Zile pentru păstrarea istoricului status}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Curăță datele vechi din coada de sincronizare și istoricul statusurilor';

    /**
     * Execute the console command.
     */
    public function handle(): int
    {
        $syncDays = (int) $this->option('days');
        $historyDays = (int) $this->option('history-days');

        $this->info('🧹 Curățare date vechi...');

        // Curăță elementele completate din coadă
        $deletedSync = PendingSyncQueue::cleanupCompleted($syncDays);
        $this->line("  ✓ {$deletedSync} elemente completate șterse din coadă (mai vechi de {$syncDays} zile)");

        // Curăță istoricul statusurilor
        $deletedHistory = NameserverStatusHistory::cleanup($historyDays);
        $this->line("  ✓ {$deletedHistory} înregistrări șterse din istoricul statusurilor (mai vechi de {$historyDays} zile)");

        // Statistici rămase
        $remainingPending = PendingSyncQueue::pending()->count();
        $remainingFailed = PendingSyncQueue::where('status', PendingSyncQueue::STATUS_FAILED)->count();

        $this->newLine();
        $this->info("📊 Rămase în coadă: {$remainingPending} pending, {$remainingFailed} eșuate permanent");

        return Command::SUCCESS;
    }
}
