<?php

declare(strict_types=1);

namespace App\DTOs;

use Carbon\Carbon;

/**
 * DTO para operación de Extensión de crédito.
 *
 * Extensión: Ampliar plazo sin entregar dinero nuevo.
 * El saldo pendiente se redistribuye en más cuotas.
 */
readonly class ExtendCreditData extends CreditOperationData
{
    public function __construct(
        int $creditId,
        int $newInstallmentsCount,
        ?string $periodicity = null,
        ?Carbon $startDate = null,
        ?Carbon $firstDueDateOverride = null,
        ?int $dueDay1 = null,
        ?int $dueDay2 = null,
        ?string $reason = null,
    ) {
        parent::__construct(
            creditId: $creditId,
            newInstallmentsCount: $newInstallmentsCount,
            periodicity: $periodicity,
            startDate: $startDate ?? Carbon::today(),
            firstDueDateOverride: $firstDueDateOverride,
            dueDay1: $dueDay1,
            dueDay2: $dueDay2,
            reason: $reason,
        );
    }

    public function operationType(): string
    {
        return 'extension';
    }
}
