<?php

namespace App\Domains\Rechnung\Actions\GeneratePdf;

class GeneratePdfRequest
{
    public function __construct(
        public readonly string $organisation,
        public readonly string $anrede,
        public readonly string $vorname,
        public readonly string $nachname,
        public readonly string $adresse,
        public readonly string $plz,
        public readonly string $ort,
        public readonly string $email,
        public readonly string $rechnungsnummer,
        public readonly string $rechnungsdatum,
        public readonly string $zahlungsziel,
        public readonly string $bic,
        public readonly string $iban,
        public readonly array $positionen,
        public readonly int $mwstSatz,
        public readonly string $absenderEmail,
        public readonly string $absenderTelefon,
    ) {}

    public static function fromArray(array $data): self
    {
        return new self(
            organisation:     $data['organisation'] ?? '',
            anrede:           $data['anrede'] ?? '',
            vorname:          $data['vorname'] ?? '',
            nachname:         $data['nachname'] ?? '',
            adresse:          $data['adresse'] ?? '',
            plz:              $data['plz'] ?? '',
            ort:              $data['ort'] ?? '',
            email:            $data['email'] ?? '',
            rechnungsnummer:  $data['rechnungsnummer'] ?? '',
            rechnungsdatum:   $data['rechnungsdatum'] ?? '',
            zahlungsziel:     $data['zahlungsziel'] ?? '',
            bic:              $data['bic'] ?? '',
            iban:             $data['iban'] ?? '',
            positionen:       $data['positionen'] ?? [],
            mwstSatz:         (int) ($data['mwstSatz'] ?? 19),
            absenderEmail:    $data['absenderEmail'] ?? 'finanzen@sachsen.pfadfinden.de',
            absenderTelefon:  $data['absenderTelefon'] ?? '',
        );
    }
}
