This commit is contained in:
@@ -92,6 +92,12 @@ class Employee
|
||||
#[Groups(['employee:write'])]
|
||||
private ?bool $isDriverInput = null;
|
||||
|
||||
/**
|
||||
* @var null|array<int, int> iso-day → minutes, write-only (propagated to EmployeeContractPeriod)
|
||||
*/
|
||||
#[Groups(['employee:write'])]
|
||||
private ?array $workDaysHoursInput = null;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->createdAt = new DateTimeImmutable();
|
||||
@@ -261,6 +267,34 @@ class Employee
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return null|array<int, int>
|
||||
*/
|
||||
public function getWorkDaysHoursInput(): ?array
|
||||
{
|
||||
return $this->workDaysHoursInput;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null|array<int|string, mixed> $workDaysHoursInput
|
||||
*/
|
||||
public function setWorkDaysHoursInput(?array $workDaysHoursInput): self
|
||||
{
|
||||
if (null === $workDaysHoursInput) {
|
||||
$this->workDaysHoursInput = null;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
$normalized = [];
|
||||
foreach ($workDaysHoursInput as $key => $value) {
|
||||
$normalized[(int) $key] = (int) $value;
|
||||
}
|
||||
$this->workDaysHoursInput = $normalized;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
#[Groups(['employee:read'])]
|
||||
public function getHasActiveContract(): bool
|
||||
{
|
||||
@@ -358,6 +392,7 @@ class Employee
|
||||
periodId: $period->getId(),
|
||||
suspensions: $suspensionData,
|
||||
isDriver: $period->getIsDriver(),
|
||||
workDaysHours: $period->getWorkDaysHours(),
|
||||
);
|
||||
},
|
||||
$periods
|
||||
|
||||
@@ -45,6 +45,16 @@ class EmployeeContractPeriod
|
||||
#[ORM\Column(type: 'boolean', options: ['default' => false])]
|
||||
private bool $paidLeaveSettled = false;
|
||||
|
||||
/**
|
||||
* Map ISO weekday (1=Mon..5=Fri) → minutes worked that day.
|
||||
* Required for non-standard TIME contracts (weeklyHours ∉ {35, 39}, non-INTERIM)
|
||||
* so that férié credit and absence credit respect the actual schedule.
|
||||
*
|
||||
* @var null|array<int, int>
|
||||
*/
|
||||
#[ORM\Column(type: 'json', nullable: true)]
|
||||
private ?array $workDaysHours = null;
|
||||
|
||||
#[ORM\Column(type: 'text', nullable: true)]
|
||||
private ?string $comment = null;
|
||||
|
||||
@@ -176,6 +186,24 @@ class EmployeeContractPeriod
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return null|array<int, int>
|
||||
*/
|
||||
public function getWorkDaysHours(): ?array
|
||||
{
|
||||
return $this->workDaysHours;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null|array<int, int> $workDaysHours
|
||||
*/
|
||||
public function setWorkDaysHours(?array $workDaysHours): self
|
||||
{
|
||||
$this->workDaysHours = $workDaysHours;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, ContractSuspension>
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user