<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiProperty;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Vich\UploaderBundle\Entity\File as EmbeddedFile;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity(repositoryClass="App\Repository\SurveyContributionFileUploadAnswerRepository")
* @Vich\Uploadable
*/
class SurveyContributionFileUploadAnswer
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({"surveyContribution:read"})
*/
private $id;
/**
* @var SurveyContributionQuestion
*
* @ORM\ManyToOne(targetEntity="App\Entity\SurveyContributionQuestion", inversedBy="contributionFileUploadAnswers")
* @ORM\JoinColumn(name="contribution_question_id", referencedColumnName="id",onDelete="SET NULL")
*/
private $contributionQuestion;
/**
* @var FileTypeAnswer
*
* @ORM\ManyToOne(targetEntity="App\Entity\FileTypeAnswer")
*/
private $fileTypeAnswer;
#[ApiProperty(iri: 'http://schema.org/contentUrl')]
#[Groups(['surveyContribution:read'])]
public ?string $uploadUrl = null;
/**
* @ORM\Embedded(class="Vich\UploaderBundle\Entity\File")
*/
private $upload;
/**
* @Vich\UploadableField(mapping="file_type_answer", fileNameProperty="upload.name", size="upload.size", mimeType="upload.mimeType", originalName="upload.originalName", dimensions="upload.dimensions")
* @Assert\File(maxSize="16M")
* @Assert\Expression(expression="this.getUploadFile() or this.getUpload().getName()")
*/
public ?File $uploadFile = null;
public function getId(): ?int
{
return $this->id;
}
public function getContributionQuestion(): ?SurveyContributionQuestion
{
return $this->contributionQuestion;
}
public function setContributionQuestion(?SurveyContributionQuestion $contributionQuestion): self
{
$this->contributionQuestion = $contributionQuestion;
return $this;
}
public function getFileTypeAnswer(): ?FileTypeAnswer
{
return $this->fileTypeAnswer;
}
public function setFileTypeAnswer(?FileTypeAnswer $fileTypeAnswer): self
{
$this->fileTypeAnswer = $fileTypeAnswer;
return $this;
}
public function getUpload(): EmbeddedFile
{
return $this->upload;
}
public function setUpload(EmbeddedFile $upload): self
{
$this->upload = $upload;
return $this;
}
/**
* @return mixed
*/
public function getUploadFile(): ?File
{
return $this->uploadFile;
}
/**
* @return FileTypeAnswer
*
* @throws \Exception
*/
public function setUploadFile(?File $uploadFile): self
{
$this->uploadFile = $uploadFile;
if ($uploadFile) {
$this->updatedAt = new \DateTime();
}
return $this;
}
}