Pārlūkot izejas kodu

fix entities relations

Olivier Massot 6 mēneši atpakaļ
vecāks
revīzija
2c48e000bd

+ 6 - 6
config/packages/docker/messenger.yaml

@@ -1,9 +1,9 @@
 # Désactive le fonctionnement asynchrone de messenger en mode dev
 # > commenter pour tester avec un fonctionnement asynchrone
 #   (dans ce cas, la commande `messenger:consume async` doit être en cours d'exécution)
-framework:
-    messenger:
-        transports:
-            # https://symfony.com/doc/current/messenger.html#transport-configuration
-            async: 'sync://'
-            failed: 'sync://'
+#framework:
+#    messenger:
+#        transports:
+#            # https://symfony.com/doc/current/messenger.html#transport-configuration
+#            async: 'sync://'
+#            failed: 'sync://'

+ 93 - 3
src/Entity/Access/Access.php

@@ -18,6 +18,7 @@ use App\Entity\Billing\Bill;
 use App\Entity\Billing\BillCredit;
 use App\Entity\Billing\BillLine;
 use App\Entity\Billing\EducationalProjectPayer;
+use App\Entity\Booking\AbstractBooking;
 use App\Entity\Booking\Attendance;
 use App\Entity\Booking\AttendanceBooking;
 use App\Entity\Booking\CalendarSynchro;
@@ -55,6 +56,8 @@ use App\Entity\Product\EquipmentControl;
 use App\Entity\Product\EquipmentLoan;
 use App\Entity\Product\EquipmentRepair;
 use App\Entity\Reward\AccessReward;
+use App\Entity\Shop\Orders;
+use App\Entity\SimulationSession\SimulationSession;
 use App\Entity\Token\Token;
 use App\Entity\Traits\CreatedOnAndByTrait;
 use App\Filter\ApiPlatform\Person\FullNameFilter;
@@ -379,9 +382,8 @@ class Access implements UserInterface, PasswordAuthenticatedUserInterface
     #[ORM\InverseJoinColumn(name: 'tag_id', referencedColumnName: 'id')]
     private Collection $tags;
 
-    // TODO: revoir le mapping, on ne peut pas mapper à une mapped superclass comme abstract booking
-    //    #[ORM\ManyToMany(mappedBy: 'organizer', targetEntity: AbstractBooking::class, cascade: ['persist', 'remove'], orphanRemoval: false)]
-    //    private Collection $bookingOrganizers;
+    #[ORM\ManyToMany(targetEntity: Event::class, mappedBy: 'organizer', cascade: ['persist', 'remove'], orphanRemoval: false)]
+    private Collection $bookingOrganizers;
 
     /** @var Collection<int, AdvancePayment> */
     #[ORM\OneToMany(targetEntity: AdvancePayment::class, mappedBy: 'access', cascade: ['persist', 'remove'])]
@@ -426,6 +428,20 @@ class Access implements UserInterface, PasswordAuthenticatedUserInterface
     #[ORM\OneToMany(targetEntity: AbstractReport::class, mappedBy: 'access', cascade: ['persist', 'remove'])]
     private Collection $reports;
 
+    #[ORM\OneToMany(targetEntity: SimulationSession::class, mappedBy: 'accessInitiator', cascade: ['persist', 'remove'])]
+    protected Collection $simulationSessionAccessInitiators;
+
+    #[ORM\OneToMany(
+        targetEntity: SimulationSession::class,
+        mappedBy: 'accessSimulated',
+        cascade: ['persist', 'remove'],
+        orphanRemoval: false,
+    )]
+    protected Collection $simulationSessionAccessesSimulated;
+
+    #[ORM\OneToMany(mappedBy: 'access', targetEntity: Orders::class, cascade: [], orphanRemoval: true)]
+    protected Collection $orders;
+
     #[Pure]
     public function __construct()
     {
@@ -482,6 +498,9 @@ class Access implements UserInterface, PasswordAuthenticatedUserInterface
         $this->emails = new ArrayCollection();
         $this->mails = new ArrayCollection();
         $this->sms = new ArrayCollection();
+        $this->simulationSessionAccessInitiators = new ArrayCollection();
+        $this->simulationSessionAccessSimulateds = new ArrayCollection();
+        $this->orders = new ArrayCollection();
     }
 
     public function getId(): ?int
