<?php
namespace App\CasinoBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use App\CmsBundle\Entity\PathTrait;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Validator\Constraints as Assert;
/**
* SlotScreenshot
*
* @ORM\Table(
* name="slot_screenshot",
* indexes={
* @ORM\Index(name="slot_screenshot_position_index", columns={"position"})
* }
* )
* @ORM\Entity(
* repositoryClass="App\CasinoBundle\Repository\SlotScreenshotRepository"
* )
* @ORM\HasLifecycleCallbacks()
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="one_day")
*/
class SlotScreenshot
{
use PathTrait;
const SERVER_PATH_FOLDER = '/tmp';
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private ?int $id;
/**
* @var Slot
* @ORM\ManyToOne(targetEntity="Slot", inversedBy="slotScreenshots")
* @ORM\JoinColumn(name="slot_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
*/
private Slot $slot;
/**
* @var ?integer
* @ORM\Column(name="position", type="integer", nullable=true)
*/
private ?int $position;
/**
* @Assert\All({
* @Assert\File(
* mimeTypes={ "image/jpeg" }
* )
* })
*/
private array $files;
/**
* @var string
*/
private string $filename;
/**
* @var ?string
*/
private ?string $site = null;
/**
* @return string
*/
public function __toString(): string
{
return $this->path != null ? $this->path : '';
}
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return Slot|null
*/
public function getSlot(): ?Slot
{
return $this->slot;
}
/**
* @param Slot $slot
* @return $this
*/
public function setSlot(Slot $slot): self
{
$this->slot = $slot;
return $this;
}
/**
* @return ?string
*/
public function getSite(): ?string
{
return $this->site;
}
/**
* @param ?string $site
* @return $this
*/
public function setSite(?string $site): self
{
$this->site = $site;
return $this;
}
/**
* @return ?int
*/
public function getPosition(): ?int
{
return $this->position ?? 0;
}
/**
* @param int|null $position
* @return $this
*/
public function setPosition(?int $position): self
{
$this->position = $position;
return $this;
}
/**
* @return array
*/
public function getFiles(): array
{
return $this->files;
}
public function addFile(string $file): void
{
$this->files[] = $file;
}
/**
* @param array $files
* @return void
*/
public function setFiles(array $files): void
{
$this->files = $files;
}
/**
* @return void
*/
public function upload(): void
{
foreach ($this->files as $file) {
$filename = md5(uniqid()) . '.' . $file->getClientOriginalExtension();
$file->move(self::SERVER_PATH_FOLDER, $filename);
$this->addFile($filename);
}
}
}