<?php
namespace App\Entity;
use App\Entity\Profile\JobseekerProfile;
use App\Utility\DateTimeUtility;
use App\Utility\GuidUtility;
use App\VichNamer\SanitizingOriginalNameNamer;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity
*
* @ORM\Table(
* name="jobseeker_profile_additional_files",
* uniqueConstraints={
*
* @ORM\UniqueConstraint(name="file_name_unique_idx", columns={"file_name"})
* }
* )
*
* @Vich\Uploadable
*/
class JobseekerProfileAdditionalFile
{
/**
* @var string
*
* @ORM\GeneratedValue(strategy="CUSTOM")
*
* @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
*
* @ORM\Column(name="id", type="guid")
*
* @ORM\Id
*/
protected $id;
public function setId(string $id): void
{
GuidUtility::validOrThrow($id);
$this->id = $id;
}
public function getId()
{
return $this->id;
}
/**
* @var JobseekerProfile
*
* @ORM\ManyToOne(targetEntity="App\Entity\Profile\JobseekerProfile", inversedBy="additionalFiles", cascade={"persist"})
*
* @ORM\JoinColumn(name="jobseeker_profiles_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
*/
protected $jobseekerProfile;
public function setJobseekerProfile(JobseekerProfile $jobseekerProfile): void
{
$this->jobseekerProfile = $jobseekerProfile;
}
public function getJobseekerProfile(): JobseekerProfile
{
return $this->jobseekerProfile;
}
/**
* @var File
*
* @Vich\UploadableField(mapping="jobseeker_profile_additional_file", fileNameProperty="fileName")
*/
protected $file;
public function setFile(?File $file = null)
{
$this->file = $file;
if ($file) {
// It is required that at least one field changes if you are using doctrine
// otherwise the event listeners won't be called and the file is lost
$this->updatedAt = DateTimeUtility::createDateTimeUtc();
}
}
public function getFile()
{
return $this->file;
}
/**
* @var string
*
* @ORM\Column(name="file_name", type="string", length=255, nullable=false)
*/
protected $fileName;
public function setFileName($fileName)
{
$this->fileName = $fileName;
if (!is_null($fileName)) {
$this->setOriginalFileName(substr($fileName, strpos($fileName, '_') + 1));
}
}
public function getFileName()
{
return $this->fileName;
}
/**
* @var string
*
* @ORM\Column(name="original_file_name", type="string", length=255, nullable=false)
*/
protected $originalFileName;
public function setOriginalFileName($originalFileName)
{
$this->originalFileName = SanitizingOriginalNameNamer::sanitize($originalFileName, true);
}
public function getOriginalFileName()
{
return $this->originalFileName;
}
/**
* @var string
*
* @ORM\Column(name="mime_type", type="string", length=255, nullable=false)
*/
protected $mimeType;
public function setMimeType(string $mimeType)
{
$this->mimeType = $mimeType;
}
public function getMimeType()
{
return $this->mimeType;
}
/**
* @var DateTime
*
* @ORM\Column(name="updated_at", type="datetime", nullable=false)
*/
protected $updatedAt;
public function setUpdatedAt(DateTime $dateTime): void
{
$this->updatedAt = $dateTime;
}
public function getUpdatedAt(): DateTime
{
return $this->updatedAt;
}
}