src/App/Entity/ConversationMessage/ConversationMessageAttachmentFile.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Entity\ConversationMessage;
  3. use App\Entity\User;
  4. use App\Entity\UserUploadedFile;
  5. use DateTime;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Vich\UploaderBundle\Entity\File;
  9. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  10. /**
  11. * @ORM\Entity()
  12. *
  13. * @ORM\Table(
  14. * name="conversation_message_attachment_files",
  15. * uniqueConstraints={
  16. *
  17. * @ORM\UniqueConstraint(name="file_name_unique_idx", columns={"file_name"})
  18. * },
  19. * indexes={
  20. *
  21. * @ORM\Index(name="batch_id_idx", columns={"batch_id"}),
  22. * }
  23. * )
  24. *
  25. * @Vich\Uploadable
  26. */
  27. class ConversationMessageAttachmentFile extends UserUploadedFile
  28. {
  29. /**
  30. * @var string
  31. *
  32. * @ORM\GeneratedValue(strategy="CUSTOM")
  33. *
  34. * @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
  35. *
  36. * @ORM\Column(name="id", type="guid")
  37. *
  38. * @ORM\Id
  39. */
  40. protected $id;
  41. /**
  42. * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="conversationMessageAttachmentFiles", cascade={"persist"})
  43. *
  44. * @ORM\JoinColumn(name="users_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
  45. */
  46. protected User $user;
  47. /**
  48. * @var File|null
  49. *
  50. * @Vich\UploadableField(mapping="conversation_message_attachment_file", fileNameProperty="fileName")
  51. */
  52. protected $file;
  53. /**
  54. * @var string
  55. *
  56. * @ORM\Column(name="file_name", type="string", length=255, nullable=false)
  57. */
  58. protected $fileName;
  59. /**
  60. * @var string
  61. *
  62. * @ORM\Column(name="original_file_name", type="string", length=255, nullable=false)
  63. */
  64. protected $originalFileName;
  65. public function getOriginalFileName(): string
  66. {
  67. return $this->originalFileName;
  68. }
  69. /**
  70. * @var string
  71. *
  72. * @ORM\Column(name="mime_type", type="string", length=255, nullable=false)
  73. */
  74. protected $mimeType;
  75. /**
  76. * @var string
  77. *
  78. * @ORM\Column(name="batch_id", type="string", length=64, nullable=false)
  79. */
  80. protected $batchId;
  81. /**
  82. * @var DateTime
  83. *
  84. * @ORM\Column(name="updated_at", type="datetime", nullable=false)
  85. */
  86. protected $updatedAt;
  87. /**
  88. * At the beginning of a conversationMessageAttachmentFile lifecycle, it is not yet attached to any
  89. * conversation message. That's because the attachment file is uploaded by the user while the user
  90. * writes a new conversation message, which is only created once the conversation message form is submitted.
  91. * Thus, this collection can be empty, and once one or more conversationMessage entities exist, these are assigned.
  92. *
  93. * It's a many-to-many relationship because multiple conversation messages can have the same attachment file, e.g.
  94. * when a user writes to many receivers at once, and also, one conversation message can have 0-n attachment files.
  95. *
  96. * @var ConversationMessage[]|Collection|array
  97. *
  98. * @ORM\ManyToMany(targetEntity="App\Entity\ConversationMessage\ConversationMessage", inversedBy="conversationMessageAttachmentFiles", cascade={"persist"})
  99. *
  100. * @ORM\JoinColumn(name="conversation_messages_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
  101. *
  102. * @ORM\JoinTable(
  103. * name="conversation_messages_conversation_message_attachment_files",
  104. * joinColumns={
  105. *
  106. * @ORM\JoinColumn(name="conversation_message_attachment_files_id", referencedColumnName="id", onDelete="CASCADE")
  107. * },
  108. * inverseJoinColumns={
  109. * @ORM\JoinColumn(name="conversation_messages_id", referencedColumnName="id", onDelete="CASCADE")
  110. * }
  111. * )
  112. */
  113. protected $conversationMessages;
  114. public function setConversationMessages(Collection $conversationMessages): void
  115. {
  116. $this->conversationMessages = $conversationMessages;
  117. }
  118. public function getConversationMessages(): Collection
  119. {
  120. return $this->conversationMessages;
  121. }
  122. }