187 lines
3.6 KiB
PHP

<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
/**
* Chill is a software for social workers.
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Chill\MainBundle\Entity;
use DateTimeImmutable;
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\ManyToMany(targetEntity=User::class)
* @ORM\JoinTable(name="chill_main_notification_addresses_user")
*/
private Collection $addressees;
/**
* @ORM\Column(type="datetime_immutable")
*/
private DateTimeImmutable $date;
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private int $id;
/**
* @ORM\Column(type="text")
*/
private string $message;
/**
* @ORM\Column(type="json")
*/
private array $read;
/**
* @ORM\Column(type="string", length=255)
*/
private string $relatedEntityClass;
/**
* @ORM\Column(type="integer")
*/
private int $relatedEntityId;
/**
* @ORM\ManyToOne(targetEntity=User::class)
* @ORM\JoinColumn(nullable=false)
*/
private User $sender;
public function __construct()
{
$this->addressees = new ArrayCollection();
}
public function addAddressee(User $addressee): self
{
if (!$this->addressees->contains($addressee)) {
$this->addressees[] = $addressee;
}
return $this;
}
/**
* @return Collection|User[]
*/
public function getAddressees(): Collection
{
return $this->addressees;
}
public function getDate(): ?DateTimeImmutable
{
return $this->date;
}
public function getId(): ?int
{
return $this->id;
}
public function getMessage(): ?string
{
return $this->message;
}
public function getRead(): array
{
return $this->read;
}
public function getRelatedEntityClass(): ?string
{
return $this->relatedEntityClass;
}
public function getRelatedEntityId(): ?int
{
return $this->relatedEntityId;
}
public function getSender(): ?User
{
return $this->sender;
}
public function removeAddressee(User $addressee): self
{
$this->addressees->removeElement($addressee);
return $this;
}
public function setDate(DateTimeImmutable $date): self
{
$this->date = $date;
return $this;
}
public function setMessage(string $message): self
{
$this->message = $message;
return $this;
}
public function setRead(array $read): self
{
$this->read = $read;
return $this;
}
public function setRelatedEntityClass(string $relatedEntityClass): self
{
$this->relatedEntityClass = $relatedEntityClass;
return $this;
}
public function setRelatedEntityId(int $relatedEntityId): self
{
$this->relatedEntityId = $relatedEntityId;
return $this;
}
public function setSender(?User $sender): self
{
$this->sender = $sender;
return $this;
}
}