import uuid
from django.db import models
from django.utils import timezone
from user.models import User
from employeetypes.models import EmployeeType

class UserSettings(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='settings')
    lang = models.CharField(max_length=10, default='en')
    user_timezone = models.CharField(max_length=50, default='UTC')
    user_type = models.ForeignKey(EmployeeType, on_delete=models.SET_NULL, null=True, related_name='user_settings', db_column='user_type')
    supervisor_code = models.CharField(max_length=100, null=True, blank=True)
    is_access = models.BooleanField(default=False)
    
    # Burnout detection preferences
    burnout_notifications_enabled = models.BooleanField(default=True)
    burnout_sensitivity = models.CharField(
        max_length=20,
        choices=[('low', 'Low'), ('medium', 'Medium'), ('high', 'High')],
        default='medium'
    )
    burnout_notification_frequency = models.CharField(
        max_length=20,
        choices=[('immediate', 'Immediate'), ('daily', 'Daily'), ('weekly', 'Weekly')],
        default='daily'
    )
    
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'user_settings'
        ordering = ['-created_at']

    def __str__(self):
        return f"Settings for {self.user.firstname} {self.user.lastname}"

    def save(self, *args, **kwargs):
        self.updated_at = timezone.now()
        super().save(*args, **kwargs)
