<?php
namespace App\Entity;
use App\Repository\ModificationRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: ModificationRepository::class)]
class Modification
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $objetModification = null;
#[ORM\Column(nullable: true)]
#[Assert\Type(type: 'integer', message: "La durée doit être un nombre entier.")]
#[Assert\GreaterThanOrEqual(value: 1, message: "La durée doit être d'au moins 1 mois.")]
private ?int $dureeMois = null;
#[ORM\Column(type: Types::DECIMAL, precision: 20, scale: 2, nullable: true)]
#[Assert\Type(type: 'numeric', message: "Le montant des modifications doit être un nombre décimal.")]
private ?string $montant = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
#[Assert\Date]
private ?\DateTimeInterface $dateNotificationModification = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
#[Assert\Date]
private ?\DateTimeInterface $datePublicationDonneesModification = null;
#[ORM\ManyToOne(inversedBy: 'modification')]
#[ORM\JoinColumn(name: "marche_public_id", referencedColumnName: "id", nullable: true)]
private ?MarchePublic $marchePublic = null;
#[ORM\OneToMany(mappedBy: 'modification', targetEntity: Titulaire::class, cascade: ['persist'])]
private Collection $titulaire;
public function __construct()
{
$this->titulaire = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getObjetModification(): ?string
{
return $this->objetModification;
}
public function setObjetModification(?string $objetModification): static
{
$this->objetModification = $objetModification;
return $this;
}
public function getDureeMois(): ?int
{
return $this->dureeMois;
}
public function setDureeMois(?int $dureeMois): static
{
$this->dureeMois = $dureeMois;
return $this;
}
public function getMontant(): ?string
{
return $this->montant;
}
public function setMontant(?string $montant): static
{
$this->montant = $montant;
return $this;
}
public function getDateNotificationModification(): ?\DateTimeInterface
{
return $this->dateNotificationModification;
}
public function setDateNotificationModification(?\DateTimeInterface $dateNotificationModification): static
{
$this->dateNotificationModification = $dateNotificationModification;
return $this;
}
public function getDatePublicationDonneesModification(): ?\DateTimeInterface
{
return $this->datePublicationDonneesModification;
}
public function setDatePublicationDonneesModification(?\DateTimeInterface $datePublicationDonneesModification): static
{
$this->datePublicationDonneesModification = $datePublicationDonneesModification;
return $this;
}
public function getMarchePublic(): ?MarchePublic
{
return $this->marchePublic;
}
public function setMarchePublic(?MarchePublic $marchePublic): static
{
$this->marchePublic = $marchePublic;
return $this;
}
/**
* @return Collection<int, Titulaire>
*/
public function getTitulaire(): Collection
{
return $this->titulaire;
}
public function addTitulaire(Titulaire $titulaire): static
{
if (!$this->titulaire->contains($titulaire)) {
$this->titulaire->add($titulaire);
$titulaire->setModification($this);
}
return $this;
}
public function removeTitulaire(Titulaire $titulaire): static
{
if ($this->titulaire->removeElement($titulaire)) {
// set the owning side to null (unless already changed)
if ($titulaire->getModification() === $this) {
$titulaire->setModification(null);
}
}
return $this;
}
}