diff --git a/src/Bundle/ChillMainBundle/Entity/Notification.php b/src/Bundle/ChillMainBundle/Entity/Notification.php new file mode 100644 index 000000000..fd0a2acb8 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Entity/Notification.php @@ -0,0 +1,182 @@ + + * + * 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 App\Repository\Chill\MainBundle\Entity\NotificationRepository; +use Chill\MainBundle\Entity\User; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Collection; +use Doctrine\ORM\Mapping as ORM; + +/** + * @ORM\Entity(repositoryClass=NotificationRepository::class) + */ +class Notification +{ + /** + * @ORM\Id + * @ORM\GeneratedValue + * @ORM\Column(type="integer") + */ + private $id; + + /** + * @ORM\Column(type="text") + */ + private $message; + + /** + * @ORM\Column(type="datetime_immutable") + */ + private $date; + + /** + * @ORM\ManyToOne(targetEntity=User::class) + * @ORM\JoinColumn(nullable=false) + */ + private $sender; + + /** + * @ORM\ManyToMany(targetEntity=User::class) + * @ORM\JoinTable(name="chill_main_notification_addresses_user") + */ + private $addressees; + + /** + * @ORM\Column(type="string", length=255) + */ + private $relatedEntityClass; + + /** + * @ORM\Column(type="integer") + */ + private $relatedEntityId; + + /** + * @ORM\Column(type="boolean") + */ + private $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(): ?bool + { + return $this->read; + } + + public function setRead(bool $read): self + { + $this->read = $read; + + return $this; + } +} diff --git a/src/Bundle/ChillMainBundle/Repository/NotificationRepository.php b/src/Bundle/ChillMainBundle/Repository/NotificationRepository.php new file mode 100644 index 000000000..04d6def1b --- /dev/null +++ b/src/Bundle/ChillMainBundle/Repository/NotificationRepository.php @@ -0,0 +1,39 @@ + + * + * 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\Repository; + +use Chill\MainBundle\Entity\Notification; +use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; +use Doctrine\Persistence\ManagerRegistry; + +/** + * @method Notification|null find($id, $lockMode = null, $lockVersion = null) + * @method Notification|null findOneBy(array $criteria, array $orderBy = null) + * @method Notification[] findAll() + * @method Notification[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class NotificationRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Notification::class); + } + +}