from django.db import models
from reymotausers.models import ReyMotaUser
from django.utils import timezone


class Evento(models.Model):
    nombre = models.CharField(max_length=100)
    descripcion = models.TextField()
    fecha = models.DateField()
    hora = models.TimeField(default=timezone.now)  # Nuevo campo para la hora

    plazas_disponibles = models.PositiveIntegerField()
    publicado = models.BooleanField(default=False)  # Nuevo campo para la publicación

    def __str__(self):
        return self.nombre

    def plazas_restantes(self):
        return self.plazas_disponibles - self.reservas.count()


class Reserva(models.Model):
    evento = models.ForeignKey(
        Evento, related_name="reservas", on_delete=models.CASCADE)
    usuario = models.ForeignKey(ReyMotaUser, on_delete=models.CASCADE)
    fecha_reserva = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.usuario.nombre} - {self.evento.nombre} reserva realizada a las {self.fecha_reserva}'


class ListaEspera(models.Model):
    evento = models.ForeignKey(Evento, on_delete=models.CASCADE, related_name="lista_espera")
    usuario = models.ForeignKey(ReyMotaUser, on_delete=models.CASCADE)
    fecha_apuntado = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.usuario.nombre} en lista de espera para {self.evento.nombre}. Solicitada plaza el: {self.fecha_apuntado}'


class Noticia(models.Model):
    titulo = models.CharField(max_length=200)
    contenido = models.TextField()
    fecha_publicacion = models.DateTimeField(auto_now_add=True)
    autor = models.ForeignKey(ReyMotaUser, on_delete=models.SET_NULL, null=True)
    publicado = models.BooleanField(default=False)

    class Meta:
        ordering = ['-fecha_publicacion']  # Ordena por fecha de publicación, de la más reciente a la más antigua

    def __str__(self):
        return self.titulo