@@ -2514,6 +2533,77 @@ class Access implements UserInterface, PasswordAuthenticatedUserInterface
             $report->setAccess(null);
         }
 
+        return $this;
+    }
+    function getSimulationSessionAccessInitiators(): Collection
+    {
+        return $this->simulationSessionAccessInitiators;
+    }
+
+    function addSimulationSessionAccessInitiator(SimulationSession $simulationSessionAccessInitiator): self
+    {
+        if (!$this->simulationSessionAccessInitiators->contains($simulationSessionAccessInitiator)) {
+            $this->simulationSessionAccessInitiators[] = $simulationSessionAccessInitiator;
+            $simulationSessionAccessInitiator->setAccessInitiator($this);
+        }
+
+        return $this;
+    }
+
+    function removeSimulationSessionAccessInitiator(SimulationSession $simulationSessionAccessInitiator): self
+    {
+        if ($this->simulationSessionAccessInitiators->removeElement($simulationSessionAccessInitiator)) {
+            $simulationSessionAccessInitiator->setAccessInitiator(null);
+        }
+
+        return $this;
+    }
+
+    function getSimulationSessionAccessSimulateds(): Collection
+    {
+        return $this->simulationSessionAccessSimulateds;
+    }
+
+    function addSimulationSessionAccessSimulated(SimulationSession $simulationSessionAccessSimulated): self
+    {
+        if (!$this->simulationSessionAccessSimulateds->contains($simulationSessionAccessSimulated)) {
+            $this->simulationSessionAccessSimulateds[] = $simulationSessionAccessSimulated;
+            $simulationSessionAccessSimulated->setAccessSimulated($this);
+        }
+
+        return $this;
+    }
+
+    function removeSimulationSessionAccessSimulated(SimulationSession $simulationSessionAccessSimulated): self
+    {
+        if ($this->simulationSessionAccessSimulateds->removeElement($simulationSessionAccessSimulated)) {
+            $simulationSessionAccessSimulated->setAccessSimulated(null);
+        }
+
+        return $this;
+    }
+
+    function getOrders(): Collection
+    {
+        return $this->orders;
+    }
+
+    function addOrder(Orders $order): self
+    {
+        if (!$this->orders->contains($order)) {
+            $this->orders[] = $order;
+            $order->setAccess($this);
+        }
+
+        return $this;
+    }
+
+    function removeOrder(Orders $order): self
+    {
+        if ($this->orders->removeElement($order)) {
+            $order->setAccess(null);
+        }
+
         return $this;
     }
 }

+ 3 - 3
src/Entity/Billing/BillingIntangibleExcludeDate.php

@@ -36,7 +36,7 @@ class BillingIntangibleExcludeDate
     private ?EquipmentLoan $equipmentLoan = null;
 
     #[ORM\ManyToOne(cascade: ['persist'], inversedBy: 'billingIntangibleExcludeDates')]
-    private ?Bill $bill = null;
+    private ?AbstractBillAccounting $bill = null;
 
     public function getId(): ?int
     {
@@ -91,12 +91,12 @@ class BillingIntangibleExcludeDate
         return $this;
     }
 
-    public function getBill(): ?Bill
+    public function getBill(): ?AbstractBillAccounting
     {
         return $this->bill;
     }
 
