src/Entity/PointConversionRate.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\PointConversionRateRepository;
  4. use App\Traits\DateTrait;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use JMS\Serializer\Annotation as Serializer;
  9. use JMS\Serializer\Annotation\Expose;
  10. use JMS\Serializer\Annotation\Groups;
  11. use JMS\Serializer\Annotation\SerializedName;
  12. use JMS\Serializer\Annotation\VirtualProperty;
  13. /**
  14. * @ORM\Entity(repositoryClass=PointConversionRateRepository::class)
  15. * @ORM\HasLifecycleCallbacks()
  16. * @Serializer\ExclusionPolicy("ALL")
  17. */
  18. class PointConversionRate
  19. {
  20. /**
  21. * @ORM\Id
  22. * @ORM\GeneratedValue
  23. * @ORM\Column(type="integer")
  24. *
  25. * @Expose
  26. * @Groups({"point_conversion_rate"})
  27. */
  28. private ?int $id = NULL;
  29. /**
  30. * @ORM\Column(type="string", length=128)
  31. *
  32. * @Expose
  33. * @Groups({"point_conversion_rate"})
  34. */
  35. private ?string $label = NULL;
  36. /**
  37. * @ORM\Column(type="float")
  38. *
  39. * @Expose
  40. * @Groups({"point_conversion_rate"})
  41. */
  42. private ?float $rate = NULL;
  43. /**
  44. * @ORM\ManyToOne(targetEntity=User::class, inversedBy="ownerPointConversionRates")
  45. * @ORM\JoinColumn(nullable=false)
  46. *
  47. * @Expose
  48. * @Groups({"point_conversion_rate"})
  49. */
  50. private ?User $owner = NULL;
  51. /**
  52. * @ORM\OneToMany(targetEntity=User::class, mappedBy="pointConversionRate")
  53. */
  54. private Collection $users;
  55. use DateTrait;
  56. public function __construct()
  57. {
  58. $this->users = new ArrayCollection();
  59. }
  60. public function getId(): ?int
  61. {
  62. return $this->id;
  63. }
  64. public function getLabel(): ?string
  65. {
  66. return $this->label;
  67. }
  68. public function setLabel(string $label): self
  69. {
  70. $this->label = $label;
  71. return $this;
  72. }
  73. public function getRate(): ?float
  74. {
  75. return $this->rate;
  76. }
  77. public function setRate(float $rate): self
  78. {
  79. $this->rate = $rate;
  80. return $this;
  81. }
  82. public function getOwner(): ?User
  83. {
  84. return $this->owner;
  85. }
  86. public function setOwner(?User $owner): self
  87. {
  88. $this->owner = $owner;
  89. return $this;
  90. }
  91. /**
  92. * @return Collection<int, User>
  93. */
  94. public function getUsers(): Collection
  95. {
  96. return $this->users;
  97. }
  98. public function addUser(User $user): self
  99. {
  100. if(!$this->users->contains($user))
  101. {
  102. $this->users[] = $user;
  103. $user->setPointConversionRate($this);
  104. }
  105. return $this;
  106. }
  107. public function removeUser(User $user): self
  108. {
  109. if($this->users->removeElement($user))
  110. {
  111. // set the owning side to null (unless already changed)
  112. if($user->getPointConversionRate() === $this)
  113. {
  114. $user->setPointConversionRate(NULL);
  115. }
  116. }
  117. return $this;
  118. }
  119. /**
  120. * @return int
  121. *
  122. * @VirtualProperty
  123. * @SerializedName("count_users")
  124. *
  125. * @Expose
  126. * @Groups({"point_conversion_rate"})
  127. */
  128. public function countUsers(): int
  129. {
  130. return count($this->users);
  131. }
  132. }