File.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity\Core;
  4. use ApiPlatform\Metadata\ApiResource;
  5. use ApiPlatform\Metadata\Delete;
  6. use ApiPlatform\Metadata\Get;
  7. use ApiPlatform\Metadata\Patch;
  8. use ApiPlatform\Metadata\Post;
  9. use ApiPlatform\Metadata\Put;
  10. use App\Entity\AccessWish\DocumentWish;
  11. use App\Entity\Billing\SddRegie;
  12. use App\Entity\Booking\CalendarSynchro;
  13. use App\Entity\Booking\Event;
  14. use App\Entity\Booking\EventReport;
  15. use App\Entity\Booking\Work;
  16. use App\Entity\Message\TemplateSystem;
  17. use App\Entity\Network\Network;
  18. use App\Entity\Organization\Activity;
  19. use App\Entity\Organization\OnlineRegistrationSettings;
  20. use App\Entity\Organization\Organization;
  21. use App\Entity\Organization\Parameters;
  22. use App\Entity\Person\Person;
  23. use App\Enum\Core\FileHostEnum;
  24. use App\Enum\Core\FileStatusEnum;
  25. use App\Enum\Core\FileTypeEnum;
  26. use App\Enum\Core\FileVisibilityEnum;
  27. // use DH\Auditor\Provider\Doctrine\Auditing\Annotation\Auditable;
  28. use App\Repository\Core\FileRepository;
  29. use App\State\Processor\Core\FileProcessor;
  30. use Doctrine\Common\Collections\ArrayCollection;
  31. use Doctrine\Common\Collections\Collection;
  32. use Doctrine\ORM\Mapping as ORM;
  33. use JetBrains\PhpStorm\Pure;
  34. use Symfony\Component\Serializer\Annotation\Groups;
  35. /**
  36. * Fichier, généré ou uploadé, appartenant à une organisation ou à une personne.
  37. *
  38. * Security :
  39. *
  40. * * @see App\Security\Voter\FileVoter
  41. */
  42. #[ApiResource(
  43. operations: [
  44. new Get(security: "is_granted('READ', object)"),
  45. new Put(security: "is_granted('EDIT', object)"),
  46. new Patch(security: "is_granted('EDIT', object)"),
  47. new Post(security: "is_granted('CREATE', object)"),
  48. new Delete(security: "is_granted('DELETE', object)"),
  49. ],
  50. processor: FileProcessor::class
  51. )]
  52. // #[Auditable]
  53. #[ORM\Entity(repositoryClass: FileRepository::class)]
  54. class File
  55. {
  56. #[ORM\Id]
  57. #[ORM\Column]
  58. #[ORM\GeneratedValue]
  59. private ?int $id = null;
  60. /**
  61. * Propriétaire du fichier.
  62. */
  63. #[ORM\ManyToOne(inversedBy: 'files')]
  64. #[ORM\JoinColumn(name: 'person_id', referencedColumnName: 'id')]
  65. private ?Person $person;
  66. /**
  67. * Organisation propriétaire du fichier.
  68. */
  69. #[ORM\ManyToOne(inversedBy: 'files')]
  70. #[ORM\JoinColumn(name: 'organization_id', referencedColumnName: 'id')]
  71. private ?Organization $organization;
  72. /**
  73. * Slug du fichier (i.e. le chemin d'accès relatif).
  74. */
  75. #[ORM\Column(length: 255, nullable: true)]
  76. private ?string $slug;
  77. /**
  78. * Chemin d'accès du fichier.
  79. */
  80. #[ORM\Column(length: 255, nullable: true)]
  81. private ?string $path;
  82. /**
  83. * Nom du fichier.
  84. */
  85. #[ORM\Column(length: 255)]
  86. private string $name;
  87. /**
  88. * Mimetype du fichier.
  89. */
  90. #[ORM\Column(length: 255, nullable: true)]
  91. private ?string $mimeType = null;
  92. /**
  93. * Visibilité du fichier (tout le monde, personne, l'organisation seulement...).
  94. */
  95. #[ORM\Column(length: 24, enumType: FileVisibilityEnum::class, options: ['default' => FileVisibilityEnum::NOBODY])]
  96. private FileVisibilityEnum $visibility = FileVisibilityEnum::NOBODY;
  97. /**
  98. * Configuration particulière associée au fichier (exemple: image recadrée).
  99. */
  100. #[ORM\Column(type: 'text', length: 255, nullable: true)]
  101. private ?string $config;
  102. /**
  103. * Type de document (uploaded, mail, bill...etc).
  104. */
  105. #[ORM\Column(length: 50, enumType: FileTypeEnum::class, options: ['default' => FileTypeEnum::NONE])]
  106. private FileTypeEnum $type = FileTypeEnum::NONE;
  107. /**
  108. * Taille du document en octets.
  109. */
  110. #[ORM\Column(nullable: true)]
  111. private ?int $size;
  112. /**
  113. * Un fichier est temporaire par exemple s'il a été généré et est stocké pour être téléchargé dans la foulée
  114. * Les fichiers temporaires peuvent être supprimés sans risque, à l'inverse des fichiers uploadés par les
  115. * utilisateurs par exemple.
  116. */
  117. #[ORM\Column(options: ['default' => false])]
  118. private bool $isTemporaryFile = false;
  119. /**
  120. * Date de création du fichier.
  121. */
  122. #[ORM\Column]
  123. private \DateTime $createDate;
  124. /**
  125. * Id de l'access ayant créé ce fichier.
  126. */
  127. #[ORM\Column(nullable: true, options: ['default' => null])]
  128. private ?int $createdBy = null;
  129. /**
  130. * Date de dernière mise à jour du fichier.
  131. */
  132. #[ORM\Column(nullable: true, options: ['default' => null])]
  133. private ?\DateTime $updateDate = null;
  134. /**
  135. * Id de l'access ayant mis à jour ce fichier le dernier.
  136. */
  137. #[ORM\Column(nullable: true, options: ['default' => null])]
  138. private ?int $updatedBy = null;
  139. /**
  140. * Statut du fichier (en cours de génération, prêt, supprimé, etc.).
  141. */
  142. #[ORM\Column(length: 50, enumType: FileStatusEnum::class)]
  143. private FileStatusEnum $status;
  144. /**
  145. * Serveur sur lequel le fichier est physiquement stocké.
  146. */
  147. #[ORM\Column(length: 5, enumType: FileHostEnum::class, options: ['default' => FileHostEnum::AP2I])]
  148. private FileHostEnum $host = FileHostEnum::AP2I;
  149. // #[ORM\Column]
  150. // private ?int $eventReport_id;
  151. /**
  152. * TODO: complete.
  153. */
  154. #[ORM\Column(nullable: true, options: ['default' => null])]
  155. private ?\DateTime $availabilityDate = null;
  156. // #[ORM\Column]
  157. // private ?int $documentWish_id;
  158. //
  159. // #[ORM\Column]
  160. // private ?int $onlineRegistrationSetting_id;
  161. //
  162. // #[ORM\Column]
  163. // private ?int $templateSystem_id;
  164. //
  165. // #[ORM\Column]
  166. // private ?int $work_id;
  167. /** @var Collection<int, Person> */
  168. #[ORM\ManyToMany(targetEntity: Person::class, inversedBy: 'personFiles')]
  169. #[Groups(['file_person'])]
  170. private Collection $accessPersons;
  171. /** @var Collection<int, Person> */
  172. #[ORM\OneToMany(targetEntity: Person::class, mappedBy: 'image', orphanRemoval: true)]
  173. private Collection $personImages;
  174. /** @var Collection<int, Organization> */
  175. #[ORM\OneToMany(targetEntity: Organization::class, mappedBy: 'logo', orphanRemoval: true)]
  176. private Collection $organizationLogos;
  177. /** @var Collection<int, Organization> */
  178. #[ORM\OneToMany(targetEntity: Organization::class, mappedBy: 'image', orphanRemoval: true)]
  179. private Collection $organizationImages;
  180. #[ORM\OneToOne(targetEntity: Parameters::class, mappedBy: 'qrCode', fetch: 'EAGER')]
  181. private ?Parameters $qrCode = null;
  182. /** @var Collection<int, Event> */
  183. #[ORM\OneToMany(targetEntity: Event::class, mappedBy: 'image')]
  184. private Collection $events;
  185. /** @var Collection<int, Activity> */
  186. #[ORM\OneToMany(targetEntity: Activity::class, mappedBy: 'logo')]
  187. private Collection $activityLogos;
  188. /** @var Collection<int, Activity> */
  189. #[ORM\OneToMany(targetEntity: Activity::class, mappedBy: 'imageActivity')]
  190. private Collection $activityImages;
  191. #[ORM\ManyToOne(inversedBy: 'files')]
  192. #[ORM\JoinColumn(onDelete: 'CASCADE')]
  193. private ?EventReport $eventReport = null;
  194. #[ORM\ManyToOne(cascade: ['persist'], inversedBy: 'files')]
  195. #[ORM\JoinColumn(onDelete: 'CASCADE')]
  196. private ?DocumentWish $documentWish = null;
  197. #[ORM\ManyToOne(cascade: ['persist'], inversedBy: 'introductionFiles')]
  198. #[ORM\JoinColumn(onDelete: 'CASCADE')]
  199. private ?OnlineRegistrationSettings $onlineRegistrationSetting = null;
  200. #[ORM\ManyToOne(cascade: ['persist'], inversedBy: 'introductionFilesNewEnrolments')]
  201. #[ORM\JoinColumn(onDelete: 'CASCADE')]
  202. private ?OnlineRegistrationSettings $onlineRegistrationSettingNewEnrolments = null;
  203. #[ORM\ManyToOne(cascade: ['persist'], inversedBy: 'files')]
  204. #[ORM\JoinColumn(onDelete: 'CASCADE')]
  205. private ?Work $work = null;
  206. #[ORM\ManyToOne(cascade: ['persist'], inversedBy: 'files')]
  207. #[ORM\JoinColumn(onDelete: 'CASCADE')]
  208. private ?TemplateSystem $templateSystem = null;
  209. /** @var Collection<int, Network> */
  210. #[ORM\OneToMany(targetEntity: Network::class, mappedBy: 'image')]
  211. private Collection $networks;
  212. #[ORM\OneToOne(targetEntity: CalendarSynchro::class, mappedBy: 'file')]
  213. private ?CalendarSynchro $calendarSynchro;
  214. #[ORM\OneToOne(targetEntity: SddRegie::class, mappedBy: 'file')]
  215. private ?SddRegie $sddRegieFile = null;
  216. #[ORM\OneToOne(targetEntity: SddRegie::class, mappedBy: 'bordereau')]
  217. private ?SddRegie $sddRegieBordereau = null;
  218. #[Pure]
  219. public function __construct()
  220. {
  221. $this->personImages = new ArrayCollection();
  222. $this->organizationLogos = new ArrayCollection();
  223. $this->organizationImages = new ArrayCollection();
  224. $this->accessPersons = new ArrayCollection();
  225. $this->events = new ArrayCollection();
  226. $this->activityLogos = new ArrayCollection();
  227. $this->activityImages = new ArrayCollection();
  228. $this->networks = new ArrayCollection();
  229. }
  230. public function getId(): ?int
  231. {
  232. return $this->id;
  233. }
  234. public function getPerson(): ?Person
  235. {
  236. return $this->person;
  237. }
  238. public function setPerson(?Person $person): self
  239. {
  240. $this->person = $person;
  241. return $this;
  242. }
  243. public function getOrganization(): ?Organization
  244. {
  245. return $this->organization;
  246. }
  247. public function setOrganization(?Organization $organization): self
  248. {
  249. $this->organization = $organization;
  250. return $this;
  251. }
  252. public function getSlug(): ?string
  253. {
  254. return $this->slug;
  255. }
  256. public function setSlug(?string $slug): self
  257. {
  258. $this->slug = $slug;
  259. return $this;
  260. }
  261. public function getPath(): ?string
  262. {
  263. return $this->path;
  264. }
  265. public function setPath(?string $path): self
  266. {
  267. $this->path = $path;
  268. return $this;
  269. }
  270. public function getName(): string
  271. {
  272. return $this->name;
  273. }
  274. public function setName(string $name): self
  275. {
  276. $this->name = $name;
  277. return $this;
  278. }
  279. public function getMimeType(): ?string
  280. {
  281. return $this->mimeType;
  282. }
  283. public function setMimeType(?string $mimeType): self
  284. {
  285. $this->mimeType = $mimeType;
  286. return $this;
  287. }
  288. public function getConfig(): ?string
  289. {
  290. return $this->config;
  291. }
  292. public function setConfig(?string $config): self
  293. {
  294. $this->config = $config;
  295. return $this;
  296. }
  297. public function getPersonImages(): Collection
  298. {
  299. return $this->personImages;
  300. }
  301. public function addPersonImage(Person $person): self
  302. {
  303. if (!$this->personImages->contains($person)) {
  304. $this->personImages[] = $person;
  305. $person->setImage($this);
  306. }
  307. return $this;
  308. }
  309. public function removePersonImage(Person $person): self
  310. {
  311. // set the owning side to null (unless already changed)
  312. if ($this->personImages->removeElement($person) && $person->getImage() === $this) {
  313. $person->setImage(null);
  314. }
  315. return $this;
  316. }
  317. /**
  318. * TODO: voir si utilisé?
  319. */
  320. public function getAccessRoles(): Collection
  321. {
  322. return new ArrayCollection([]);
  323. }
  324. public function getVisibility(): FileVisibilityEnum
  325. {
  326. return $this->visibility;
  327. }
  328. public function setVisibility(FileVisibilityEnum $visibility): self
  329. {
  330. $this->visibility = $visibility;
  331. return $this;
  332. }
  333. public function getType(): FileTypeEnum
  334. {
  335. return $this->type;
  336. }
  337. public function setType(FileTypeEnum $type): self
  338. {
  339. $this->type = $type;
  340. return $this;
  341. }
  342. public function getSize(): ?int
  343. {
  344. return $this->size;
  345. }
  346. public function setSize(?int $size): self
  347. {
  348. $this->size = $size;
  349. return $this;
  350. }
  351. public function getIsTemporaryFile(): bool
  352. {
  353. return $this->isTemporaryFile;
  354. }
  355. public function setIsTemporaryFile(bool $isTemporaryFile): self
  356. {
  357. $this->isTemporaryFile = $isTemporaryFile;
  358. return $this;
  359. }
  360. public function getCreateDate(): \DateTime
  361. {
  362. return $this->createDate;
  363. }
  364. public function setCreateDate(\DateTime $createDate): self
  365. {
  366. $this->createDate = $createDate;
  367. return $this;
  368. }
  369. public function getCreatedBy(): ?int
  370. {
  371. return $this->createdBy;
  372. }
  373. public function setCreatedBy(?int $createdBy): self
  374. {
  375. $this->createdBy = $createdBy;
  376. return $this;
  377. }
  378. public function getUpdateDate(): \DateTime
  379. {
  380. return $this->updateDate;
  381. }
  382. public function setUpdateDate(\DateTime $updateDate): self
  383. {
  384. $this->updateDate = $updateDate;
  385. return $this;
  386. }
  387. public function getUpdatedBy(): ?int
  388. {
  389. return $this->updatedBy;
  390. }
  391. public function setUpdatedBy(?int $updatedBy): self
  392. {
  393. $this->updatedBy = $updatedBy;
  394. return $this;
  395. }
  396. public function getStatus(): ?FileStatusEnum
  397. {
  398. return $this->status;
  399. }
  400. public function setStatus(?FileStatusEnum $status): self
  401. {
  402. $this->status = $status;
  403. return $this;
  404. }
  405. public function getHost(): ?FileHostEnum
  406. {
  407. return $this->host;
  408. }
  409. public function setHost(?FileHostEnum $host): self
  410. {
  411. $this->host = $host;
  412. return $this;
  413. }
  414. public function getOrganizationLogos(): Collection
  415. {
  416. return $this->organizationLogos;
  417. }
  418. public function addOrganizationLogo(Organization $organization): self
  419. {
  420. if (!$this->organizationLogos->contains($organization)) {
  421. $this->organizationLogos[] = $organization;
  422. $organization->setLogo($this);
  423. }
  424. return $this;
  425. }
  426. public function removeOrganizationLogo(Organization $organization): self
  427. {
  428. // set the owning side to null (unless already changed)
  429. if ($this->organizationLogos->removeElement($organization) && $organization->getLogo() === $this) {
  430. $organization->setLogo(null);
  431. }
  432. return $this;
  433. }
  434. public function getOrganizationImages(): Collection
  435. {
  436. return $this->organizationImages;
  437. }
  438. public function addOrganizationImage(Organization $organization): self
  439. {
  440. if (!$this->organizationImages->contains($organization)) {
  441. $this->organizationImages[] = $organization;
  442. $organization->setImage($this);
  443. }
  444. return $this;
  445. }
  446. public function removeOrganizationImage(Organization $organization): self
  447. {
  448. // set the owning side to null (unless already changed)
  449. if ($this->organizationImages->removeElement($organization) && $organization->getImage() === $this) {
  450. $organization->setImage(null);
  451. }
  452. return $this;
  453. }
  454. public function getQrCode(): ?Parameters
  455. {
  456. return $this->qrCode;
  457. }
  458. public function setQrCode(?Parameters $qrCode): self
  459. {
  460. $this->qrCode = $qrCode;
  461. return $this;
  462. }
  463. public function getAvailabilityDate(): ?\DateTime
  464. {
  465. return $this->availabilityDate;
  466. }
  467. public function setAvailabilityDate(?\DateTime $availabilityDate): void
  468. {
  469. $this->availabilityDate = $availabilityDate;
  470. }
  471. /**
  472. * @return Collection<int, Person>
  473. */
  474. public function getAccessPersons(): Collection
  475. {
  476. return $this->accessPersons;
  477. }
  478. public function addAccessPerson(Person $accessPerson): self
  479. {
  480. if (!$this->accessPersons->contains($accessPerson)) {
  481. $this->accessPersons[] = $accessPerson;
  482. }
  483. return $this;
  484. }
  485. public function removeAccessPerson(Person $accessPerson): self
  486. {
  487. $this->accessPersons->removeElement($accessPerson);
  488. return $this;
  489. }
  490. /**
  491. * @return Collection<int, Event>
  492. */
  493. public function getEvents(): Collection
  494. {
  495. return $this->events;
  496. }
  497. public function addEvent(Event $event): self
  498. {
  499. if (!$this->events->contains($event)) {
  500. $this->events[] = $event;
  501. $event->setImage($this);
  502. }
  503. return $this;
  504. }
  505. public function removeEvent(Event $event): self
  506. {
  507. // set the owning side to null (unless already changed)
  508. if ($this->events->removeElement($event) && $event->getImage() === $this) {
  509. $event->setImage(null);
  510. }
  511. return $this;
  512. }
  513. /**
  514. * @return Collection<int, Activity>
  515. */
  516. public function getActivityLogos(): Collection
  517. {
  518. return $this->activityLogos;
  519. }
  520. public function addActivityLogo(Activity $activityLogo): self
  521. {
  522. if (!$this->activityLogos->contains($activityLogo)) {
  523. $this->activityLogos[] = $activityLogo;
  524. $activityLogo->setLogo($this);
  525. }
  526. return $this;
  527. }
  528. public function removeActivityLogo(Activity $activityLogo): self
  529. {
  530. // set the owning side to null (unless already changed)
  531. if ($this->activityLogos->removeElement($activityLogo) && $activityLogo->getLogo() === $this) {
  532. $activityLogo->setLogo(null);
  533. }
  534. return $this;
  535. }
  536. /**
  537. * @return Collection<int, Activity>
  538. */
  539. public function getActivityImages(): Collection
  540. {
  541. return $this->activityImages;
  542. }
  543. public function addActivityImage(Activity $activityImage): self
  544. {
  545. if (!$this->activityImages->contains($activityImage)) {
  546. $this->activityImages[] = $activityImage;
  547. $activityImage->setImageActivity($this);
  548. }
  549. return $this;
  550. }
  551. public function removeActivityImage(Activity $activityImage): self
  552. {
  553. // set the owning side to null (unless already changed)
  554. if ($this->activityImages->removeElement($activityImage) && $activityImage->getImageActivity() === $this) {
  555. $activityImage->setImageActivity(null);
  556. }
  557. return $this;
  558. }
  559. public function getEventReport(): ?EventReport
  560. {
  561. return $this->eventReport;
  562. }
  563. public function setEventReport(?EventReport $eventReport): self
  564. {
  565. $this->eventReport = $eventReport;
  566. return $this;
  567. }
  568. public function getDocumentWish(): ?DocumentWish
  569. {
  570. return $this->documentWish;
  571. }
  572. public function setDocumentWish(?DocumentWish $documentWish): self
  573. {
  574. $this->documentWish = $documentWish;
  575. return $this;
  576. }
  577. public function getOnlineRegistrationSetting(): ?OnlineRegistrationSettings
  578. {
  579. return $this->onlineRegistrationSetting;
  580. }
  581. public function setOnlineRegistrationSetting(?OnlineRegistrationSettings $onlineRegistrationSetting): self
  582. {
  583. $this->onlineRegistrationSetting = $onlineRegistrationSetting;
  584. return $this;
  585. }
  586. public function getOnlineRegistrationSettingNewEnrolments(): ?OnlineRegistrationSettings
  587. {
  588. return $this->onlineRegistrationSettingNewEnrolments;
  589. }
  590. public function setOnlineRegistrationSettingNewEnrolments(?OnlineRegistrationSettings $onlineRegistrationSettingNewEnrolments): self
  591. {
  592. $this->onlineRegistrationSettingNewEnrolments = $onlineRegistrationSettingNewEnrolments;
  593. return $this;
  594. }
  595. public function getWork(): ?Work
  596. {
  597. return $this->work;
  598. }
  599. public function setWork(?Work $work): self
  600. {
  601. $this->work = $work;
  602. return $this;
  603. }
  604. public function getTemplateSystem(): ?TemplateSystem
  605. {
  606. return $this->templateSystem;
  607. }
  608. public function setTemplateSystem(?TemplateSystem $templateSystem): self
  609. {
  610. $this->templateSystem = $templateSystem;
  611. return $this;
  612. }
  613. public function getNetworks(): Collection
  614. {
  615. return $this->networks;
  616. }
  617. public function addNetwork(Network $network): self
  618. {
  619. if (!$this->networks->contains($network)) {
  620. $this->networks[] = $network;
  621. $network->setImage($this);
  622. }
  623. return $this;
  624. }
  625. public function removeNetwork(Network $network): self
  626. {
  627. if ($this->networks->removeElement($network)) {
  628. // $network->setImage(null); // TODO: actuellement, pas nullable: conserver?
  629. }
  630. return $this;
  631. }
  632. public function getCalendarSynchro(): ?CalendarSynchro
  633. {
  634. return $this->calendarSynchro;
  635. }
  636. public function setCalendarSynchro(?CalendarSynchro $calendarSynchro): self
  637. {
  638. $this->calendarSynchro = $calendarSynchro;
  639. return $this;
  640. }
  641. public function getSddRegieFile(): ?SddRegie
  642. {
  643. return $this->sddRegieFile;
  644. }
  645. public function setSddRegieFile(?SddRegie $sddRegieFile): self
  646. {
  647. $this->sddRegieFile = $sddRegieFile;
  648. return $this;
  649. }
  650. public function getSddRegieBordereau(): ?SddRegie
  651. {
  652. return $this->sddRegieBordereau;
  653. }
  654. public function setSddRegieBordereau(?SddRegie $sddRegieBordereau): self
  655. {
  656. $this->sddRegieBordereau = $sddRegieBordereau;
  657. return $this;
  658. }
  659. }