-    public function setBill(?Bill $bill): self
+    public function setBill(?AbstractBillAccounting $bill): self
     {
         $this->bill = $bill;
 

+ 1 - 1
src/Entity/Billing/BillingSetting.php

@@ -41,7 +41,7 @@ class BillingSetting
     #[ORM\OneToMany(targetEntity: FamilyQuotient::class, mappedBy: 'billingSetting', cascade: ['persist'], orphanRemoval: true)]
     private Collection $familyQuotients;
 
-    #[ORM\OneToOne(targetEntity: BillingSettingRent::class, mappedBy: 'billingSetting', cascade: ['persist'])]
+    #[ORM\OneToOne(targetEntity: BillingSettingRent::class, mappedBy: 'billingSetting', cascade: ['persist', 'remove'])]
     protected ?BillingSettingRent $billingSettingRent;
 
     #[Pure]

+ 3 - 2
src/Entity/Booking/Course.php

@@ -35,14 +35,15 @@ use Doctrine\ORM\Mapping as ORM;
 class Course extends AbstractBooking
 {
     /** @var Collection<int, CourseRecur> */
-    #[ORM\OneToMany(targetEntity: CourseRecur::class, mappedBy: 'event', cascade: ['persist'], orphanRemoval: true)]
+    #[ORM\OneToMany(targetEntity: CourseRecur::class, mappedBy: 'event', cascade: ['persist'])]
     protected Collection $eventRecur;
 
     /** @var Collection<int, Course> */
     #[ORM\OneToMany(targetEntity: Course::class, mappedBy: 'parent', orphanRemoval: true)]
     protected Collection $timeline;
 
-    #[ORM\ManyToOne(inversedBy: 'timeline')]
+    #[ORM\ManyToOne(targetEntity: Course::class, cascade: ['persist'], inversedBy: 'timeline')]
+    #[ORM\JoinColumn(nullable: true)]
     protected ?Course $parent;
 
     #[ORM\ManyToOne(inversedBy: 'courses')]

+ 3 - 2
src/Entity/Booking/EducationalProject.php

@@ -34,10 +34,11 @@ class EducationalProject extends AbstractBooking
     protected Collection $eventRecur;
 
     /** @var Collection<int, EducationalProject> */
-    #[ORM\OneToMany(targetEntity: EducationalProject::class, mappedBy: 'parent', orphanRemoval: true)]
+    #[ORM\OneToMany(targetEntity: EducationalProject::class, mappedBy: 'parent')]
     protected Collection $timeline;
 
-    #[ORM\ManyToOne(inversedBy: 'timeline')]
+    #[ORM\ManyToOne(targetEntity: EducationalProject::class, cascade: ['persist'], inversedBy: 'timeline')]
+    #[ORM\JoinColumn(nullable: true)]
     protected ?EducationalProject $parent = null;
 
     #[ORM\ManyToOne(inversedBy: 'educationalProjects')]

+ 3 - 2
src/Entity/Booking/Event.php

@@ -46,10 +46,11 @@ class Event extends AbstractBooking
     protected Collection $eventRecur;
 
     /** @var Collection<int, Event> */
-    #[ORM\OneToMany(targetEntity: Event::class, mappedBy: 'parent', cascade: ['persist', 'remove'])]
+    #[ORM\OneToMany(targetEntity: Event::class, mappedBy: 'parent', cascade: ['persist'])]
     protected Collection $timeline;
 
-    #[ORM\ManyToOne(inversedBy: 'timeline')]
+    #[ORM\ManyToOne(targetEntity: Event::class, cascade: ['persist'], inversedBy: 'timeline')]
+    #[ORM\JoinColumn(nullable: true)]
     protected ?Event $parent;
 
     #[Assert\Valid]

+ 1 - 1
src/Entity/Booking/EventReport.php

@@ -28,7 +28,7 @@ class EventReport
     private ?Event $event = null;
 
     /** @var Collection<int, File> */
-    #[ORM\OneToMany(targetEntity: File::class, mappedBy: 'eventReport', orphanRemoval: true)]
+    #[ORM\OneToMany(targetEntity: File::class, mappedBy: 'eventReport', cascade: ['persist', 'remove'])]
     private Collection $files;
 
     public function __construct()

+ 1 - 0
src/Entity/Booking/Examen.php

@@ -42,6 +42,7 @@ class Examen extends AbstractBooking
     protected Collection $timeline;
 
     #[ORM\ManyToOne(inversedBy: 'timeline')]
+    #[ORM\JoinColumn(nullable: true)]
     protected ?Examen $parent;
 
     #[ORM\ManyToOne(cascade: ['persist'], inversedBy: 'examens')]

+ 1 - 1
src/Entity/Education/EducationCurriculum.php

@@ -75,7 +75,7 @@ class EducationCurriculum
 
     /** @var Collection<int, EducationCurriculumPack> */
     #[ORM\ManyToMany(
-        targetEntity: EducationCurriculumPack::class,
+        targetEntity: RequiredChoicesBlock::class,
         mappedBy: 'requiredChoicesEducationCurriculums',
         cascade: [],
         orphanRemoval: true,

+ 2 - 33
src/Entity/Education/EducationCurriculumPack.php

@@ -42,17 +42,9 @@ class EducationCurriculumPack
         cascade: [],
         orphanRemoval: false,
     )]
