<?php
namespace App\Entity;
use App\Repository\SousTraitanceRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: SousTraitanceRepository::class)]
class SousTraitance
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column]
#[Assert\Type(type: 'integer', message: "L'identifiant des actes de sous-traitance doit être un nombre entier.")]
#[Assert\GreaterThanOrEqual(value: 0, message: "L'identifiant des actes de sous-traitance doit être au moins 0.")]
private ?int $identifiant = null;
#[ORM\Column]
#[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(length: 255)]
private ?string $sousTraitantId = null;
#[ORM\Column(length: 255)]
#[Assert\Choice(choices: ['SIRET', 'TVA', 'TAHITI', 'RIDET', 'FRWF', 'IREP', 'HORS UE'], message: 'Choisissez un type d\'identifiant valide pour les titulaires sous traitants.')]
private ?string $typeIdentifiant = null;
#[ORM\Column(type: Types::DATE_MUTABLE)]
#[Assert\NotNull(message: "La date de notification de sous-traitance est obligatoire.")]
private ?\DateTimeInterface $dateNotification = null;
#[ORM\Column(type: Types::DECIMAL, precision: 20, scale: 2)]
private ?string $montant = null;
#[ORM\Column(length: 255)]
#[Assert\Choice(choices: ['Ferme', 'Actualisable', 'Révisable'], message: 'Choisissez une valeur valide pour la variation de prix.')]
private ?string $variationPrix = null;
#[Assert\NotNull(message: "La date de publication des données est obligatoire.")]
#[ORM\Column(type: Types::DATE_MUTABLE)]
private ?\DateTimeInterface $datePublicationDonnees = null;
#[ORM\ManyToOne(inversedBy: 'sousTraitance')]
private ?MarchePublic $marchePublic = null;
#[ORM\Column(length: 1000, nullable: true)]
private ?string $denominationSociale = null;
public function getId(): ?int
{
return $this->id;
}
public function getIdentifiant(): ?int
{
return $this->identifiant;
}
public function setIdentifiant(int $identifiant): static
{
$this->identifiant = $identifiant;
return $this;
}
public function getDureeMois(): ?int
{
return $this->dureeMois;
}
public function setDureeMois(int $dureeMois): static
{
$this->dureeMois = $dureeMois;
return $this;
}
public function getSousTraitantId(): ?string
{
return $this->sousTraitantId;
}
public function setSousTraitantId(string $sousTraitantId): static
{
$this->sousTraitantId = $sousTraitantId;
return $this;
}
public function getTypeIdentifiant(): ?string
{
return $this->typeIdentifiant;
}
public function setTypeIdentifiant(string $typeIdentifiant): static
{
$this->typeIdentifiant = $typeIdentifiant;
return $this;
}
public function getDateNotification(): ?\DateTimeInterface
{
return $this->dateNotification;
}
public function setDateNotification(\DateTimeInterface $dateNotification): static
{
$this->dateNotification = $dateNotification;
return $this;
}
public function getMontant(): ?string
{
return $this->montant;
}
public function setMontant(string $montant): static
{
$this->montant = $montant;
return $this;
}
public function getVariationPrix(): ?string
{
return $this->variationPrix;
}
public function setVariationPrix(string $variationPrix): static
{
$this->variationPrix = $variationPrix;
return $this;
}
public function getDatePublicationDonnees(): ?\DateTimeInterface
{
return $this->datePublicationDonnees;
}
public function setDatePublicationDonnees(\DateTimeInterface $datePublicationDonnees): static
{
$this->datePublicationDonnees = $datePublicationDonnees;
return $this;
}
public function getMarchePublic(): ?MarchePublic
{
return $this->marchePublic;
}
public function setMarchePublic(?MarchePublic $marchePublic): static
{
$this->marchePublic = $marchePublic;
return $this;
}
public function getDenominationSociale(): ?string
{
return $this->denominationSociale;
}
public function setDenominationSociale(?string $denominationSociale): static
{
$this->denominationSociale = $denominationSociale;
return $this;
}
}