employeeRepository->find($employeeId); if (!$employee instanceof Employee) { throw new NotFoundHttpException('Employee not found.'); } $request = $this->requestStack->getCurrentRequest(); $year = (int) $request?->query->get('year', (string) (int) new DateTimeImmutable('now')->format('Y')); if ($year < 2000 || $year > 2100) { throw new UnprocessableEntityHttpException('year must be between 2000 and 2100.'); } // Année civile Y = exercice Y (mois 1-5) + exercice Y+1 (mois 6-12). $payments = array_merge( $this->rttPaymentRepository->findByEmployeeAndYear($employee, $year), $this->rttPaymentRepository->findByEmployeeAndYear($employee, $year + 1), ); $output = new EmployeeOvertimeContingent(); $output->year = $year; $output->paidMinutes = $this->calculator->totalBaseMinutes($payments, $year) + $this->structuralCalculator->totalStructuralMinutes($employee, $year); $output->isDriver = $employee->getIsDriver(); $output->capHours = $this->calculator->capHours($output->isDriver); return $output; } }