+    #[ORM\JoinTable(name: 'educationCurriculumPack_requiredEducationCurriculum')]
     public Collection $requiredEducationCurriculums;
 
-    /** @var Collection<int, EducationCurriculum> */
-    #[ORM\ManyToMany(
-        targetEntity: EducationCurriculum::class,
-        inversedBy: 'requiredChoicesEducationCurriculumPacks',
-        cascade: [],
-        orphanRemoval: false,
-    )]
-    public Collection $requiredChoicesEducationCurriculums;
-
     /** @var Collection<int, EducationCurriculum> */
     #[ORM\ManyToMany(
         targetEntity: EducationCurriculum::class,
@@ -60,6 +52,7 @@ class EducationCurriculumPack
         cascade: [],
         orphanRemoval: false,
     )]
+    #[ORM\JoinTable(name: 'educationCurriculumPack_optionnalEducationCurriculum')]
     public Collection $optionnalEducationCurriculums;
 
     /** @var Collection<int, Intangible> */
@@ -151,30 +144,6 @@ class EducationCurriculumPack
         return $this;
     }
 
-    public function getRequiredChoicesEducationCurriculums(): Collection
-    {
-        return $this->requiredChoicesEducationCurriculums;
-    }
-
-    public function addRequiredChoicesEducationCurriculum(EducationCurriculum $requiredChoicesEducationCurriculum): self
-    {
-        if (!$this->requiredChoicesEducationCurriculums->contains($requiredChoicesEducationCurriculum)) {
-            $this->requiredChoicesEducationCurriculums[] = $requiredChoicesEducationCurriculum;
-            $requiredChoicesEducationCurriculum->addRequiredChoicesEducationCurriculumPack($this);
-        }
-
-        return $this;
-    }
-
-    public function removeRequiredChoicesEducationCurriculum(EducationCurriculum $requiredChoicesEducationCurriculum): self
-    {
-        if ($this->requiredChoicesEducationCurriculums->removeElement($requiredChoicesEducationCurriculum)) {
-            $requiredChoicesEducationCurriculum->removeRequiredChoicesEducationCurriculumPack($this);
-        }
-
-        return $this;
-    }
-
     public function getOptionnalEducationCurriculums(): Collection
     {
         return $this->optionnalEducationCurriculums;

+ 3 - 3
src/Entity/Shop/Orders.php

@@ -21,7 +21,7 @@ class Orders
     protected Organization $organization;
 
     #[ORM\ManyToOne(targetEntity: Access::class, cascade: [], inversedBy: 'orders')]
-    protected Access $access;
+    protected ?Access $access;
 
     function getUuid(): mixed
     {
@@ -45,12 +45,12 @@ class Orders
         return $this;
     }
 
-    function getAccess(): Access
+    function getAccess(): ?Access
     {
         return $this->access;
     }
 
-    function setAccess(Access $access): self
+    function setAccess(?Access $access): self
     {
         $this->access = $access;
         return $this;

+ 3 - 3
src/Entity/SimulationSession/SimulationSession.php

@@ -24,7 +24,7 @@ class SimulationSession
     protected mixed $initiatorIp;
 
     /** -- Warning : auto-generated property, checkup the attribute options -- */
-    #[ORM\Column(type: 'date', options: ['nullable' => true])]
+    #[ORM\Column(type: 'datetime', options: ['nullable' => true])]
     protected ?\DateTimeInterface $expiryDate;
 
     /** -- Warning : auto-generated property, checkup the attribute options -- */
@@ -32,11 +32,11 @@ class SimulationSession
     protected bool $alreadyUsed;
 
     /** -- Warning : auto-generated property, checkup the attribute options -- */
-    #[ORM\Column(type: 'date', options: ['nullable' => true])]
+    #[ORM\Column(type: 'datetime', options: ['nullable' => true])]
     protected ?\DateTimeInterface $createDate;
 
     /** -- Warning : auto-generated property, checkup the attribute options -- */
-    #[ORM\Column(type: 'date', options: ['nullable' => true])]
+    #[ORM\Column(type: 'datetime', options: ['nullable' => true])]
     protected ?\DateTimeInterface $updateDate;
 
     /** -- Warning : auto-generated property, checkup the attribute options -- */