First Aid list, amount list and kitchen list PDF download implemented
This commit is contained in:
17
app/Providers/PdfGenerateAndDownloadProvider.php
Normal file
17
app/Providers/PdfGenerateAndDownloadProvider.php
Normal 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();
|
||||
}
|
||||
}
|
||||
97
app/Repositories/EventParticipantRepository.php
Normal file
97
app/Repositories/EventParticipantRepository.php
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user