''], name: 'contactName')] private string $contactName = ''; #[ORM\Column(type: Types::STRING, length: 20, options: ['default' => ''], name: 'contactPhone')] private string $contactPhone = ''; #[ORM\Column(type: Types::STRING, length: 500, options: ['default' => ''], name: 'contactAddress')] private string $contactAddress = ''; #[ORM\Column(type: Types::STRING, length: 10, options: ['default' => ''], name: 'contactPostalCode')] private string $contactPostalCode = ''; #[ORM\Column(type: Types::STRING, length: 100, options: ['default' => ''], name: 'contactCity')] private string $contactCity = ''; #[ORM\Column(type: Types::DATETIME_IMMUTABLE, name: 'createdAt')] private DateTimeImmutable $createdAt; #[ORM\Column(type: Types::DATETIME_IMMUTABLE, name: 'updatedAt')] private DateTimeImmutable $updatedAt; /** * @var Collection */ #[ORM\OneToMany(targetEntity: Machine::class, mappedBy: 'site', cascade: ['persist', 'remove'], orphanRemoval: true)] private Collection $machines; /** * @var Collection */ #[ORM\OneToMany(targetEntity: Document::class, mappedBy: 'site', cascade: ['remove'], orphanRemoval: true)] private Collection $documents; public function __construct() { $this->machines = new ArrayCollection(); $this->documents = new ArrayCollection(); } #[ORM\PrePersist] public function setCreatedAtValue(): void { $this->createdAt = new DateTimeImmutable(); $this->updatedAt = new DateTimeImmutable(); // Générer un ID CUID-compatible si nécessaire if (null === $this->id) { $this->id = $this->generateCuid(); } } #[ORM\PreUpdate] public function setUpdatedAtValue(): void { $this->updatedAt = new DateTimeImmutable(); } // Getters et Setters public function getId(): ?string { return $this->id; } public function setId(string $id): static { $this->id = $id; return $this; } public function getName(): string { return $this->name; } public function setName(string $name): static { $this->name = $name; return $this; } public function getContactName(): string { return $this->contactName; } public function setContactName(string $contactName): static { $this->contactName = $contactName; return $this; } public function getContactPhone(): string { return $this->contactPhone; } public function setContactPhone(string $contactPhone): static { $this->contactPhone = $contactPhone; return $this; } public function getContactAddress(): string { return $this->contactAddress; } public function setContactAddress(string $contactAddress): static { $this->contactAddress = $contactAddress; return $this; } public function getContactPostalCode(): string { return $this->contactPostalCode; } public function setContactPostalCode(string $contactPostalCode): static { $this->contactPostalCode = $contactPostalCode; return $this; } public function getContactCity(): string { return $this->contactCity; } public function setContactCity(string $contactCity): static { $this->contactCity = $contactCity; return $this; } public function getCreatedAt(): DateTimeImmutable { return $this->createdAt; } public function getUpdatedAt(): DateTimeImmutable { return $this->updatedAt; } /** * @return Collection */ public function getMachines(): Collection { return $this->machines; } public function addMachine(Machine $machine): static { if (!$this->machines->contains($machine)) { $this->machines->add($machine); $machine->setSite($this); } return $this; } public function removeMachine(Machine $machine): static { if ($this->machines->removeElement($machine)) { // set the owning side to null (unless already changed) if ($machine->getSite() === $this) { $machine->setSite(null); } } return $this; } /** * @return Collection */ public function getDocuments(): Collection { return $this->documents; } public function addDocument(Document $document): static { if (!$this->documents->contains($document)) { $this->documents->add($document); $document->setSite($this); } return $this; } public function removeDocument(Document $document): static { if ($this->documents->removeElement($document)) { // set the owning side to null (unless already changed) if ($document->getSite() === $this) { $document->setSite(null); } } return $this; } private function generateCuid(): string { // Génération d'un ID compatible CUID (format: cl + 24 caractères) return 'cl'.bin2hex(random_bytes(12)); } }