<?php
namespace App\Entity;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="App\Repository\StoreManagementRequestRepository")
* @ORM\EntityListeners({"App\Listener\StoreManagementRequestListener"})
* @Vich\Uploadable
*/
class StoreManagementRequest
{
const STATE_NEW='new';
const STATE_VALIDATED='validated';
const STATE_REJECTED='rejected';
const TYPE_CREATION='creation';
const TYPE_ATTACHMENT='attachment';
const TYPE_SUPPRESSION='suppression';
public static function getAvailableStates(){
return [
self::STATE_NEW=>self::STATE_NEW,
self::STATE_VALIDATED=>self::STATE_VALIDATED,
self::STATE_REJECTED=>self::STATE_REJECTED,
];
}
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private int $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Store", inversedBy="managementRequests")
* @ORM\JoinColumn(nullable=false)
*/
private Store $store;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @ORM\JoinColumn(nullable=false)
* @Gedmo\Blameable(on="create")
*/
private User $user;
/**
* @ORM\Column(type="datetime")
* @Gedmo\Timestampable(on="create")
*/
private DateTime $created;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private ?DateTime $validated=null;
/**
* @ORM\Column(type="text", nullable=true)
*/
private ?string $message=null;
/**
* @ORM\Column(type="string", length=25, nullable=true)
*/
private ?string $siretNumber=null;
/**
* @ORM\Column(type="string", length=25)
*/
private string $state=self::STATE_NEW;
/**
* @ORM\Column(type="string", length=25)
*/
private string $type=self::TYPE_ATTACHMENT;
/**
* @var File|null
* @Assert\Image(
* mimeTypes={"image/jpeg", "application/pdf"}
* )
* @Vich\UploadableField(mapping="storeManagementRequest_kbis", fileNameProperty="filename")
*/
private ?File $kbisFile=null;
/**
* @var string|null
* @ORM\Column(type="string", length=255, nullable=true)
*/
private ?string $filename=null;
/**
* @ORM\Column(type="datetime")
* @Gedmo\Timestampable(on="update")
*/
private DateTime $updatedAt;
/**
* Représente l'entité par défault
* @return string
*/
public function __toString(){
return 'StoreManagementRequest '.' ['.$this->getId().']';
}
/**
* Représente l'entité dans le BO
* @return string
*/
public function getLabel(): string
{
return 'Demande de gestion du centre '.$this->getStore()->getName();
}
public function getId(): ?int
{
return $this->id;
}
public function getStore(): ?Store
{
return $this->store;
}
public function setStore(?Store $store): self
{
$this->store = $store;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getCreated(): ?\DateTimeInterface
{
return $this->created;
}
public function setCreated(\DateTimeInterface $created): self
{
$this->created = $created;
return $this;
}
public function getMessage(): ?string
{
return $this->message;
}
public function setMessage(?string $message): self
{
$this->message = $message;
return $this;
}
public function getState(): ?string
{
return $this->state;
}
public function setState(string $state): self
{
$this->state = $state;
return $this;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(string $type): self
{
$this->type = $type;
return $this;
}
/**
* @return mixed
*/
public function getValidated()
{
return $this->validated;
}
/**
* @param mixed $validated
*/
public function setValidated($validated): void
{
$this->validated = $validated;
}
/**
* @return mixed
*/
public function getSiretNumber()
{
return $this->siretNumber;
}
/**
* @param mixed $siretNumber
*/
public function setSiretNumber($siretNumber): void
{
$siretNumber = str_replace(' ', '', $siretNumber);
$this->siretNumber = $siretNumber;
}
/**
* @return null|File
*/
public function getKbisFile(): ?File
{
return $this->kbisFile;
}
/**
* @param File|null $kbisFile
* @return StoreManagementRequest
*/
public function setKbisFile(?File $kbisFile): StoreManagementRequest
{
$this->kbisFile = $kbisFile;
if($this->kbisFile instanceof UploadedFile) {
$this->updatedAt = new DateTime('now');
}
return $this;
}
/**
* @return null|string
*/
public function getFilename(): ?string
{
return $this->filename;
}
/**
* @param string|null $filename
* @return StoreManagementRequest
*/
public function setFilename(?string $filename): StoreManagementRequest
{
$this->filename = $filename;
return $this;
}
}