Files
mareike/app/Repositories/EventParticipantRepository.php

98 lines
3.7 KiB
PHP

<?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;
}
}