<?php
namespace App\Core\Entity;
use App\Core\Entity\Curso;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Core\Repository\HorarioRepository")
*/
class Horario
{
const JSON_FIELDS = ['id', 'dia', 'horaInicio', 'horaFin', 'horarioDefinido', 'frecuencia', 'duracion'];
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $dia;
/**
* @ORM\Column(type="time", nullable=true)
*/
private $horaInicio;
/**
* @ORM\Column(type="time", nullable=true)
*/
private $horaFin;
/**
* @ORM\Column(type="boolean", nullable=false)
* True es definido, False es indefinido
*/
private $horarioDefinido;
/**
* @ORM\Column(type="integer", nullable=true)
* Cada cuanto se dan las clases en un mes (0 es indefinido)
*/
private $frecuencia;
/**
* @ORM\Column(type="integer", nullable=true)
* Cuantos minutos duran las clases
*/
private $duracion;
/**
* @ORM\ManyToOne(targetEntity="App\Core\Entity\Curso", inversedBy="horarios")
* @ORM\JoinColumn(nullable=false)
*/
private $curso;
public function getId(): ?int
{
return $this->id;
}
public function getDia(): ?int
{
return $this->dia;
}
public function setDia(int $dia): self
{
$this->dia = $dia;
return $this;
}
public function getHoraInicio(): ?\DateTimeInterface
{
return $this->horaInicio;
}
public function setHoraInicio(\DateTimeInterface $horaInicio): self
{
$this->horaInicio = $horaInicio;
return $this;
}
public function getHoraFin(): ?\DateTimeInterface
{
return $this->horaFin;
}
public function setHoraFin(\DateTimeInterface $horaFin): self
{
$this->horaFin = $horaFin;
return $this;
}
public function getCurso(): ?\App\Core\Entity\Curso
{
return $this->curso;
}
public function setCurso(?\App\Core\Entity\Curso $curso): self
{
$this->curso = $curso;
return $this;
}
public static function getNumeroDia(string $dia) {
switch ($dia) {
case 'Lunes':
return 1;
break;
case 'Martes':
return 2;
break;
case 'Miercoles':
return 3;
break;
case 'Jueves':
return 4;
break;
case 'Viernes':
return 5;
break;
case 'Sabado':
return 6;
break;
case 'Domingo':
return 0;
break;
}
}
public function getStringDia() : string {
switch ($this->dia) {
case 1:
if ($GLOBALS['request']->getLocale() === 'es') return 'Lunes';
else return 'Monday';
break;
case 2:
if ($GLOBALS['request']->getLocale() === 'es') return 'Martes';
else return 'Tuesday';
break;
case 3:
if ($GLOBALS['request']->getLocale() === 'es') return 'Miércoles';
else return 'Wednesday';
break;
case 4:
if ($GLOBALS['request']->getLocale() === 'es') return 'Jueves';
else return 'Thursday';
break;
case 5:
if ($GLOBALS['request']->getLocale() === 'es') return 'Viernes';
else return 'Friday';
break;
case 6:
if ($GLOBALS['request']->getLocale() === 'es') return 'Sábado';
else return 'Saturday';
break;
case 0:
if ($GLOBALS['request']->getLocale() === 'es') return 'Domingo';
else return 'Sunday';
break;
default:
return '';
break;
}
}
public function getSafeStringDia() : string {
switch ($this->dia) {
case 1:
return 'Lunes';
case 2:
return 'Martes';
case 3:
return 'Miercoles';
case 4:
return 'Jueves';
case 5:
return 'Viernes';
case 6:
return 'Sábado';
case 0:
return 'Domingo';
default:
return '';
}
}
public function getHorarioDefinido(): ?bool
{
return $this->horarioDefinido;
}
public function setHorarioDefinido(bool $horarioDefinido): self
{
$this->horarioDefinido = $horarioDefinido;
return $this;
}
public function getFrecuencia(): ?int
{
return $this->frecuencia;
}
public function setFrecuencia(int $frecuencia): self
{
$this->frecuencia = $frecuencia;
return $this;
}
public function getDuracion(): ?int
{
return $this->duracion;
}
public function setDuracion(int $duracion): self
{
$this->duracion = $duracion;
return $this;
}
}