<?php

namespace App\Console\Commands;

use App\Services\EmailActionConfirmation;
use Carbon\Carbon;
use Illuminate\Console\Command;

class NotifyAccrualConfirmationEmails extends Command
{
    protected $signature = 'investments:notify-accrual-email {--date= : Fecha Y-m-d (por defecto hoy)}';

    protected $description = 'Envía a los administradores el correo con enlace para confirmar y ejecutar la acreditación del día.';

    public function handle(EmailActionConfirmation $confirmation): int
    {
        $dateOpt = $this->option('date');
        $on = $dateOpt !== null && $dateOpt !== ''
            ? Carbon::parse((string) $dateOpt)->startOfDay()
            : Carbon::today();

        if ($confirmation->hasPendingAccrualPrompt($on)) {
            $this->info('Ya existe un enlace de confirmación pendiente para esta fecha; no se reenvía el correo.');

            return self::SUCCESS;
        }

        $confirmation->notifyAccrualForDate($on);

        $this->info('Correo de confirmación de acreditación enviado a administradores (fecha '.$on->toDateString().').');

        return self::SUCCESS;
    }
}
