feat : agence d'intérim sur les contrats INTERIM + renommage Types d'absence en Types de statut + colonne Absence en Statut
Auto Tag Develop / tag (push) Has been cancelled
Auto Tag Develop / tag (push) Has been cancelled
- Nouvelle entité InterimAgency (table interim_agencies, API lecture seule) - Sélecteur agence conditionnel dans les formulaires création employé et ajout contrat - Affichage "Intérim (NomAgence)" sur la liste employés et l'historique contrat - Date de fin obligatoire côté frontend pour CDD et INTERIM (aligné backend) - Renommage "Types d'absence" → "Types de statut" (sidebar, page, titre) - Renommage en-tête "Absence" → "Statut" sur les vues jour heures et conducteurs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -98,6 +98,9 @@ class Employee
|
||||
#[Groups(['employee:write'])]
|
||||
private ?array $workDaysHoursInput = null;
|
||||
|
||||
#[Groups(['employee:write'])]
|
||||
private ?int $interimAgencyId = null;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->createdAt = new DateTimeImmutable();
|
||||
@@ -295,6 +298,30 @@ class Employee
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getInterimAgencyId(): ?int
|
||||
{
|
||||
return $this->interimAgencyId;
|
||||
}
|
||||
|
||||
public function setInterimAgencyId(?int $interimAgencyId): self
|
||||
{
|
||||
$this->interimAgencyId = $interimAgencyId;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
#[Groups(['employee:read'])]
|
||||
public function getCurrentInterimAgencyId(): ?int
|
||||
{
|
||||
return $this->resolveCurrentContractPeriod()?->getInterimAgency()?->getId();
|
||||
}
|
||||
|
||||
#[Groups(['employee:read'])]
|
||||
public function getCurrentInterimAgencyName(): ?string
|
||||
{
|
||||
return $this->resolveCurrentContractPeriod()?->getInterimAgency()?->getName();
|
||||
}
|
||||
|
||||
#[Groups(['employee:read'])]
|
||||
public function getHasActiveContract(): bool
|
||||
{
|
||||
@@ -393,6 +420,8 @@ class Employee
|
||||
suspensions: $suspensionData,
|
||||
isDriver: $period->getIsDriver(),
|
||||
workDaysHours: $period->getWorkDaysHours(),
|
||||
interimAgencyId: $period->getInterimAgency()?->getId(),
|
||||
interimAgencyName: $period->getInterimAgency()?->getName(),
|
||||
);
|
||||
},
|
||||
$periods
|
||||
|
||||
@@ -55,6 +55,10 @@ class EmployeeContractPeriod
|
||||
#[ORM\Column(type: 'json', nullable: true)]
|
||||
private ?array $workDaysHours = null;
|
||||
|
||||
#[ORM\ManyToOne(targetEntity: InterimAgency::class)]
|
||||
#[ORM\JoinColumn(nullable: true)]
|
||||
private ?InterimAgency $interimAgency = null;
|
||||
|
||||
#[ORM\Column(type: 'text', nullable: true)]
|
||||
private ?string $comment = null;
|
||||
|
||||
@@ -204,6 +208,18 @@ class EmployeeContractPeriod
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getInterimAgency(): ?InterimAgency
|
||||
{
|
||||
return $this->interimAgency;
|
||||
}
|
||||
|
||||
public function setInterimAgency(?InterimAgency $interimAgency): self
|
||||
{
|
||||
$this->interimAgency = $interimAgency;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, ContractSuspension>
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use ApiPlatform\Metadata\ApiResource;
|
||||
use ApiPlatform\Metadata\GetCollection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Component\Serializer\Attribute\Groups;
|
||||
|
||||
#[ApiResource(
|
||||
operations: [
|
||||
new GetCollection(),
|
||||
],
|
||||
normalizationContext: ['groups' => ['interim_agency:read']],
|
||||
paginationEnabled: false,
|
||||
security: "is_granted('ROLE_USER')",
|
||||
order: ['name' => 'ASC'],
|
||||
)]
|
||||
#[ORM\Entity]
|
||||
#[ORM\Table(name: 'interim_agencies')]
|
||||
class InterimAgency
|
||||
{
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column(type: 'integer')]
|
||||
#[Groups(['interim_agency:read', 'employee:read'])]
|
||||
private ?int $id = null;
|
||||
|
||||
#[ORM\Column(type: 'string', length: 150, unique: true)]
|
||||
#[Groups(['interim_agency:read', 'employee:read'])]
|
||||
private string $name = '';
|
||||
|
||||
public function getId(): ?int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function setName(string $name): self
|
||||
{
|
||||
$this->name = $name;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user