security->getUser(); if (!$user instanceof User) { throw new AccessDeniedHttpException('Authentication required.'); } if (!in_array('ROLE_ADMIN', $user->getRoles(), true)) { throw new AccessDeniedHttpException('Only admins can bulk validate work hours.'); } $result = $this->executor->execute( user: $user, workDateValue: $data->workDate, employeeIds: $data->employeeIds, shouldSkip: static fn (WorkHour $workHour): bool => $workHour->isValid() === $data->isValid, applyUpdate: static function (WorkHour $workHour) use ($data): void { $workHour->setIsValid($data->isValid); } ); if ($result->updated > 0) { $workDate = DateTimeImmutable::createFromFormat('Y-m-d', $data->workDate); $action = $data->isValid ? 'validé' : 'dévalidé'; $this->auditLogger->log( null, 'validate', 'work_hour', null, sprintf('Validation RH %s pour %d employé(s) le %s', $action, $result->updated, $data->workDate), ['employeeIds' => $data->employeeIds, 'isValid' => $data->isValid], $workDate ?: null, ); } return $result; } }