<?php namespace App\Pdf\Data; use App\Member\Member; use App\Pdf\EnvType; use App\Pdf\PdfRepository; use Illuminate\Http\Request; use Illuminate\Support\Str; use Spatie\LaravelData\Data; class MemberEfzData extends Data implements PdfRepository { public function __construct( public ?string $name, public ?string $secondLine, public ?string $currentDate, public ?array $sender = [], public ?string $filename = '', ) { } public static function fromRequest(Request $request): self { $memberId = $request->member; $member = Member::findOrFail($memberId); return new self( name: $member->fullname, secondLine: "geb. am {$member->birthday->format('d.m.Y')}, wohnhaft in {$member->location}", currentDate: now()->format('d.m.Y'), sender: [ $member->fullname, $member->address, $member->zip.' '.$member->location, 'Mglnr.: '.$member->nami_id, ] ); } public function getFilename(): string { return 'efz-fuer-'.Str::slug($this->name); } public function getView(): string { return 'tex.efz'; } public function getTemplate(): ?string { return 'efz'; } public function setFilename(string $filename): static { $this->filename = $filename; return $this; } public function getScript(): EnvType { return EnvType::PDFLATEX; } }