from django.contrib.auth.models import AbstractUser
from django.db import models
import uuid

class User(AbstractUser):
    TELEGRAM_ROLES = [
        ('admin', 'Администратор системы'),
        ('hotel_user', 'Сотрудник отеля'),
    ]

    telegram_id = models.BigIntegerField(
        unique=True,
        null=True,
        blank=True,
        verbose_name="ID Телеграм"
    )
    chat_id = models.BigIntegerField(
        unique=True,
        null=True,
        blank=True,
        verbose_name="ID чата в телеграм"
    )
    role = models.CharField(
        max_length=20,
        choices=TELEGRAM_ROLES,
        default='hotel_user',
        verbose_name="Роль"
    )
    confirmed = models.BooleanField(default=False, verbose_name="Подтвержден")

    groups = models.ManyToManyField(
        'auth.Group',
        related_name='custom_user_set',  # Уникальное имя для обратной связи
        blank=True
    )
    user_permissions = models.ManyToManyField(
        'auth.Permission',
        related_name='custom_user_set',  # Уникальное имя для обратной связи
        blank=True
    )

    def __str__(self):
        return self.username or f"Telegram User {self.telegram_id}"
    
    class Meta:
        verbose_name = "Пользователь"
        verbose_name_plural = "Пользователи"
        
        
   
class NotificationSettings(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name="Пользователь")
    telegram_enabled = models.BooleanField(default=True, verbose_name="Уведомления в Telegram")
    email_enabled = models.BooleanField(default=False, verbose_name="Уведомления по Email")
    email = models.EmailField(blank=True, null=True, verbose_name="Email для уведомлений")
    notification_time = models.TimeField(default="09:00", verbose_name="Время отправки уведомлений")

    def __str__(self):
        return f"Настройки уведомлений для {self.user.username}"
    
    class Meta:
        verbose_name = "Способ оповещения"
        verbose_name_plural = "Способы оповещений"