<?php namespace App\Entity; use App\Repository\PointConversionRateRepository; use App\Traits\DateTrait; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use JMS\Serializer\Annotation as Serializer; use JMS\Serializer\Annotation\Expose; use JMS\Serializer\Annotation\Groups; use JMS\Serializer\Annotation\SerializedName; use JMS\Serializer\Annotation\VirtualProperty; /** * @ORM\Entity(repositoryClass=PointConversionRateRepository::class) * @ORM\HasLifecycleCallbacks() * @Serializer\ExclusionPolicy("ALL") */ class PointConversionRate { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") * * @Expose * @Groups({"point_conversion_rate"}) */ private ?int $id = NULL; /** * @ORM\Column(type="string", length=128) * * @Expose * @Groups({"point_conversion_rate"}) */ private ?string $label = NULL; /** * @ORM\Column(type="float") * * @Expose * @Groups({"point_conversion_rate"}) */ private ?float $rate = NULL; /** * @ORM\ManyToOne(targetEntity=User::class, inversedBy="ownerPointConversionRates") * @ORM\JoinColumn(nullable=false) * * @Expose * @Groups({"point_conversion_rate"}) */ private ?User $owner = NULL; /** * @ORM\OneToMany(targetEntity=User::class, mappedBy="pointConversionRate") */ private Collection $users; use DateTrait; public function __construct() { $this->users = new ArrayCollection(); } public function getId(): ?int { return $this->id; } public function getLabel(): ?string { return $this->label; } public function setLabel(string $label): self { $this->label = $label; return $this; } public function getRate(): ?float { return $this->rate; } public function setRate(float $rate): self { $this->rate = $rate; return $this; } public function getOwner(): ?User { return $this->owner; } public function setOwner(?User $owner): self { $this->owner = $owner; return $this; } /** * @return Collection<int, User> */ public function getUsers(): Collection { return $this->users; } public function addUser(User $user): self { if (!$this->users->contains($user)) { $this->users[] = $user; $user->setPointConversionRate($this); } return $this; } public function removeUser(User $user): self { if ($this->users->removeElement($user)) { // set the owning side to null (unless already changed) if ($user->getPointConversionRate() === $this) { $user->setPointConversionRate(NULL); } } return $this; } /** * @return int * * @VirtualProperty * @SerializedName("count_users") * * @Expose * @Groups({"point_conversion_rate"}) */ public function countUsers(): int { return count($this->users); } }