from django.db import models
from django.conf import settings
import uuid

class Appointment(models.Model):
    STATUS_CHOICES = [
        ('confirmed', 'Confirmada'),
        ('pending', 'Pendiente'),
        ('cancelled', 'Cancelada'),
        ('rescheduled', 'Reprogramada'),
        ('no_show', 'No asistió'),
    ]
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    # Asignación de recurso
    resource = models.ForeignKey('scheduler.Resource', on_delete=models.SET_NULL, null=True, blank=True)
    appointment_type = models.ForeignKey('scheduler.AppointmentType', on_delete=models.CASCADE)
    
    date = models.DateField()
    start_time = models.TimeField()
    end_time = models.TimeField()
    
    full_name = models.CharField(max_length=150)
    email = models.EmailField()
    phone = models.CharField(max_length=20)
    document_type = models.CharField(max_length=20)
    document_number = models.CharField(max_length=20)
    custom_data = models.JSONField(default=dict, blank=True)
    status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='confirmed')
    notes = models.TextField(blank=True, null=True)
    edit_token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.full_name} - {self.date} {self.start_time}"