src/Entity/Club1895/Registration.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Club1895;
  3. use App\Entity\Enum\RegistrationStatus;
  4. use App\Entity\GlobalSeason;
  5. use App\Entity\Season;
  6. use App\Entity\Section;
  7. use App\Entity\Traits\Identifiable;
  8. use App\Repository\Club1895\RegistrationRepository;
  9. use Doctrine\Common\Collections\ArrayCollection;
  10. use Doctrine\Common\Collections\Collection;
  11. use Doctrine\ORM\Mapping as ORM;
  12. #[ORM\Entity(repositoryClassRegistrationRepository::class)]
  13. #[ORM\Table(name'club1895_registration')]
  14. class Registration
  15. {
  16.     use Identifiable;
  17.     public const DEFAULT_AMOUNT 250;
  18.     #[ORM\ManyToOne(inversedBy'registrations')]
  19.     #[ORM\JoinColumn(nullablefalse)]
  20.     private ?Club1895Profile $profile null;
  21.     #[ORM\ManyToOne]
  22.     #[ORM\JoinColumn(nullablefalse)]
  23.     private ?GlobalSeason $globalSeason null;
  24.     #[ORM\ManyToOne]
  25.     private ?Season $season null;
  26.     #[ORM\OneToMany(mappedBy'registration'targetEntityTransaction::class, orphanRemovaltrue)]
  27.     private Collection $transactions;
  28.     #[ORM\Column(length255enumTypeRegistrationStatus::class, options: ['default' => RegistrationStatus::Payment])]
  29.     private ?RegistrationStatus $status RegistrationStatus::Payment;
  30.     #[ORM\ManyToOne]
  31.     private ?Section $section null;
  32.     public function __construct()
  33.     {
  34.         $this->transactions = new ArrayCollection();
  35.     }
  36.     public function getProfile(): ?Club1895Profile
  37.     {
  38.         return $this->profile;
  39.     }
  40.     public function setProfile(?Club1895Profile $profile): self
  41.     {
  42.         $this->profile $profile;
  43.         return $this;
  44.     }
  45.     public function getGlobalSeason(): ?GlobalSeason
  46.     {
  47.         return $this->globalSeason;
  48.     }
  49.     public function setGlobalSeason(?GlobalSeason $globalSeason): self
  50.     {
  51.         $this->globalSeason $globalSeason;
  52.         return $this;
  53.     }
  54.     public function getSeason(): ?Season
  55.     {
  56.         return $this->season;
  57.     }
  58.     public function setSeason(?Season $season): self
  59.     {
  60.         $this->season $season;
  61.         return $this;
  62.     }
  63.     /**
  64.      * @return Collection<int, Transaction>
  65.      */
  66.     public function getTransactions(): Collection
  67.     {
  68.         return $this->transactions;
  69.     }
  70.     public function addTransaction(Transaction $transaction): self
  71.     {
  72.         if (!$this->transactions->contains($transaction)) {
  73.             $this->transactions->add($transaction);
  74.             $transaction->setRegistration($this);
  75.         }
  76.         return $this;
  77.     }
  78.     public function removeTransaction(Transaction $transaction): self
  79.     {
  80.         if ($this->transactions->removeElement($transaction)) {
  81.             // set the owning side to null (unless already changed)
  82.             if ($transaction->getRegistration() === $this) {
  83.                 $transaction->setRegistration(null);
  84.             }
  85.         }
  86.         return $this;
  87.     }
  88.     public function getStatus(): ?RegistrationStatus
  89.     {
  90.         return $this->status;
  91.     }
  92.     public function setStatus(RegistrationStatus $status): self
  93.     {
  94.         $this->status $status;
  95.         return $this;
  96.     }
  97.     public function getRemainingAmount(): float
  98.     {
  99.         $amountPayed 0;
  100.         foreach ($this->getTransactions() as $transaction) {
  101.             $amountPayed += $transaction->getAmountPayed();
  102.         }
  103.         return self::DEFAULT_AMOUNT $amountPayed;
  104.     }
  105.     public function getSection(): ?Section
  106.     {
  107.         return $this->section;
  108.     }
  109.     public function setSection(?Section $section): self
  110.     {
  111.         $this->section $section;
  112.         return $this;
  113.     }
  114. }