fix(contracts) : hide contract phases entirely before RTT_START_DATE
EmployeeContractPhaseResolver now accepts the data-start date and filters out phases whose endDate is strictly before it. No work-hour or absence data exists before the application launch date, so legacy contract periods that ended before that date would surface meaningless RTT/CP figures in the phase picker. For employees who joined long before the software (typical legacy 35h contracts, in production since 2014), only the current phase remains visible — which also collapses the picker (threshold ≥ 2 phases). The Employee entity reads RTT_START_DATE from $_SERVER/$_ENV directly since it has no DI. The resolver service is wired via services.yaml. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -446,7 +446,10 @@ class Employee
|
||||
#[Groups(['employee:read'])]
|
||||
public function getContractPhases(): array
|
||||
{
|
||||
$resolver = new EmployeeContractPhaseResolver();
|
||||
// Read RTT_START_DATE directly here: the entity has no DI but must filter
|
||||
// out contract phases that ended before the application's data start.
|
||||
$rawDate = $_SERVER['RTT_START_DATE'] ?? $_ENV['RTT_START_DATE'] ?? '';
|
||||
$resolver = new EmployeeContractPhaseResolver(is_string($rawDate) ? $rawDate : '');
|
||||
|
||||
return array_map(
|
||||
static fn (ContractPhase $phase): array => [
|
||||
|
||||
Reference in New Issue
Block a user