From 1a4a7c3652763b737762c5039a39e022c8416a5e Mon Sep 17 00:00:00 2001 From: philipp lang Date: Fri, 13 Dec 2024 00:58:44 +0100 Subject: [PATCH] Add base gallier document --- app/Contribution/ContributionFactory.php | 2 + .../Documents/GallierDocument.php | 142 +++++++++ resources/views/tex/contribution/gallier.tex | 38 +++ .../tex/templates/contribution/gallier.pdf | Bin 0 -> 318522 bytes tests/Feature/Contribution/StoreTest.php | 282 ++++++++---------- 5 files changed, 313 insertions(+), 151 deletions(-) create mode 100644 app/Contribution/Documents/GallierDocument.php create mode 100644 resources/views/tex/contribution/gallier.tex create mode 100644 resources/views/tex/templates/contribution/gallier.pdf diff --git a/app/Contribution/ContributionFactory.php b/app/Contribution/ContributionFactory.php index 0db0aab1..ebfd6f39 100644 --- a/app/Contribution/ContributionFactory.php +++ b/app/Contribution/ContributionFactory.php @@ -8,6 +8,7 @@ use App\Contribution\Documents\RdpNrwDocument; use App\Contribution\Documents\CityRemscheidDocument; use App\Contribution\Documents\CitySolingenDocument; use App\Contribution\Documents\CityFrankfurtMainDocument; +use App\Contribution\Documents\GallierDocument; use Illuminate\Support\Collection; use Illuminate\Validation\Rule; @@ -22,6 +23,7 @@ class ContributionFactory CityRemscheidDocument::class, CityFrankfurtMainDocument::class, BdkjHesse::class, + GallierDocument::class, ]; /** diff --git a/app/Contribution/Documents/GallierDocument.php b/app/Contribution/Documents/GallierDocument.php new file mode 100644 index 00000000..520e8846 --- /dev/null +++ b/app/Contribution/Documents/GallierDocument.php @@ -0,0 +1,142 @@ +> $members + */ + public function __construct( + public string $dateFrom, + public string $dateUntil, + public string $zipLocation, + public ?Country $country, + public Collection $members, + public ?string $filename = '', + public string $type = 'F', + ) { + } + + public function dateRange(): string + { + return Carbon::parse($this->dateFrom)->format('d.m.Y') + . ' - ' + . Carbon::parse($this->dateUntil)->format('d.m.Y'); + } + + /** + * {@inheritdoc} + */ + public static function fromRequest(array $request): self + { + return new self( + dateFrom: $request['dateFrom'], + dateUntil: $request['dateUntil'], + zipLocation: $request['zipLocation'], + country: Country::where('id', $request['country'])->firstOrFail(), + members: MemberData::fromModels($request['members'])->chunk(14), + ); + } + + /** + * {@inheritdoc} + */ + public static function fromApiRequest(array $request): self + { + return new self( + dateFrom: $request['dateFrom'], + dateUntil: $request['dateUntil'], + zipLocation: $request['zipLocation'], + country: Country::where('id', $request['country'])->firstOrFail(), + members: MemberData::fromApi($request['member_data'])->chunk(14), + ); + } + + public function countryName(): string + { + return $this->country->name; + } + + public function memberShort(MemberData $member): string + { + return $member->isLeader ? 'L' : ''; + } + + public function memberName(MemberData $member): string + { + return $member->separatedName(); + } + + public function memberAddress(MemberData $member): string + { + return $member->fullAddress(); + } + + public function memberGender(MemberData $member): string + { + if (!$member->gender) { + return ''; + } + + return strtolower(substr($member->gender->name, 0, 1)); + } + + public function memberAge(MemberData $member): string + { + return $member->age(); + } + + public function basename(): string + { + return 'zuschuesse-gallier'; + } + + public function view(): string + { + return 'tex.contribution.gallier'; + } + + public function template(): Template + { + return Template::make('tex.templates.contribution'); + } + + public function setFilename(string $filename): static + { + $this->filename = $filename; + + return $this; + } + + public function getEngine(): Engine + { + return Engine::PDFLATEX; + } + + public static function getName(): string + { + return 'Für RdP NRW erstellen'; + } + + /** + * @return array + */ + public static function rules(): array + { + return [ + 'dateFrom' => 'required|string|date_format:Y-m-d', + 'dateUntil' => 'required|string|date_format:Y-m-d', + 'country' => 'required|integer|exists:countries,id', + 'zipLocation' => 'required|string', + 'eventName' => 'required|string', + ]; + } +} diff --git a/resources/views/tex/contribution/gallier.tex b/resources/views/tex/contribution/gallier.tex new file mode 100644 index 00000000..789413e8 --- /dev/null +++ b/resources/views/tex/contribution/gallier.tex @@ -0,0 +1,38 @@ +\documentclass[a4paper,landscape]{article} + +\usepackage[landscape,top=0cm,left=0cm,bottom=0cm,right=0cm]{geometry} +\usepackage{tikz} +\usepackage{background} +\usepackage{blindtext} +\usetikzlibrary{matrix, shapes.misc, calc} + +\pagestyle{empty} +\setlength{\parindent}{0cm} +\backgroundsetup{scale = 1, angle = 0, opacity = 1, color=black, contents = {\includegraphics[width = \paperwidth, height = \paperheight] {rdp-nrw.pdf}}} + +\begin{document} +\noindent \sffamily + +@foreach($members as $chunk) +\begin{tikzpicture}[remember picture,overlay,yscale=-1] + \node[anchor=base west] at (38mm,41.62mm) {\bfseries{\large{<<>>}}}; +\node[anchor=base west] at (135.2mm,41.62mm) {\bfseries{\large{<<>>}}}; + +\node[thick, cross out,draw=black,text width=2.4mm, text height=2.4mm, inner sep=0mm] at (17.76mm,47.10mm) {}; + +@foreach($chunk as $i => $member) + \node[anchor=base, text width=7.75mm, align=center] at ($(16.35mm, 76.6mm + 7mm * <<<$i % 17>>>)$) {<<<$i+1>>>}; + \node[anchor=base, text width=18mm, align=center] at ($(32.55mm, 76.6mm + 7mm * <<<$i%17>>>)$) {<<<$memberShort($member)>>>}; + \node[anchor=base, text width=70mm, align=center] at ($(80.25mm, 76.6mm + 7mm * <<<$i%17>>>)$) {<<<$memberName($member)>>>}; + \node[anchor=base, text width=118mm, align=center] at ($(178.25mm, 76.6mm + 7mm * <<<$i%17>>>)$) {<<<$memberAddress($member)>>>}; + \node[anchor=base, text width=16mm, align=center] at ($(249.50mm, 76.6mm + 7mm * <<<$i%17>>>)$) {<<<$memberGender($member)>>>}; + \node[anchor=base, text width=16mm, align=center] at ($(269.50mm, 76.6mm + 7mm * <<<$i%17>>>)$) {<<<$memberAge($member)>>>}; +@endforeach + +\end{tikzpicture} + +\pagebreak + +@endforeach +\end{document} + diff --git a/resources/views/tex/templates/contribution/gallier.pdf b/resources/views/tex/templates/contribution/gallier.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c14abfdc86bcf5716a3d52a943fe1f5190530f9b GIT binary patch literal 318522 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