src/App/Entity/JobseekerProfileAdditionalFile.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Profile\JobseekerProfile;
  4. use App\Utility\DateTimeUtility;
  5. use App\Utility\GuidUtility;
  6. use App\VichNamer\SanitizingOriginalNameNamer;
  7. use DateTime;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Symfony\Component\HttpFoundation\File\File;
  10. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  11. /**
  12. * @ORM\Entity
  13. *
  14. * @ORM\Table(
  15. * name="jobseeker_profile_additional_files",
  16. * uniqueConstraints={
  17. *
  18. * @ORM\UniqueConstraint(name="file_name_unique_idx", columns={"file_name"})
  19. * }
  20. * )
  21. *
  22. * @Vich\Uploadable
  23. */
  24. class JobseekerProfileAdditionalFile
  25. {
  26. /**
  27. * @var string
  28. *
  29. * @ORM\GeneratedValue(strategy="CUSTOM")
  30. *
  31. * @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
  32. *
  33. * @ORM\Column(name="id", type="guid")
  34. *
  35. * @ORM\Id
  36. */
  37. protected $id;
  38. public function setId(string $id): void
  39. {
  40. GuidUtility::validOrThrow($id);
  41. $this->id = $id;
  42. }
  43. public function getId()
  44. {
  45. return $this->id;
  46. }
  47. /**
  48. * @var JobseekerProfile
  49. *
  50. * @ORM\ManyToOne(targetEntity="App\Entity\Profile\JobseekerProfile", inversedBy="additionalFiles", cascade={"persist"})
  51. *
  52. * @ORM\JoinColumn(name="jobseeker_profiles_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
  53. */
  54. protected $jobseekerProfile;
  55. public function setJobseekerProfile(JobseekerProfile $jobseekerProfile): void
  56. {
  57. $this->jobseekerProfile = $jobseekerProfile;
  58. }
  59. public function getJobseekerProfile(): JobseekerProfile
  60. {
  61. return $this->jobseekerProfile;
  62. }
  63. /**
  64. * @var File
  65. *
  66. * @Vich\UploadableField(mapping="jobseeker_profile_additional_file", fileNameProperty="fileName")
  67. */
  68. protected $file;
  69. public function setFile(?File $file = null)
  70. {
  71. $this->file = $file;
  72. if ($file) {
  73. // It is required that at least one field changes if you are using doctrine
  74. // otherwise the event listeners won't be called and the file is lost
  75. $this->updatedAt = DateTimeUtility::createDateTimeUtc();
  76. }
  77. }
  78. public function getFile()
  79. {
  80. return $this->file;
  81. }
  82. /**
  83. * @var string
  84. *
  85. * @ORM\Column(name="file_name", type="string", length=255, nullable=false)
  86. */
  87. protected $fileName;
  88. public function setFileName($fileName)
  89. {
  90. $this->fileName = $fileName;
  91. if (!is_null($fileName)) {
  92. $this->setOriginalFileName(substr($fileName, strpos($fileName, '_') + 1));
  93. }
  94. }
  95. public function getFileName()
  96. {
  97. return $this->fileName;
  98. }
  99. /**
  100. * @var string
  101. *
  102. * @ORM\Column(name="original_file_name", type="string", length=255, nullable=false)
  103. */
  104. protected $originalFileName;
  105. public function setOriginalFileName($originalFileName)
  106. {
  107. $this->originalFileName = SanitizingOriginalNameNamer::sanitize($originalFileName, true);
  108. }
  109. public function getOriginalFileName()
  110. {
  111. return $this->originalFileName;
  112. }
  113. /**
  114. * @var string
  115. *
  116. * @ORM\Column(name="mime_type", type="string", length=255, nullable=false)
  117. */
  118. protected $mimeType;
  119. public function setMimeType(string $mimeType)
  120. {
  121. $this->mimeType = $mimeType;
  122. }
  123. public function getMimeType()
  124. {
  125. return $this->mimeType;
  126. }
  127. /**
  128. * @var DateTime
  129. *
  130. * @ORM\Column(name="updated_at", type="datetime", nullable=false)
  131. */
  132. protected $updatedAt;
  133. public function setUpdatedAt(DateTime $dateTime): void
  134. {
  135. $this->updatedAt = $dateTime;
  136. }
  137. public function getUpdatedAt(): DateTime
  138. {
  139. return $this->updatedAt;
  140. }
  141. }