<?php
/** @noinspection PhpUnused */

namespace Fhp\Segment\EKA;

use Fhp\Segment\BaseSegment;
use Fhp\Segment\Common\Kti;
use Fhp\Segment\Paginateable;

/**
 * Segment: Elektronischer Kontoauszug anfordern (Version 5)
 *
 * Ruft elektronische Kontoauszüge ab (MT940 oder PDF).
 * Version 5 verwendet Kti (IBAN/BIC).
 */
class HKEKAv5 extends BaseSegment implements Paginateable
{
    /** Kontoverbindung international (IBAN + BIC) */
    public Kti $kontoverbindungInternational;

    /**
     * Format des Kontoauszugs
     * 1 = MT940 (SWIFT)
     * 2 = PDF
     */
    public ?int $format = null;

    /**
     * Von Datum (JJJJMMTT) - Optional
     */
    public ?string $vonDatum = null;

    /**
     * Bis Datum (JJJJMMTT) - Optional
     */
    public ?string $bisDatum = null;

    /**
     * Maximale Anzahl Einträge - Optional
     */
    public ?int $maximaleAnzahlEintraege = null;

    /**
     * Aufsetzpunkt für Pagination - Max 35 Zeichen
     */
    public ?string $aufsetzpunkt = null;

    /**
     * Erstellt ein HKEKA v5 Segment
     */
    public static function create(
        Kti $kti,
        ?int $format = null,
        ?string $vonDatum = null,
        ?string $bisDatum = null,
        ?string $aufsetzpunkt = null
    ): HKEKAv5 {
        $result = HKEKAv5::createEmpty();
        $result->kontoverbindungInternational = $kti;
        $result->format = $format;
        $result->vonDatum = $vonDatum;
        $result->bisDatum = $bisDatum;
        $result->aufsetzpunkt = $aufsetzpunkt;
        return $result;
    }

    public function setPaginationToken(string $paginationToken): void
    {
        $this->aufsetzpunkt = $paginationToken;
    }
}
