* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ namespace Chill\MainBundle\Entity; use Chill\MainBundle\Entity\User; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table( * name="chill_main_notification", * uniqueConstraints={ * @ORM\UniqueConstraint(columns={"relatedEntityClass", "relatedEntityId"}) * } * ) */ class Notification { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private int $id; /** * @ORM\Column(type="text") */ private string $message; /** * @ORM\Column(type="datetime_immutable") */ private \DateTimeImmutable $date; /** * @ORM\ManyToOne(targetEntity=User::class) * @ORM\JoinColumn(nullable=false) */ private User $sender; /** * @ORM\ManyToMany(targetEntity=User::class) * @ORM\JoinTable(name="chill_main_notification_addresses_user") */ private Collection $addressees; /** * @ORM\Column(type="string", length=255) */ private string $relatedEntityClass; /** * @ORM\Column(type="integer") */ private int $relatedEntityId; /** * @ORM\Column(type="json") */ private array $read; public function __construct() { $this->addressees = new ArrayCollection(); } public function getId(): ?int { return $this->id; } public function getMessage(): ?string { return $this->message; } public function setMessage(string $message): self { $this->message = $message; return $this; } public function getDate(): ?\DateTimeImmutable { return $this->date; } public function setDate(\DateTimeImmutable $date): self { $this->date = $date; return $this; } public function getSender(): ?User { return $this->sender; } public function setSender(?User $sender): self { $this->sender = $sender; return $this; } /** * @return Collection|User[] */ public function getAddressees(): Collection { return $this->addressees; } public function addAddressee(User $addressee): self { if (!$this->addressees->contains($addressee)) { $this->addressees[] = $addressee; } return $this; } public function removeAddressee(User $addressee): self { $this->addressees->removeElement($addressee); return $this; } public function getRelatedEntityClass(): ?string { return $this->relatedEntityClass; } public function setRelatedEntityClass(string $relatedEntityClass): self { $this->relatedEntityClass = $relatedEntityClass; return $this; } public function getRelatedEntityId(): ?int { return $this->relatedEntityId; } public function setRelatedEntityId(int $relatedEntityId): self { $this->relatedEntityId = $relatedEntityId; return $this; } public function getRead(): array { return $this->read; } public function setRead(array $read): self { $this->read = $read; return $this; } }