diff --git a/src/Repository/WorkHourRepository.php b/src/Repository/WorkHourRepository.php index 8bc4c5d..68f7c7e 100644 --- a/src/Repository/WorkHourRepository.php +++ b/src/Repository/WorkHourRepository.php @@ -230,26 +230,36 @@ final class WorkHourRepository extends ServiceEntityRepository implements WorkHo public function isWeekFullyValidated(Employee $employee, DateTimeImmutable $from, DateTimeImmutable $to): bool { - // At least one validated day must exist - $validatedCount = (int) $this->createQueryBuilder('w') + // Count weekdays (Mon-Fri) in range + $expectedWeekdays = 0; + for ($d = $from; $d <= $to; $d = $d->modify('+1 day')) { + if ((int) $d->format('N') <= 5) { + ++$expectedWeekdays; + } + } + + if (0 === $expectedWeekdays) { + return false; + } + + // Every weekday must have a work_hour row + $totalCount = (int) $this->createQueryBuilder('w') ->select('COUNT(w.id)') ->andWhere('w.employee = :employee') ->andWhere('w.workDate >= :from') ->andWhere('w.workDate <= :to') - ->andWhere('w.isValid = :isValid') ->setParameter('employee', $employee) ->setParameter('from', $from) ->setParameter('to', $to) - ->setParameter('isValid', true) ->getQuery() ->getSingleScalarResult() ; - if (0 === $validatedCount) { + if ($totalCount < $expectedWeekdays) { return false; } - // No non-validated day must exist in the range + // All rows must be validated $nonValidatedCount = (int) $this->createQueryBuilder('w') ->select('COUNT(w.id)') ->andWhere('w.employee = :employee') diff --git a/src/State/EmployeeRttSummaryProvider.php b/src/State/EmployeeRttSummaryProvider.php index 1bfed8d..9ff5d09 100644 --- a/src/State/EmployeeRttSummaryProvider.php +++ b/src/State/EmployeeRttSummaryProvider.php @@ -267,6 +267,6 @@ final readonly class EmployeeRttSummaryProvider implements ProviderInterface } } - return $weekEnd; + return $today; } }