<?php
/** @noinspection PhpUnused */

namespace Fhp\Segment\KAA;

use Fhp\Segment\BaseDeg;

/**
 * Parameter für Kontoauszug aus Archiv (HKKAA)
 *
 * Beispiel aus BPD: [N, J, J, J, "4;PDF;1"]
 */
class ParameterKontoauszugArchiv extends BaseDeg
{
    /**
     * Einzelabruf möglich (J/N)
     * Ob ein einzelner Kontoauszug über Nummer abgerufen werden kann
     */
    public ?string $einzelabrufMoeglich = null;

    /**
     * Zeitraum-Abruf möglich (J/N)
     * Ob Kontoauszüge für einen bestimmten Zeitraum abgerufen werden können
     */
    public ?string $zeitraumAbrufMoeglich = null;

    /**
     * Alle Auszüge abrufbar (J/N)
     * Ob alle jemals erstellten Kontoauszüge abrufbar sind
     */
    public ?string $alleAuszuegeAbrufbar = null;

    /**
     * Quittierung erforderlich (J/N)
     * Ob eine Quittierung nach dem Abruf erforderlich ist
     */
    public ?string $quittierungErforderlich = null;

    /**
     * Unterstützte Formate
     * Format: "FormatCode;FormatName;MaxAnzahl"
     * z.B. "4;PDF;1" bedeutet: Format 4 (PDF), Name "PDF", max 1 auf einmal
     */
    public ?string $unterstuetzteFormate = null;

    /**
     * Prüft ob PDF-Format unterstützt wird
     */
    public function supportsPdf(): bool
    {
        if (empty($this->unterstuetzteFormate)) {
            return false;
        }
        // Format "4;PDF;1" - Code 4 ist PDF
        return str_contains($this->unterstuetzteFormate, '4;') ||
               stripos($this->unterstuetzteFormate, 'PDF') !== false;
    }

    /**
     * Gibt den Format-Code für PDF zurück (normalerweise 4)
     */
    public function getPdfFormatCode(): int
    {
        return 4;
    }

    /**
     * Prüft ob Einzelabruf möglich ist
     */
    public function canFetchSingle(): bool
    {
        return $this->einzelabrufMoeglich === 'J';
    }

    /**
     * Prüft ob Zeitraum-Abruf möglich ist
     */
    public function canFetchByDateRange(): bool
    {
        return $this->zeitraumAbrufMoeglich === 'J';
    }

    /**
     * Prüft ob Quittierung erforderlich ist
     */
    public function requiresReceipt(): bool
    {
        return $this->quittierungErforderlich === 'J';
    }
}
