src/Entity/MarchePublic.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\MarchePublicRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Symfony\Component\Validator\Constraints as Assert;
  9. #[ORM\Entity(repositoryClassMarchePublicRepository::class)]
  10. class MarchePublic
  11. {
  12.     public const CHOICE_NATURE_MARCHE = ['Marché''Marché de partenariat''Marché de défense ou de sécurité'];
  13.     
  14.     public const CHOICE_TYPE_LIEUX = ['Code postal''Code commune''Code arrondissement''Code canton''Code département''Code région''Code pays'];
  15.     public const CHOICE_TECHNIQUE = ['Accord-cadre''Concours''Système de qualification''Système d’acquisition dynamique''Catalogue électronique''Enchère électronique''Sans objet'];
  16.     public const CHOICE_MODALITE = ['Tranches''Bons de commande''Marchés subséquents''Sans objet'];
  17.     #[ORM\Id]
  18.     #[ORM\GeneratedValue]
  19.     #[ORM\Column]
  20.     private ?int $id null;
  21.     #[ORM\Column(length255)]
  22.     #[Assert\NotNull(message"L'identifiant du marché public doit être renseigné.")]
  23.     #[Assert\Length(
  24.         max16,
  25.         maxMessage"L'identifiant du marché public doit contenir au maximum {{ limit }} caractères."
  26.     )]
  27.     private ?string $marchePublicIdentifiant null;
  28.     #[ORM\Column(length500)]
  29.     #[Assert\NotNull(message"Le champ nom de l'acheteur doit être renseigné.")]
  30.     private ?string $acheteurNom null;
  31.     #[ORM\Column]
  32.     #[Assert\Length(
  33.         exactly14,
  34.         exactMessage'L\'identifiant SIRET doit comporter exactement 14 chiffres.'
  35.     )]
  36.     #[Assert\NotNull(message"Le champ SIRET doit être renseigné.")]
  37.     private ?string $acheteurId null;
  38.     #[ORM\Column(length255)]
  39.     #[Assert\NotNull(message"Le champ Nature du marché doit être renseigné.")]
  40.     #[Assert\Choice(choicesMarchePublic::CHOICE_NATURE_MARCHEmessage'Choisissez une valeur valide pour la nature du marché public')]
  41.     private ?string $nature null;
  42.     #[ORM\Column(length1050)]
  43.     #[Assert\NotNull(message"Le champ Objet doit être renseigné.")]
  44.     #[Assert\Length(
  45.         max1000,
  46.         maxMessage"Le champs Objet est limité à {{ limit }} caractères"
  47.     )]
  48.     private ?string $objet null;
  49.     #[Assert\NotNull(message"Le champ Code CPV doit être renseigné.")]
  50.     #[Assert\Regex(
  51.         pattern'/^(\d{8}|\d{8}-\d{1})$/',
  52.         message"Le format du code CPV doit être de 8 chiffres ou de 8 chiffres suivis d'un tiret et d'un chiffre."
  53.     )]
  54.     #[ORM\Column(length255)]
  55.     private ?string $codeCPV null;
  56.     //s'appelle comme ça car "procedure" est un nom réservé par symfony
  57.     #[Assert\NotNull(message"Le champ Procédure doit être renseigné.")]
  58.     #[ORM\Column(length1000)]
  59.     private ?string $marchePublicProcedure null;
  60.     #[Assert\NotNull(message"Le champ Lieu d'exécution doit être renseigné.")]
  61.     #[ORM\Column(length255)]
  62.     private ?string $lieuExecutionCode null;
  63.     #[ORM\Column(length255)]
  64.     #[Assert\NotNull(message"Le champs Type de lieu d'exécution doit être renseigné.")]
  65.     #[Assert\Choice(choicesMarchePublic::CHOICE_TYPE_LIEUXmessage'Choisissez une valeur valide pour le type de code du lieu d’exécution.')]
  66.     private ?string $lieuExecutionTypeCode null;
  67.     #[ORM\Column(length500)]
  68.     #[Assert\NotNull(message"Le champ nom du lieu d'exécution doit être renseigné.")]
  69.     private ?string $lieuExecutionNom null;
  70.     #[ORM\Column]
  71.     #[Assert\NotNull(message"La durée en mois doit être renseignée.")]
  72.     #[Assert\Type(type'integer'message"La durée doit être un nombre entier.")]
  73.     #[Assert\GreaterThanOrEqual(value1message"La durée doit être d'au moins 1 mois.")]
  74.     private ?int $dureeMois null;
  75.     #[ORM\Column(typeTypes::DATE_MUTABLE)]
  76.     #[Assert\NotNull(message"La date de réception de la notification doit être renseignée.")]
  77.     private ?\DateTimeInterface $dateNotification null;
  78.     #[ORM\Column(typeTypes::DATE_MUTABLE)]
  79.     #[Assert\NotNull(message"La date de publication des données est obligatoire.")]
  80.     private ?\DateTimeInterface $datePublicationDonnees null;
  81.     #[ORM\Column(typeTypes::DECIMALprecision20scale2)]
  82.     #[Assert\NotNull(message"Le montant initial du marché est obligatoire.")]
  83.     #[Assert\Type(type'numeric'message"Le montant doit être un nombre décimal.")]
  84.     private ?string $montant null;
  85.     #[ORM\Column]
  86.     #[Assert\NotNull(message"Le champ technique d'achat doit être renseigné.")]
  87.     #[Assert\Choice(choicesMarchePublic::CHOICE_TECHNIQUEmultipletruemessage"Choisissez une ou plusieurs valeurs valides pour le champ technique.")]
  88.     private ?array $technique = [];
  89.     #[Assert\Choice(choicesMarchePublic::CHOICE_MODALITEmultipletruemessage"Choisissez une ou plusieurs valeurs valides pour le champ modalité d'exécution.")]
  90.     #[Assert\NotNull(message"Le champ Modalités d'exécution doit être renseigné.")]
  91.     #[ORM\Column]
  92.     private ?array $modaliteExecution = [];
  93.     #[ORM\Column(length255nullabletrue)]
  94.     private ?string $idAccordCadre null;
  95.     #[ORM\Column(length255)]
  96.     #[Assert\NotNull(message"Le champ type de prix doit être renseigné.")]
  97.     #[Assert\Choice(choices: ['Définitif ferme''Définitif actualisable''Définitif révisable''Provisoire'], multipletruemessage"Choisissez un ou plusieurs types de prix valides.")]
  98.     private array $typePrix = [];
  99.     #[ORM\Column]
  100.     #[Assert\Type(type'bool'message"La valeur doit être un booléen (oui ou non).")]
  101.     private ?bool $marcheInnovant null;
  102.     #[ORM\Column(length255)]
  103.     #[Assert\NotNull(message"Le champ CCAG doit être renseigné.")]
  104.     #[Assert\Choice(choices: ['Travaux''Maitrise d’œuvre''Fournitures courantes et services''Marchés industriels''Prestations intellectuelles''Techniques de l’information et de la communication''Pas de CCAG'], message'Choisissez une valeur valide pour le CCAG.')]
  105.     private ?string $ccag null;
  106.     #[ORM\Column]
  107.     #[Assert\NotNull(message"Le nombre d'offres reçues doit être renseigné.")]
  108.     #[Assert\Type(type'integer'message"Le nombre d'offres reçues doit être un nombre entier.")]
  109.     #[Assert\GreaterThanOrEqual(value1message"Le nombre d'offres reçues doit être au moins 1.")]
  110.     private ?int $offresRecues null;
  111.     #[ORM\Column]
  112.     #[Assert\Type(type'bool'message"La valeur doit être un booléen (oui ou non).")]
  113.     private ?bool $attributionAvance null;
  114.     #[ORM\Column(typeTypes::DECIMALprecision20scale2nullabletrue)]
  115.     #[Assert\Type(type'numeric'message"Le taux d'avance doit être un nombre décimal.")]
  116.     #[Assert\Range(notInRangeMessage"Le taux d'avance dot être compris entre 0 et 100."min0max100)]
  117.     private ?string $tauxAvance null;
  118.     #[ORM\Column(length255nullabletrue)]
  119.     #[Assert\Choice(choices: ['Conjoint''Solidaire''Pas de groupement'], message'Choisissez un type de groupement valide pour les opérateurs.')]
  120.     private ?string $typeGroupementOperateurs null;
  121.     #[ORM\Column(typeTypes::DECIMALprecision20scale2/* , nullable: true */)]
  122.     /* #[Assert\NotNull(message: "Le champ Origine UE doit être renseigné.")] */
  123.     #[Assert\Type(type'numeric'message"La valeur doit être un nombre décimal.")]
  124.     #[Assert\Range(notInRangeMessage"Le pourcentage des produits d'origine UE dot être compris entre 0 et 100."min0max100)]
  125.     private ?string $origineUe null;
  126.     #[ORM\Column(typeTypes::DECIMALprecision20scale2/* , nullable: true */)]
  127.     /* #[Assert\NotNull(message: "Le champ Origine France doit être renseigné.")] */
  128.     #[Assert\Type(type'numeric'message"La valeur doit être un nombre décimal.")]
  129.     #[Assert\Range(notInRangeMessage"Le pourcentage des produits d'origine UE dot être compris entre 0 et 100."min0max100)]
  130.     private ?string $origineFrance null;
  131.     #[ORM\Column]
  132.     #[Assert\Type(type'bool'message"La valeur doit être un booléen (oui ou non).")]
  133.     private ?bool $sousTraitanceDeclaree null;
  134.     #[ORM\Column]
  135.     #[Assert\Choice(choices: ['Clause sociale''Critère social''Marché réservé''Pas de considération sociale'], multipletruemessage"Choisissez une ou plusieurs valeurs valides pour les considérations sociales.")]
  136.     #[Assert\NotNull(message"Le champ Considérations sociales doit être renseigné.")]
  137.     private array $considerationsSociales = [];
  138.     #[ORM\Column]
  139.     #[Assert\NotNull(message"Le champ considérations environnementale doit être renseigné.")]
  140.     #[Assert\Choice(choices: ['Clause environnementale''Critère environnemental''Pas de considération environnementale'], multipletruemessage"Choisissez une ou plusieurs valeurs valides pour les considérations environnementales.")]
  141.     private array $considerationsEnvironnementales = [];
  142.     #[ORM\Column(length255)]
  143.     #[Assert\NotNull(message"Le champ forme du prix doit être renseigné.")]
  144.     #[Assert\Choice(choices: ['Unitaire''Forfaitaire''Mixte'], message'Choisissez une valeur valide pour la forme du prix.')]
  145.     private ?string $formePrix null;
  146.     #[ORM\OneToMany(mappedBy'marchePublic'targetEntitySousTraitance::class, cascade: ['persist'])]
  147.     private Collection $sousTraitance;
  148.     #[ORM\OneToMany(mappedBy'marchePublic'targetEntityModification::class, cascade: ['persist'])]
  149.     private Collection $modification;
  150.     #[ORM\OneToMany(mappedBy'marchePublic'targetEntityModificationActeSousTraitance::class, cascade: ['persist'])]
  151.     private Collection $modificationActeSousTraitance;
  152.     #[ORM\OneToMany(mappedBy'marchePublic'targetEntityTitulaire::class, cascade: ['persist'])]
  153.     private Collection $titulaire;
  154.     #[ORM\Column(typeTypes::DATE_MUTABLE)]
  155.     private ?\DateTimeInterface $dateMade null;
  156.     #[ORM\ManyToOne(inversedBy'marchePublics')]
  157.     private ?User $user null;
  158.     #[ORM\Column(length255nullabletrue)]
  159.     private ?string $apiId null;
  160.     public function __construct()
  161.     {
  162.         $this->sousTraitance = new ArrayCollection();
  163.         $this->modification = new ArrayCollection();
  164.         $this->modificationActeSousTraitance = new ArrayCollection();
  165.         $this->titulaire = new ArrayCollection();
  166.     }
  167.     public function getId(): ?int
  168.     {
  169.         return $this->id;
  170.     }
  171.     public function getMarchePublicIdentifiant(): ?string
  172.     {
  173.         return $this->marchePublicIdentifiant;
  174.     }
  175.     public function setMarchePublicIdentifiant(string $marchePublicIdentifiant): static
  176.     {
  177.         $this->marchePublicIdentifiant $marchePublicIdentifiant;
  178.         return $this;
  179.     }
  180.     public function getAcheteurNom(): ?string
  181.     {
  182.         return $this->acheteurNom;
  183.     }
  184.     public function setAcheteurNom(string $acheteurNom): static
  185.     {
  186.         $this->acheteurNom $acheteurNom;
  187.         return $this;
  188.     }
  189.     public function getAcheteurId(): ?string
  190.     {
  191.         return $this->acheteurId;
  192.     }
  193.     public function setAcheteurId(string $acheteurId): static
  194.     {
  195.         $this->acheteurId $acheteurId;
  196.         return $this;
  197.     }
  198.     public function getNature(): ?string
  199.     {
  200.         return $this->nature;
  201.     }
  202.     public function setNature(string $nature): static
  203.     {
  204.         $this->nature $nature;
  205.         return $this;
  206.     }
  207.     public function getObjet(): ?string
  208.     {
  209.         return $this->objet;
  210.     }
  211.     public function setObjet(string $objet): static
  212.     {
  213.         $this->objet $objet;
  214.         return $this;
  215.     }
  216.     public function getCodeCPV(): ?string
  217.     {
  218.         return $this->codeCPV;
  219.     }
  220.     public function setCodeCPV(string $codeCPV): static
  221.     {
  222.         $this->codeCPV $codeCPV;
  223.         return $this;
  224.     }
  225.     public function getMarchePublicProcedure(): ?string
  226.     {
  227.         return $this->marchePublicProcedure;
  228.     }
  229.     public function setMarchePublicProcedure(string $marchePublicProcedure): static
  230.     {
  231.         $this->marchePublicProcedure $marchePublicProcedure;
  232.         return $this;
  233.     }
  234.     public function getLieuExecutionCode(): ?string
  235.     {
  236.         return $this->lieuExecutionCode;
  237.     }
  238.     public function setLieuExecutionCode(string $lieuExecutionCode): static
  239.     {
  240.         $this->lieuExecutionCode $lieuExecutionCode;
  241.         return $this;
  242.     }
  243.     public function getLieuExecutionTypeCode(): ?string
  244.     {
  245.         return $this->lieuExecutionTypeCode;
  246.     }
  247.     public function setLieuExecutionTypeCode(string $lieuExecutionTypeCode): static
  248.     {
  249.         $this->lieuExecutionTypeCode $lieuExecutionTypeCode;
  250.         return $this;
  251.     }
  252.     public function getLieuExecutionNom(): ?string
  253.     {
  254.         return $this->lieuExecutionNom;
  255.     }
  256.     public function setLieuExecutionNom(string $lieuExecutionNom): static
  257.     {
  258.         $this->lieuExecutionNom $lieuExecutionNom;
  259.         return $this;
  260.     }
  261.     public function getDureeMois(): ?int
  262.     {
  263.         return $this->dureeMois;
  264.     }
  265.     public function setDureeMois(int $dureeMois): static
  266.     {
  267.         $this->dureeMois $dureeMois;
  268.         return $this;
  269.     }
  270.     public function getDateNotification(): ?\DateTimeInterface
  271.     {
  272.         return $this->dateNotification;
  273.     }
  274.     public function setDateNotification(\DateTimeInterface $dateNotification): static
  275.     {
  276.         $this->dateNotification $dateNotification;
  277.         return $this;
  278.     }
  279.     public function getDatePublicationDonnees(): ?\DateTimeInterface
  280.     {
  281.         return $this->datePublicationDonnees;
  282.     }
  283.     public function setDatePublicationDonnees(\DateTimeInterface $datePublicationDonnees): static
  284.     {
  285.         $this->datePublicationDonnees $datePublicationDonnees;
  286.         return $this;
  287.     }
  288.     public function getMontant(): ?string
  289.     {
  290.         return $this->montant;
  291.     }
  292.     public function setMontant(string $montant): static
  293.     {
  294.         $this->montant $montant;
  295.         return $this;
  296.     }
  297.     public function getTechnique(): array
  298.     {
  299.         return $this->technique;
  300.     }
  301.     public function setTechnique(array $technique): static
  302.     {
  303.         $this->technique $technique;
  304.         return $this;
  305.     }
  306.     public function getModaliteExecution(): ?array
  307.     {
  308.         return $this->modaliteExecution;
  309.     }
  310.     public function setModaliteExecution(array $modaliteExecution): static
  311.     {
  312.         $this->modaliteExecution $modaliteExecution;
  313.         return $this;
  314.     }
  315.     public function getIdAccordCadre(): ?string
  316.     {
  317.         return $this->idAccordCadre;
  318.     }
  319.     public function setIdAccordCadre(?string $idAccordCadre): static
  320.     {
  321.         $this->idAccordCadre $idAccordCadre;
  322.         return $this;
  323.     }
  324.     public function getTypePrix(): array
  325.     {
  326.         return $this->typePrix;
  327.     }
  328.     public function setTypePrix(array $typePrix): static
  329.     {
  330.         $this->typePrix $typePrix;
  331.         return $this;
  332.     }
  333.     public function isMarcheInnovant(): ?bool
  334.     {
  335.         return $this->marcheInnovant;
  336.     }
  337.     public function setMarcheInnovant(bool $marcheInnovant): static
  338.     {
  339.         $this->marcheInnovant $marcheInnovant;
  340.         return $this;
  341.     }
  342.     public function getCcag(): ?string
  343.     {
  344.         return $this->ccag;
  345.     }
  346.     public function setCcag(string $ccag): static
  347.     {
  348.         $this->ccag $ccag;
  349.         return $this;
  350.     }
  351.     public function getOffresRecues(): ?int
  352.     {
  353.         return $this->offresRecues;
  354.     }
  355.     public function setOffresRecues(int $offresRecues): static
  356.     {
  357.         $this->offresRecues $offresRecues;
  358.         return $this;
  359.     }
  360.     public function isAttributionAvance(): ?bool
  361.     {
  362.         return $this->attributionAvance;
  363.     }
  364.     public function setAttributionAvance(bool $attributionAvance): static
  365.     {
  366.         $this->attributionAvance $attributionAvance;
  367.         return $this;
  368.     }
  369.     public function getTauxAvance(): ?string
  370.     {
  371.         return $this->tauxAvance;
  372.     }
  373.     public function setTauxAvance(?string $tauxAvance): static
  374.     {
  375.         $this->tauxAvance $tauxAvance;
  376.         return $this;
  377.     }
  378.     public function getTypeGroupementOperateurs(): ?string
  379.     {
  380.         return $this->typeGroupementOperateurs;
  381.     }
  382.     public function setTypeGroupementOperateurs(string $typeGroupementOperateurs): static
  383.     {
  384.         $this->typeGroupementOperateurs $typeGroupementOperateurs;
  385.         return $this;
  386.     }
  387.     public function getOrigineUe(): ?string
  388.     {
  389.         return $this->origineUe;
  390.     }
  391.     public function setOrigineUe(?string $origineUe): static
  392.     {
  393.         $this->origineUe $origineUe;
  394.         return $this;
  395.     }
  396.     public function getOrigineFrance(): ?string
  397.     {
  398.         return $this->origineFrance;
  399.     }
  400.     public function setOrigineFrance(?string $origineFrance): static
  401.     {
  402.         $this->origineFrance $origineFrance;
  403.         return $this;
  404.     }
  405.     public function isSousTraitanceDeclaree(): ?bool
  406.     {
  407.         return $this->sousTraitanceDeclaree;
  408.     }
  409.     public function setSousTraitanceDeclaree(bool $sousTraitanceDeclaree): static
  410.     {
  411.         $this->sousTraitanceDeclaree $sousTraitanceDeclaree;
  412.         return $this;
  413.     }
  414.     public function getConsiderationsSociales(): array
  415.     {
  416.         return $this->considerationsSociales;
  417.     }
  418.     public function setConsiderationsSociales(array $considerationsSociales): static
  419.     {
  420.         $this->considerationsSociales $considerationsSociales;
  421.         return $this;
  422.     }
  423.     public function getConsiderationsEnvironnementales(): array
  424.     {
  425.         return $this->considerationsEnvironnementales;
  426.     }
  427.     public function setConsiderationsEnvironnementales(array $considerationsEnvironnementales): static
  428.     {
  429.         $this->considerationsEnvironnementales $considerationsEnvironnementales;
  430.         return $this;
  431.     }
  432.     public function getFormePrix(): ?string
  433.     {
  434.         return $this->formePrix;
  435.     }
  436.     public function setFormePrix(string $formePrix): static
  437.     {
  438.         $this->formePrix $formePrix;
  439.         return $this;
  440.     }
  441.     /**
  442.      * @return Collection<int, SousTraitance>
  443.      */
  444.     public function getSousTraitance(): Collection
  445.     {
  446.         return $this->sousTraitance;
  447.     }
  448.     public function addSousTraitance(SousTraitance $sousTraitance): static
  449.     {
  450.         if (!$this->sousTraitance->contains($sousTraitance)) {
  451.             $this->sousTraitance->add($sousTraitance);
  452.             $sousTraitance->setMarchePublic($this);
  453.         }
  454.         return $this;
  455.     }
  456.     public function removeSousTraitance(SousTraitance $sousTraitance): static
  457.     {
  458.         if ($this->sousTraitance->removeElement($sousTraitance)) {
  459.             // set the owning side to null (unless already changed)
  460.             if ($sousTraitance->getMarchePublic() === $this) {
  461.                 $sousTraitance->setMarchePublic(null);
  462.             }
  463.         }
  464.         return $this;
  465.     }
  466.     /**
  467.      * @return Collection<int, Modification>
  468.      */
  469.     public function getModification(): Collection
  470.     {
  471.         return $this->modification;
  472.     }
  473.     public function addModification(Modification $modification): static
  474.     {
  475.         if (!$this->modification->contains($modification)) {
  476.             $this->modification->add($modification);
  477.             $modification->setMarchePublic($this);
  478.         }
  479.         return $this;
  480.     }
  481.     public function removeModification(Modification $modification): static
  482.     {
  483.         if ($this->modification->removeElement($modification)) {
  484.             // set the owning side to null (unless already changed)
  485.             if ($modification->getMarchePublic() === $this) {
  486.                 $modification->setMarchePublic(null);
  487.             }
  488.         }
  489.         return $this;
  490.     }
  491.     /**
  492.      * @return Collection<int, ModificationActeSousTraitance>
  493.      */
  494.     public function getModificationActeSousTraitance(): Collection
  495.     {
  496.         return $this->modificationActeSousTraitance;
  497.     }
  498.     public function addModificationActeSousTraitance(ModificationActeSousTraitance $modificationActeSousTraitance): static
  499.     {
  500.         if (!$this->modificationActeSousTraitance->contains($modificationActeSousTraitance)) {
  501.             $this->modificationActeSousTraitance->add($modificationActeSousTraitance);
  502.             $modificationActeSousTraitance->setMarchePublic($this);
  503.         }
  504.         return $this;
  505.     }
  506.     public function removeModificationActeSousTraitance(ModificationActeSousTraitance $modificationActeSousTraitance): static
  507.     {
  508.         if ($this->modificationActeSousTraitance->removeElement($modificationActeSousTraitance)) {
  509.             // set the owning side to null (unless already changed)
  510.             if ($modificationActeSousTraitance->getMarchePublic() === $this) {
  511.                 $modificationActeSousTraitance->setMarchePublic(null);
  512.             }
  513.         }
  514.         return $this;
  515.     }
  516.     /**
  517.      * @return Collection<int, Titulaire>
  518.      */
  519.     public function getTitulaire(): Collection
  520.     {
  521.         return $this->titulaire;
  522.     }
  523.     public function addTitulaire(Titulaire $titulaire): static
  524.     {
  525.         if (!$this->titulaire->contains($titulaire)) {
  526.             $this->titulaire->add($titulaire);
  527.             $titulaire->setMarchePublic($this);
  528.         }
  529.         return $this;
  530.     }
  531.     public function removeTitulaire(Titulaire $titulaire): static
  532.     {
  533.         if ($this->titulaire->removeElement($titulaire)) {
  534.             // set the owning side to null (unless already changed)
  535.             if ($titulaire->getMarchePublic() === $this) {
  536.                 $titulaire->setMarchePublic(null);
  537.             }
  538.         }
  539.         return $this;
  540.     }
  541.     public function getDateMade(): ?\DateTimeInterface
  542.     {
  543.         return $this->dateMade;
  544.     }
  545.     public function setDateMade(\DateTimeInterface $dateMade): static
  546.     {
  547.         $this->dateMade $dateMade;
  548.         return $this;
  549.     }
  550.     public function getUser(): ?User
  551.     {
  552.         return $this->user;
  553.     }
  554.     public function setUser(?User $user): static
  555.     {
  556.         $this->user $user;
  557.         return $this;
  558.     }
  559.     public function getApiId(): ?string
  560.     {
  561.         return $this->apiId;
  562.     }
  563.     public function setApiId(?string $apiId): static
  564.     {
  565.         $this->apiId $apiId;
  566.         return $this;
  567.     }
  568. }