From e7035a7c30024a1d9ec43aac3f0074880c43d0ee Mon Sep 17 00:00:00 2001 From: tristan Date: Tue, 19 May 2026 10:35:07 +0200 Subject: [PATCH] feat(employee) : expose contractPhases on read API --- src/Entity/Employee.php | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Entity/Employee.php b/src/Entity/Employee.php index 7b79a67..5461f65 100644 --- a/src/Entity/Employee.php +++ b/src/Entity/Employee.php @@ -6,9 +6,11 @@ namespace App\Entity; use ApiPlatform\Metadata\ApiProperty; use ApiPlatform\Metadata\ApiResource; +use App\Dto\Contracts\ContractPhase; use App\Dto\Employees\ContractHistoryItem; use App\Enum\ContractNature; use App\Repository\EmployeeRepository; +use App\Service\Contracts\EmployeeContractPhaseResolver; use App\State\EmployeeWriteProcessor; use DateTimeImmutable; use Doctrine\Common\Collections\ArrayCollection; @@ -428,6 +430,38 @@ class Employee ); } + /** + * @return list, + * isCurrent: bool + * }> + */ + #[Groups(['employee:read'])] + public function getContractPhases(): array + { + $resolver = new EmployeeContractPhaseResolver(); + + return array_map( + static fn (ContractPhase $phase): array => [ + 'id' => $phase->id, + 'contractType' => $phase->contractType->value, + 'weeklyHours' => $phase->weeklyHours, + 'isDriver' => $phase->isDriver, + 'startDate' => $phase->startDate->format('Y-m-d'), + 'endDate' => $phase->endDate?->format('Y-m-d'), + 'periodIds' => $phase->periodIds, + 'isCurrent' => $phase->isCurrent, + ], + $resolver->resolvePhases($this), + ); + } + private function resolveCurrentContractPeriod(): ?EmployeeContractPeriod { $today = new DateTimeImmutable('today');