First Aid list, amount list and kitchen list PDF download implemented

This commit is contained in:
2026-03-28 22:28:55 +01:00
parent 7bea223ded
commit 2d17e61cc8
6 changed files with 408 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Providers;
use Dompdf\Dompdf;
class PdfGenerateAndDownloadProvider {
public static function fromHtml(string $html, string $orientation = 'portrait'): string
{
$dompdf = new Dompdf();
$dompdf->loadHtml($html, 'UTF-8');
$dompdf->setPaper('A4', $orientation);
$dompdf->render();
return $dompdf->output();
}
}

View File

@@ -0,0 +1,97 @@
<?php
namespace App\Repositories;
use App\Enumerations\EatingHabit;
use App\Models\Event;
use Illuminate\Http\Request;
class EventParticipantRepository {
public function getForList(Event $event, Request $request) : array {
$participants = [];
foreach ($event->participants()->orderBy('lastname')->orderBy('firstname')->get() as $participant) {
$participants[] = $participant->toResource()->toArray($request);
};
return $participants;
}
public function getParticipantsWithIntolerances(Event $event, Request $request) : array {
$participants = [];
foreach ($event->participants()->whereNotNull('intolerances')->whereNot('intolerances' , '=', '')->get() as $participant) {
$participants[] = $participant->toResource()->toArray($request);
};
return $participants;
}
public function getKitchenOverview(Event $event) : array {
$data = [];
$participants = $event->participants()->get();
for ($cur_date = $event->start_date; $cur_date <= $event->end_date; $cur_date->modify('+1 day')) {
$dateKey = $cur_date->format('d.m.Y');
$data[$dateKey] = [
'1' => [],
'2' => [],
'3' => [],
];
foreach (EatingHabit::all() as $eatingHabit) {
$data[$dateKey]['1'][$eatingHabit->slug] = 0;
$data[$dateKey]['2'][$eatingHabit->slug] = 0;
$data[$dateKey]['3'][$eatingHabit->slug] = 0;
}
foreach ($participants as $participant) {
$eatingHabitSlug = $participant->eating_habit;
if ($eatingHabitSlug === null) {
continue;
}
$anreise = $participant->arrival_date;
$abreise = $participant->departure_date;
if ($anreise->getTimestamp() === $cur_date->getTimestamp()) {
switch ((int)$participant->arrival_eating) {
case 1:
$data[$dateKey]['3'][$eatingHabitSlug]++;
break;
case 2:
$data[$dateKey]['2'][$eatingHabitSlug]++;
$data[$dateKey]['3'][$eatingHabitSlug]++;
break;
case 3:
$data[$dateKey]['1'][$eatingHabitSlug]++;
$data[$dateKey]['2'][$eatingHabitSlug]++;
$data[$dateKey]['3'][$eatingHabitSlug]++;
break;
}
} elseif ($abreise->getTimestamp() === $cur_date->getTimestamp()) {
switch ((int)$participant->departure_eating) {
case 1:
$data[$dateKey]['1'][$eatingHabitSlug]++;
break;
case 2:
$data[$dateKey]['1'][$eatingHabitSlug]++;
$data[$dateKey]['2'][$eatingHabitSlug]++;
break;
case 3:
$data[$dateKey]['1'][$eatingHabitSlug]++;
$data[$dateKey]['2'][$eatingHabitSlug]++;
$data[$dateKey]['3'][$eatingHabitSlug]++;
break;
}
} else {
$data[$dateKey]['1'][$eatingHabitSlug]++;
$data[$dateKey]['2'][$eatingHabitSlug]++;
$data[$dateKey]['3'][$eatingHabitSlug]++;
}
}
}
return $data;
}
}