<?php
namespace App\Entity;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="disponibilidad_diaria")
*/
class DisponibilidadDiaria extends \App\Entity\BaseEntity
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @Groups({"recurso_read", "recurso_write"})
*/
private $id;
/**
* @ORM\Column(type="smallint", nullable=true, name="dia_semana")
* @Groups({"recurso_read", "recurso_write"})
* @Assert\NotBlank(message="Debe seleccionar un día de la semana")
* @Assert\Range(min=1, max=7, minMessage="El día debe estar entre 1 y 7", maxMessage="El día debe estar entre 1 y 7")
*/
private $diaSemana;
/**
* @ORM\Column(type="time", nullable=true, name="hora_inicio")
* @Groups({"recurso_read", "recurso_write"})
* @Assert\NotBlank(message="Debe especificar una hora de inicio")
*/
private $horaInicio;
/**
* @ORM\Column(type="time", nullable=true, name="hora_fin")
* @Groups({"recurso_read", "recurso_write"})
* @Assert\NotBlank(message="Debe especificar una hora de fin")
*/
private $horaFin;
/**
* @ORM\ManyToOne(targetEntity=\App\Entity\Recurso::class, inversedBy="disponibilidadDiaria")
* @ORM\JoinColumn(name="recurso_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $recurso;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"recurso_read"})
*/
private $fechaCreacion;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"recurso_read"})
*/
private $fechaActualizacion;
public function __construct()
{
$this->fechaCreacion = new \DateTime();
$this->fechaActualizacion = new \DateTime();
}
public function getId(): ?int
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
return $this;
}
public function getDiaSemana(): ?int
{
return $this->diaSemana;
}
public function setDiaSemana(?int $diaSemana): static
{
$this->diaSemana = $diaSemana;
return $this;
}
public function getHoraInicio(): ?\DateTime
{
return $this->horaInicio;
}
public function setHoraInicio(?\DateTime $horaInicio): static
{
$this->horaInicio = $horaInicio;
return $this;
}
public function getHoraFin(): ?\DateTime
{
return $this->horaFin;
}
public function setHoraFin(?\DateTime $horaFin): static
{
$this->horaFin = $horaFin;
return $this;
}
public function getRecurso(): ?Recurso
{
return $this->recurso;
}
public function setRecurso(?Recurso $recurso): static
{
$this->recurso = $recurso;
return $this;
}
public function getFechaCreacion(): ?\DateTime
{
return $this->fechaCreacion;
}
public function setFechaCreacion(?\DateTime $fechaCreacion): static
{
$this->fechaCreacion = $fechaCreacion;
return $this;
}
public function getFechaActualizacion(): ?\DateTime
{
return $this->fechaActualizacion;
}
public function setFechaActualizacion(?\DateTime $fechaActualizacion): static
{
$this->fechaActualizacion = $fechaActualizacion;
return $this;
}
public function __toString(): string
{
$dias = ['', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo'];
$diaTexto = isset($dias[$this->diaSemana]) ? $dias[$this->diaSemana] : "Día {$this->diaSemana}";
$horaInicioTexto = $this->horaInicio ? $this->horaInicio->format('H:i') : '--:--';
$horaFinTexto = $this->horaFin ? $this->horaFin->format('H:i') : '--:--';
return "{$diaTexto} de {$horaInicioTexto} a {$horaFinTexto}";
}
}