From 266aa8f10a5b219391baf9601f3c5ce6b5ed5467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 25 Mar 2025 17:01:57 +0100 Subject: [PATCH] feat: show available/open assignments in timeline --- src/Service/Assignment/TimelineService.php | 21 ++++++++++++++++--- .../assignment/timeline.html.twig | 4 ++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Service/Assignment/TimelineService.php b/src/Service/Assignment/TimelineService.php index 23affac..60bfc1f 100644 --- a/src/Service/Assignment/TimelineService.php +++ b/src/Service/Assignment/TimelineService.php @@ -25,10 +25,21 @@ class TimelineService $rows[$hotelCode] = [[]]; } - if (0 === $assignment->getDispositions()->count()) { + $dispositionsCount = $assignment->getDispositions()->count(); + $dispositionsAvailable = $assignment->getAvailableDispositions(); + + if (0 === $dispositionsCount) { $item = TimelineItem::fromAssignment($assignment); - $this->addItem($rows[$hotelCode], $item); + for ($i = 1; $i <= $assignment->getAvailableDispositions(); $i++) { + $this->addItem($rows[$hotelCode], $item); + } } else { + if ($dispositionsCount < $dispositionsAvailable) { + $item = TimelineItem::fromAssignment($assignment); + for ($i = 1; $i <= $dispositionsAvailable - $dispositionsCount; $i++) { + $this->addItem($rows[$hotelCode], $item); + } + } foreach ($assignment->getDispositions() as $disposition) { $item = TimelineItem::fromDisposition($disposition); $this->addItem($rows[$hotelCode], $item); @@ -42,12 +53,16 @@ class TimelineService private function addItem(array &$rows, TimelineItem $item): void { $rowIndex = 0; + $fitsRow = false; foreach ($rows as $index => $row) { $fitsRow = true; foreach ($row as $entry) { /** @var TimelineItem $entry */ - if ($entry->getDateTo() >= $item->getDateFrom() && $entry->getDateFrom() <= $item->getDateTo()) { + if ( + isset($row[$item->getKey()]) || + $entry->getDateTo() >= $item->getDateFrom() && $entry->getDateFrom() <= $item->getDateTo() + ) { $fitsRow = false; } } diff --git a/templates/administrative/assignment/timeline.html.twig b/templates/administrative/assignment/timeline.html.twig index 8f73de7..49f120c 100644 --- a/templates/administrative/assignment/timeline.html.twig +++ b/templates/administrative/assignment/timeline.html.twig @@ -24,7 +24,7 @@ {% else %} - {{ item.jobProfile }} @@ -112,7 +112,7 @@ Bedarf
- in Bewerbung + in Bearbeitung
besetzt