src/Entity/JornadaCurso.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\JornadaCursoRepository;
  4. use DateTime;
  5. use DateTimeImmutable;
  6. use DateTimeInterface;
  7. use Doctrine\Common\Collections\ArrayCollection;
  8. use Doctrine\Common\Collections\Collection;
  9. use Doctrine\DBAL\Types\Types;
  10. use Doctrine\ORM\Mapping as ORM;
  11. use Symfony\Component\Validator\Constraints as Assert;
  12. #[ORM\Entity(repositoryClass: JornadaCursoRepository::class)]
  13. class JornadaCurso
  14. {
  15. #[ORM\Id]
  16. #[ORM\GeneratedValue]
  17. #[ORM\Column]
  18. private ?int $id = null;
  19. #[Assert\NotBlank]
  20. #[ORM\Column(length: 255)]
  21. private ?string $codigoMinisterio;
  22. #[Assert\NotBlank]
  23. #[ORM\Column(length: 255)]
  24. private ?string $nombre;
  25. #[Assert\NotBlank]
  26. #[ORM\Column(type: Types::DATETIME_MUTABLE)]
  27. private ?DateTimeInterface $fechaHora;
  28. #[Assert\NotBlank]
  29. #[Assert\LessThanOrEqual(propertyPath: 'fechaFinInscripciones')]
  30. #[ORM\Column(type: Types::DATE_MUTABLE)]
  31. private ?DateTimeInterface $fechaInicioInscripciones;
  32. #[Assert\NotBlank]
  33. #[Assert\GreaterThanOrEqual(propertyPath: 'fechaInicioInscripciones')]
  34. #[ORM\Column(type: Types::DATE_MUTABLE)]
  35. private ?DateTimeInterface $fechaFinInscripciones;
  36. #[Assert\NotBlank]
  37. #[ORM\Column(length: 255)]
  38. private ?string $lugar;
  39. #[Assert\NotBlank]
  40. #[ORM\ManyToOne(inversedBy: 'jornadasCursos')]
  41. #[ORM\JoinColumn(nullable: false)]
  42. private ?Localidad $localidad = null;
  43. #[Assert\NotBlank]
  44. #[Assert\PositiveOrZero]
  45. #[ORM\Column]
  46. private ?int $numPlazas = 0;
  47. #[Assert\NotBlank]
  48. #[ORM\Column(type: Types::TEXT)]
  49. private ?string $descripcion;
  50. #[Assert\NotBlank]
  51. #[Assert\PositiveOrZero]
  52. #[ORM\Column]
  53. private ?float $importe = 0;
  54. // Pendiente => 0
  55. // Completada => 1
  56. #[Assert\NotBlank]
  57. #[ORM\Column(type: Types::SMALLINT)]
  58. private ?int $estado = 0;
  59. #[ORM\Column]
  60. private ?bool $visible = true;
  61. #[ORM\Column]
  62. private ?bool $borrado = false;
  63. #[ORM\Column(length: 255, nullable: true)]
  64. private ?string $imagen = null;
  65. #[ORM\Column(type: 'string', length: 255, nullable: true)]
  66. private ?string $seoTitle = null;
  67. #[ORM\Column(type: 'string', length: 255, nullable: true)]
  68. private ?string $seoDescription = null;
  69. #[ORM\Column(type: 'string', length: 255, nullable: true)]
  70. private ?string $seoKeywords = null;
  71. #[Assert\NotBlank]
  72. #[Assert\Regex(pattern: '/^[a-z0-9]+(?:-[a-z0-9]+)*$/')]
  73. #[ORM\Column(type: 'string', length: 255)]
  74. private ?string $slug = null;
  75. #[ORM\OneToMany(mappedBy: 'jornadaCurso', targetEntity: InscripcionUsuarioJornadaCurso::class)]
  76. private Collection $inscripcionesUsuariosJornadasCursos;
  77. #[ORM\Column(type: Types::DATETIME_MUTABLE)]
  78. private ?DateTimeInterface $fechaHoraCreacion = null;
  79. public function __construct()
  80. {
  81. $this->inscripcionesUsuariosJornadasCursos = new ArrayCollection();
  82. $this->fechaHoraCreacion = new DateTime();
  83. }
  84. public function getId(): ?int
  85. {
  86. return $this->id;
  87. }
  88. public function getCodigoMinisterio(): ?string
  89. {
  90. return $this->codigoMinisterio;
  91. }
  92. public function setCodigoMinisterio(?string $codigoMinisterio): static
  93. {
  94. $this->codigoMinisterio = $codigoMinisterio;
  95. return $this;
  96. }
  97. public function getNombre(): ?string
  98. {
  99. return $this->nombre;
  100. }
  101. public function setNombre(?string $nombre): static
  102. {
  103. $this->nombre = $nombre;
  104. return $this;
  105. }
  106. public function getFechaHora(): ?DateTimeInterface
  107. {
  108. return $this->fechaHora;
  109. }
  110. public function setFechaHora(?DateTimeInterface $fechaHora): static
  111. {
  112. $this->fechaHora = $fechaHora;
  113. return $this;
  114. }
  115. public function getFechaInicioInscripciones(): ?DateTimeInterface
  116. {
  117. return $this->fechaInicioInscripciones;
  118. }
  119. public function setFechaInicioInscripciones(?DateTimeInterface $fechaInicioInscripciones): static
  120. {
  121. $this->fechaInicioInscripciones = $fechaInicioInscripciones;
  122. return $this;
  123. }
  124. public function getFechaFinInscripciones(): ?DateTimeInterface
  125. {
  126. return $this->fechaFinInscripciones;
  127. }
  128. public function setFechaFinInscripciones(?DateTimeInterface $fechaFinInscripciones): static
  129. {
  130. $this->fechaFinInscripciones = $fechaFinInscripciones;
  131. return $this;
  132. }
  133. public function getLugar(): ?string
  134. {
  135. return $this->lugar;
  136. }
  137. public function setLugar(?string $lugar): static
  138. {
  139. $this->lugar = $lugar;
  140. return $this;
  141. }
  142. public function getLocalidad(): ?Localidad
  143. {
  144. return $this->localidad;
  145. }
  146. public function setLocalidad(?Localidad $localidad): static
  147. {
  148. $this->localidad = $localidad;
  149. return $this;
  150. }
  151. public function getNumPlazas(): ?int
  152. {
  153. return $this->numPlazas;
  154. }
  155. public function setNumPlazas(?int $numPlazas): static
  156. {
  157. $this->numPlazas = $numPlazas;
  158. return $this;
  159. }
  160. public function getDescripcion(): ?string
  161. {
  162. return $this->descripcion;
  163. }
  164. public function setDescripcion(?string $descripcion): static
  165. {
  166. $this->descripcion = $descripcion;
  167. return $this;
  168. }
  169. public function getImporte(): ?float
  170. {
  171. return $this->importe;
  172. }
  173. public function setImporte(?float $importe): static
  174. {
  175. $this->importe = $importe;
  176. return $this;
  177. }
  178. public function getEstado(): ?int
  179. {
  180. return $this->estado;
  181. }
  182. public function setEstado(?int $estado): static
  183. {
  184. $this->estado = $estado;
  185. return $this;
  186. }
  187. public function isVisible(): ?bool
  188. {
  189. return $this->visible;
  190. }
  191. public function setVisible(?bool $visible): static
  192. {
  193. $this->visible = $visible;
  194. return $this;
  195. }
  196. public function isBorrado(): ?bool
  197. {
  198. return $this->borrado;
  199. }
  200. public function setBorrado(?bool $borrado): static
  201. {
  202. $this->borrado = $borrado;
  203. return $this;
  204. }
  205. public function getImagen(): ?string
  206. {
  207. return $this->imagen;
  208. }
  209. public function setImagen(?string $imagen): static
  210. {
  211. $this->imagen = $imagen;
  212. return $this;
  213. }
  214. public function getSeoTitle(): ?string
  215. {
  216. return $this->seoTitle;
  217. }
  218. public function setSeoTitle(?string $seoTitle): self
  219. {
  220. $this->seoTitle = $seoTitle;
  221. return $this;
  222. }
  223. public function getSeoDescription(): ?string
  224. {
  225. return $this->seoDescription;
  226. }
  227. public function setSeoDescription(?string $seoDescription): self
  228. {
  229. $this->seoDescription = $seoDescription;
  230. return $this;
  231. }
  232. public function getSeoKeywords(): ?string
  233. {
  234. return $this->seoKeywords;
  235. }
  236. public function setSeoKeywords(?string $seoKeywords): self
  237. {
  238. $this->seoKeywords = $seoKeywords;
  239. return $this;
  240. }
  241. public function getSlug(): ?string
  242. {
  243. return $this->slug;
  244. }
  245. public function setSlug(string $slug): static
  246. {
  247. $this->slug = $slug;
  248. return $this;
  249. }
  250. // Comprueba si $now esta dentro de las fechas de inicio y fin de solicitud de inscripción del curso.
  251. public function estaInscripcionAbierta(DateTimeInterface $now = null): bool
  252. {
  253. $now ??= new DateTimeImmutable();
  254. if ($this->getFechaInicioInscripciones() && $now < $this->getFechaInicioInscripciones()) {
  255. return false;
  256. }
  257. if ($this->getFechaFinInscripciones() && $now > $this->getFechaFinInscripciones()) {
  258. return false;
  259. }
  260. return true;
  261. }
  262. /**
  263. * @return Collection<int, InscripcionUsuarioJornadaCurso>
  264. */
  265. public function getInscripcionesUsuariosJornadasCursos(): Collection
  266. {
  267. return $this->inscripcionesUsuariosJornadasCursos;
  268. }
  269. public function addInscripcionesUsuariosJornadasCurso(InscripcionUsuarioJornadaCurso $inscripcionesUsuariosJornadasCurso): static
  270. {
  271. if (!$this->inscripcionesUsuariosJornadasCursos->contains($inscripcionesUsuariosJornadasCurso)) {
  272. $this->inscripcionesUsuariosJornadasCursos->add($inscripcionesUsuariosJornadasCurso);
  273. $inscripcionesUsuariosJornadasCurso->setJornadaCurso($this);
  274. }
  275. return $this;
  276. }
  277. public function removeInscripcionesUsuariosJornadasCurso(InscripcionUsuarioJornadaCurso $inscripcionesUsuariosJornadasCurso): static
  278. {
  279. if ($this->inscripcionesUsuariosJornadasCursos->removeElement($inscripcionesUsuariosJornadasCurso)) {
  280. // set the owning side to null (unless already changed)
  281. if ($inscripcionesUsuariosJornadasCurso->getJornadaCurso() === $this) {
  282. $inscripcionesUsuariosJornadasCurso->setJornadaCurso(null);
  283. }
  284. }
  285. return $this;
  286. }
  287. public function getFechaHoraCreacion(): ?DateTimeInterface
  288. {
  289. return $this->fechaHoraCreacion;
  290. }
  291. public function setFechaHoraCreacion(DateTimeInterface $fechaHoraCreacion): static
  292. {
  293. $this->fechaHoraCreacion = $fechaHoraCreacion;
  294. return $this;
  295. }
  296. }