<?php
namespace App\CasinoBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use App\CasinoBundle\Enum\ScreenshotDeviceTypeEnum;
use App\CmsBundle\Entity\PathTrait;
use Symfony\Component\Validator\Constraints as Assert;
/**
* CasinoScreenshot
*
* @ORM\Table(
* name="casino_screenshot",
* indexes={
* @ORM\Index(name="casino_screenshot_index", columns={"casino_id"}),
* @ORM\Index(name="casino_screenshot_position_index", columns={"position"}),
* @ORM\Index(name="casino_screenshot_type_index", columns={"type"})
* }
* )
* @ORM\Entity(
* repositoryClass="App\CasinoBundle\Repository\CasinoScreenshotRepository"
* )
* @ORM\HasLifecycleCallbacks()
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="one_day")
*/
class CasinoScreenshot
{
use PathTrait;
const SERVER_PATH_FOLDER = '/tmp';
/**
* @var integer
*
* @ORM\Id
* @ORM\Column(name="id", type="bigint", nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
*/
private int $id;
/**
* @var Casino
* @ORM\ManyToOne(targetEntity="Casino", inversedBy="casinoScreenshots")
* @ORM\JoinColumn(name="casino_id", referencedColumnName="id", nullable=false)
*/
private Casino $casino;
/**
* @var ?integer
* @ORM\Column(name="position", type="integer", nullable=true)
*/
private ?int $position;
/**
* @var integer
* @ORM\Column(name="type", type="integer", nullable=false)
*/
private int $type;
/**
* @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;
}
/**
* @param int $id
* @return void
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return Casino|null
*/
public function getCasino(): ?Casino
{
return $this->casino;
}
/**
* @param Casino $casino
* @return $this
*/
public function setCasino(Casino $casino): self
{
$this->casino = $casino;
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;
}
/**
* @param int $type
* @return $this
*/
public function setType(int $type): self
{
ScreenshotDeviceTypeEnum::assertExists($type);
$this->type = $type;
return $this;
}
/**
* @return int
*/
public function getType(): int
{
return $this->type;
}
/**
* @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);
}
}
/**
* @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;
}
}