src/Entity/Message.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  4. use ApiPlatform\Metadata\ApiFilter;
  5. use ApiPlatform\Metadata\ApiResource;
  6. use ApiPlatform\Metadata\GetCollection;
  7. use ApiPlatform\Metadata\Post;
  8. use ApiPlatform\Metadata\Put;
  9. use App\Controller\Action\DiscussionListController;
  10. use App\Controller\Action\DiscussionPostController;
  11. use App\Controller\Action\MessagePostController;
  12. use App\Repository\MessageRepository;
  13. use App\State\MessageGetColletionProcessor;
  14. use Doctrine\Common\Collections\ArrayCollection;
  15. use Doctrine\ORM\Mapping as ORM;
  16. use Doctrine\Common\Collections\Collection;
  17. use Symfony\Component\Serializer\Annotation\Groups;
  18. #[ORM\Entity(repositoryClassMessageRepository::class)]
  19. #[ApiResource(
  20.     operations: [
  21.         new Put(),
  22.         new Post(
  23.             uriTemplate'messages/new_message',
  24.             controllerMessagePostController::class,
  25.             readfalse,
  26.             writefalse,
  27.             name'_api_/messages/new_message'
  28.         ),
  29.         new GetCollection(),
  30.     ],
  31.     normalizationContext: ['groups' => ['message.get','discussion.get']],
  32.     denormalizationContext: ['groups' => ['message.write']]
  33. )]
  34. #[ApiFilter(
  35.     SearchFilter::class,
  36.     properties: [
  37.         'discussion' => 'exact',
  38.         'discussion.user' => 'exact',
  39.     ]
  40. )]
  41. class Message
  42. {
  43.     #[ORM\Id]
  44.     #[ORM\GeneratedValue]
  45.     #[ORM\Column(type"integer")]
  46.     #[Groups(['message.write','message.get'])]
  47.     private int $id;
  48.     #[ORM\ManyToOne(targetEntity"Discussion")]
  49.     #[Groups(['message.write','message.get''discussion.get'])]
  50.     private Discussion $discussion;
  51.     #[ORM\ManyToOne(targetEntity"User")]
  52.     #[Groups(['message.write','message.get'])]
  53.     private User $sender;
  54.     #[ORM\Column(type"text")]
  55.     #[Groups(['message.write','message.get'])]
  56.     private string $messageText;
  57.     #[ORM\Column(type"datetime")]
  58.     #[Groups(['message.write','message.get'])]
  59.     private \DateTimeInterface $createdAt;
  60.     #[ORM\OneToMany(mappedBy'message'targetEntityMessageFile::class)]
  61.     #[Groups(['message.write','message.get'])]
  62.     private Collection $messageFiles;
  63.     #[ORM\Column]
  64.     #[Groups(['message.write','message.get'])]
  65.     private ?bool $isHotlineReaded false;
  66.     public function __construct()
  67.     {
  68.         $this->createdAt = new \DateTimeImmutable();
  69.         $this->messageFiles = new ArrayCollection();
  70.     }
  71.     /**
  72.      * @return int
  73.      */
  74.     public function getId(): int
  75.     {
  76.         return $this->id;
  77.     }
  78.     /**
  79.      * @return Discussion
  80.      */
  81.     public function getDiscussion(): Discussion
  82.     {
  83.         return $this->discussion;
  84.     }
  85.     /**
  86.      * @param Discussion $discussion
  87.      */
  88.     public function setDiscussion(Discussion $discussion): void
  89.     {
  90.         $this->discussion $discussion;
  91.     }
  92.     /**
  93.      * @return User
  94.      */
  95.     public function getSender(): User
  96.     {
  97.         return $this->sender;
  98.     }
  99.     /**
  100.      * @param User $sender
  101.      */
  102.     public function setSender(User $sender): void
  103.     {
  104.         $this->sender $sender;
  105.     }
  106.     /**
  107.      * @return string
  108.      */
  109.     public function getMessageText(): string
  110.     {
  111.         return $this->messageText;
  112.     }
  113.     /**
  114.      * @param string $messageText
  115.      */
  116.     public function setMessageText(string $messageText): void
  117.     {
  118.         $this->messageText $messageText;
  119.     }
  120.     /**
  121.      * @return \DateTimeInterface
  122.      */
  123.     public function getCreatedAt(): \DateTimeInterface
  124.     {
  125.         return $this->createdAt;
  126.     }
  127.     /**
  128.      * @param \DateTimeInterface $createdAt
  129.      */
  130.     public function setCreatedAt(\DateTimeInterface $createdAt): void
  131.     {
  132.         $this->createdAt $createdAt;
  133.     }
  134.     /**
  135.      * @return Collection<int, MessageFile>
  136.      */
  137.     public function getMessageFiles(): Collection
  138.     {
  139.         return $this->messageFiles;
  140.     }
  141.     public function addMessageFile(MessageFile $messageFile): self
  142.     {
  143.         if (!$this->messageFiles->contains($messageFile)) {
  144.             $this->messageFiles->add($messageFile);
  145.             $messageFile->setMessage($this);
  146.         }
  147.         return $this;
  148.     }
  149.     public function removeMessageFile(MessageFile $messageFile): self
  150.     {
  151.         if ($this->messageFiles->removeElement($messageFile)) {
  152.             // set the owning side to null (unless already changed)
  153.             if ($messageFile->getMessage() === $this) {
  154.                 $messageFile->setMessage(null);
  155.             }
  156.         }
  157.         return $this;
  158.     }
  159.     public function isHotlineReaded(): ?bool
  160.     {
  161.         return $this->isHotlineReaded;
  162.     }
  163.     public function setIsHotlineReaded(bool $isHotlineReaded): self
  164.     {
  165.         $this->isHotlineReaded $isHotlineReaded;
  166.         return $this;
  167.     }
  168. }