src/Entity/ProjectNotification.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\ProjectNotificationRepository;
  4. use App\String\Constant;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\DBAL\Types\Types;
  8. use Doctrine\ORM\Mapping as ORM;
  9. #[ORM\Entity(repositoryClassProjectNotificationRepository::class)]
  10. class ProjectNotification
  11. {
  12.     #[ORM\Id]
  13.     #[ORM\GeneratedValue]
  14.     #[ORM\Column]
  15.     private ?int $id null;
  16.     #[ORM\Column(length255nullabletrue)]
  17.     private ?string $category null;
  18.     #[ORM\Column(length255nullabletrue)]
  19.     private ?string $title null;
  20.     #[ORM\Column(length255nullabletrue)]
  21.     private ?string $subtitle null;
  22.     #[ORM\Column(typeTypes::DATETIME_MUTABLEnullabletrue)]
  23.     private ?\DateTimeInterface $createdAt null;
  24.     #[ORM\Column(nullabletrue)]
  25.     private ?bool $isRead null;
  26.     #[ORM\ManyToMany(targetEntityUser::class, inversedBy'projectNotifications')]
  27.     private Collection $user;
  28.     #[ORM\Column(length255nullabletrue)]
  29.     private ?string $link null;
  30.     public function __construct()
  31.     {
  32.         $this->user = new ArrayCollection();
  33.     }
  34.     public function getId(): ?int
  35.     {
  36.         return $this->id;
  37.     }
  38.     public function getCategory(): ?string
  39.     {
  40.         return $this->category;
  41.     }
  42.     public function setCategory(?string $category): self
  43.     {
  44.         $this->category $category;
  45.         return $this;
  46.     }
  47.     public function getTitle(): ?string
  48.     {
  49.         return $this->title;
  50.     }
  51.     public function setTitle(?string $title): self
  52.     {
  53.         $this->title $title;
  54.         return $this;
  55.     }
  56.     public function getSubtitle(): ?string
  57.     {
  58.         return $this->subtitle;
  59.     }
  60.     public function setSubtitle(?string $subtitle): self
  61.     {
  62.         $this->subtitle $subtitle;
  63.         return $this;
  64.     }
  65.     public function getCreatedAt(): ?\DateTimeInterface
  66.     {
  67.         return $this->createdAt;
  68.     }
  69.     public function setCreatedAt(?\DateTimeInterface $createdAt): self
  70.     {
  71.         $this->createdAt $createdAt;
  72.         return $this;
  73.     }
  74.     public function isIsRead(): ?bool
  75.     {
  76.         return $this->isRead;
  77.     }
  78.     public function setIsRead(?bool $isRead): self
  79.     {
  80.         $this->isRead $isRead;
  81.         return $this;
  82.     }
  83.     /**
  84.      * @return Collection<int, User>
  85.      */
  86.     public function getUser(): Collection
  87.     {
  88.         return $this->user;
  89.     }
  90.     public function addUser(User $user): self
  91.     {
  92.         if (!$this->user->contains($user)) {
  93.             $this->user->add($user);
  94.         }
  95.         return $this;
  96.     }
  97.     public function removeUser(User $user): self
  98.     {
  99.         $this->user->removeElement($user);
  100.         return $this;
  101.     }
  102.     public function getNotificationHtml()
  103.     {
  104.         $category $this->category;
  105.         $icon '';
  106.         switch($category) {
  107.             case Constant::NOTIFICATION_UPDATE
  108.                 $icon '<i class="fa fa-2x fa-heart me-3" style="color: #e15426"></i>';
  109.             default:
  110.                 $icon '<i class="fa fa-2x fa-heart me-3" style="color: #e15426"></i>';
  111.                 break;
  112.         }
  113.         $isRead '';
  114.         if ($this->isRead) {
  115.             $isRead 'isread';
  116.         }
  117.         $html '<div class="d-flex align-items-center '.$isRead.'"><a href="'$this->link .'" target="_blank" style="position: absolute; width: 100%; height: 100%; left: 0;"></a>'.$icon.
  118.             '<div> <span>'$this->title .'</span>'.
  119.             '<div> <span>'$this->subtitle .'</span>'.
  120.             '</div></div>';
  121.         return $html;
  122.     }
  123.     public function getLink(): ?string
  124.     {
  125.         return $this->link;
  126.     }
  127.     public function setLink(?string $link): self
  128.     {
  129.         $this->link $link;
  130.         return $this;
  131.     }
  132.     public function markAsRead(): self
  133.     {
  134.         if ($this->isRead === null) {
  135.             $this->isRead false;
  136.             return $this;
  137.         } 
  138.         
  139.         $this->isRead true;
  140.         return $this;
  141.     }
  142. }