<?php
namespace App\Entity\App;
use App\Utils\CommonFunctions;
use App\Utils\Constants;
use App\Utils\Traits\ActivoTrait;
use App\Utils\Traits\PosicionTrait;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Validator\Constraints as Assert;
/**
* AreaGobierno
*
* @ORM\Table(name="area_gobierno", indexes={@ORM\Index(name="IDX_NOMBRE", columns={"nombre"})})
* @ORM\Entity(repositoryClass="App\Repository\App\AreaGobiernoRepository")
* @UniqueEntity(
* fields="nombre",
* errorPath="nombre",
* message="El nombre ya existe"
* )
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
* @ORM\HasLifecycleCallbacks()
*/
class AreaGobierno
{
const ASPECT_RATIO = array('width' => 1, 'height' => 1);
/**
* @var integer|null
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
private $id;
/**
* @var File|null
*
* @Assert\Image(
* mimeTypes={"image/svg+xml"},
* mimeTypesMessage="El tipo de imagen tiene que ser SVG",
* maxSize="2M"
* )
*/
private $file;
/**
* @var string|null
*
* @ORM\Column(name="nombre", type="string", length=255)
* @Assert\NotBlank(message="El valor es requerido")
* @Assert\Length(
* max = 255,
* maxMessage = "La cantidad maxima es {{ limit }} caracteres"
* )
*/
private $nombre;
/**
* @var string|null
*
* @ORM\Column(name="descripcion", type="string", length=255, nullable=true)
* @Assert\Length(
* max = 255,
* maxMessage = "La cantidad maxima es {{ limit }} caracteres"
* )
*/
private $descripcion;
/**
* @var string|null
*
* @ORM\Column(name="link", type="string", length=255)
* @Assert\NotBlank(message="El valor es requerido")
* @Assert\Length(
* max = 255,
* maxMessage = "La cantidad maxima es {{ limit }} caracteres"
* )
*/
private $link;
/**
* @var string|null
*
* @ORM\Column(name="imagen", type="string", length=255)
* @Assert\Length(
* max = 255,
* maxMessage = "La cantidad maxima es {{ limit }} caracteres"
* )
*/
private $imagen;
use ActivoTrait;
use PosicionTrait;
use TimestampableEntity;
use SoftDeleteableEntity;
/**
* @var boolean
*
* @ORM\Column(name="visible", type="boolean")
* @Assert\Type(
* type="bool",
* message="El valor debe ser un bool"
* )
*/
private $visible = true;
/**
* @return bool
*/
public function isVisible(): bool
{
return $this->visible;
}
/**
* @param bool $visible
*/
public function setVisible(bool $visible): void
{
$this->visible = $visible;
}
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return File|null
*/
public function getFile(): ?File
{
return $this->file;
}
/**
* @param File|null $file
*/
public function setFile(?File $file): void
{
$this->file = $file;
}
/**
* @return string|null
*/
public function getNombre(): ?string
{
return $this->nombre;
}
/**
* @param string|null $nombre
*/
public function setNombre(?string $nombre): void
{
$this->nombre = $nombre;
}
/**
* @return string|null
*/
public function getDescripcion(): ?string
{
return $this->descripcion;
}
/**
* @param string|null $descripcion
*/
public function setDescripcion(?string $descripcion): void
{
$this->descripcion = $descripcion;
}
/**
* @return string|null
*/
public function getLink(): ?string
{
return $this->link;
}
/**
* @param string|null $link
*/
public function setLink(?string $link): void
{
$this->link = $link;
}
/**
* @return string|null
*/
public function getImagen(): ?string
{
return $this->imagen;
}
/**
* @param string|null $imagen
*/
public function setImagen(?string $imagen): void
{
$this->imagen = $imagen;
}
private function getDirectoryFile()
{
$class = CommonFunctions::getClassMethod(__CLASS__);
$class = CommonFunctions::camelCaseToSnakeCase($class, '-');
$dir = CommonFunctions::getParameter('BASE_PATH_IMAGENES');
return CommonFunctions::getPathOrURLWithSlash($dir) . $class;
}
public function getAbsolutePath()
{
return CommonFunctions::getAbsolutePath($this->getDirectoryFile(), $this->getImagen());
}
public function guardarImagen()
{
$name = 'imagen_area_gobierno_' . $this->getId();
$filename = CommonFunctions::saveUploadedFile($this->getFile(), $this->getDirectoryFile(), $name);
if ($filename && $filename != $this->getImagen()) {
$this->setImagen($filename);
}
}
/**
* @ORM\PrePersist
*/
public function prePersist()
{
$this->setImagen(Constants::NO_IMAGE_ICON);
}
/**
* @ORM\PreRemove
*/
public function preRemove()
{
CommonFunctions::removeFile($this->getAbsolutePath());
}
public function getImagenBase64()
{
$image = null;
if ($this->getId()) {
$image = CommonFunctions::getBase64OfImage($this->getAbsolutePath(), Constants::DEFAULT_IMAGE);
}
return $image;
}
public function getValidLink()
{
$baseUrl = CommonFunctions::getParameterUrl('BASE_URL_DRUPAL', true);
return preg_replace('/^BASE_URL/', '', preg_replace('/^BASE_URL\//', $baseUrl, 'BASE_URL' . $this->getLink()));
}
public function __toString()
{
return $this->getNombre();
}
}