from django.db import models


    
class BotConfig(models.Model):
    bot_token = models.CharField(max_length=255, help_text="Токен для подключения к Telegram API")
    channel_id = models.CharField(max_length=100, help_text="ID канала/чата, куда бот будет отправлять сообщения")
    bot_name = models.CharField(max_length=100, help_text="Отображаемое имя бота")
    chat_enabled = models.BooleanField(
        default=True,
        verbose_name="Чат включён",
        help_text="Если выключено, то глобально блокируется рассылка сообщений в чате."
    )
    global_block_message = models.TextField(
        blank=True,
        null=True,
        verbose_name="Сообщение о глобальном блоке",
        help_text="Сообщение, которое показывается пользователям, если чат отключён."
    )
    welcome_messages = models.ManyToManyField('WelcomeMessage', blank=True, verbose_name="Варианты приветствия")
    active_welcome = models.ForeignKey(
        'WelcomeMessage',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name="used_by",
        verbose_name="Активное приветствие"
    )
    is_active = models.BooleanField(default=False, verbose_name="Включен")

    def __str__(self):
        return self.bot_name

    class Meta:
        verbose_name = "Настройка бота"
        verbose_name_plural = "Настройки Ботов"


class WelcomeMessage(models.Model):
    bot = models.ForeignKey(BotConfig, on_delete=models.CASCADE, verbose_name="Бот")
    welcome_message = models.TextField(
        verbose_name="Приветственное сообщение",
        blank=True,
        null=True,
        help_text="Текст, который будет отправлен при запуске команды /start"
    )
    welcome_image = models.ImageField(
        upload_to='welcome_messages/',
        verbose_name="Приветственное изображение",
        blank=True,
        null=True,
        help_text="Загрузите изображение для приветствия"
    )
    admin_contact = models.CharField(
        max_length=255,
        verbose_name="Контакт администратора",
        blank=True,
        null=True,
        help_text="Ссылка или контакт для связи с администратором"
    )
    channel_link = models.URLField(
        verbose_name="Ссылка на канал",
        blank=True,
        null=True,
        help_text="URL канала бота"
    )
    group_link = models.URLField(
        verbose_name="Ссылка на группу",
        blank=True,
        null=True,
        help_text="URL группы бота"
    )
    custom_link1_name = models.CharField(
        max_length=100,
        verbose_name="Название кастомной ссылки 1",
        blank=True,
        null=True
    )
    custom_link1_url = models.URLField(
        verbose_name="URL кастомной ссылки 1",
        blank=True,
        null=True
    )
    custom_link2_name = models.CharField(
        max_length=100,
        verbose_name="Название кастомной ссылки 2",
        blank=True,
        null=True
    )
    custom_link2_url = models.URLField(
        verbose_name="URL кастомной ссылки 2",
        blank=True,
        null=True
    )

    class Meta:
        verbose_name = "Приветственное сообщение"
        verbose_name_plural = "Приветственные сообщения"

    def __str__(self):
        return f"Приветствие для {self.bot}"

class BotMessage(models.Model):
    name = models.CharField("Название сообщения", max_length=100)
    text = models.TextField("Текст", blank=True)
    image = models.ImageField("Картинка", upload_to="bot_messages/", blank=True, null=True)
    buttons_json = models.JSONField("Кнопки (JSON-формат)", blank=True, null=True)

    class Meta:
        verbose_name = "Сообщение"
        verbose_name_plural = "Сообщения"
        
    def __str__(self):
        return self.name
    
class BotEventMessageConfig(models.Model):
    EVENT_CHOICES = [
        ('welcome', 'Приветствие'),
        ('draw_started', 'Розыгрыш начат'),
        ('draw_finished', 'Розыгрыш завершен'),
        ('winner_announced', 'Объявление победителя'),
        ('guest_binding', 'Подтверждение гостя'),
        # и другие
    ]

    event = models.CharField("Событие", max_length=50, choices=EVENT_CHOICES, unique=True)
    message = models.ForeignKey(BotMessage, on_delete=models.CASCADE, related_name="event_configs")
    enabled = models.BooleanField("Активно", default=True)

    class Meta:
        verbose_name = "Событие сообщения"
        verbose_name_plural = "События сообщений"
        
    def __str__(self):
        return f"{self.get_event_display()} → {self.message.name}"
    