from django.db import models
from .categories import ProductTag


class BouquetName(models.Model):
    """
    Модель для хранения предопределенных названий букетов с метаинформацией
    """
    name = models.CharField(
        max_length=100,
        unique=True,
        verbose_name="Название букета"
    )

    # Категории характеристик
    color_tags = models.ManyToManyField(
        ProductTag,
        blank=True,
        related_name='bouquet_names_by_color',
        verbose_name="Цветные теги"
    )

    occasion_tags = models.ManyToManyField(
        ProductTag,
        blank=True,
        related_name='bouquet_names_by_occasion',
        verbose_name="Теги по поводу"
    )

    style_tags = models.ManyToManyField(
        ProductTag,
        blank=True,
        related_name='bouquet_names_by_style',
        verbose_name="Теги по стилю"
    )

    language = models.CharField(
        max_length=10,
        default='russian',
        verbose_name="Язык"
    )

    is_approved = models.BooleanField(
        default=False,
        verbose_name="Одобрено для использования"
    )

    usage_count = models.PositiveIntegerField(
        default=0,
        verbose_name="Количество использований"
    )

    generated_at = models.DateTimeField(
        auto_now_add=True,
        verbose_name="Дата генерации"
    )

    approved_at = models.DateTimeField(
        null=True,
        blank=True,
        verbose_name="Дата одобрения"
    )

    class Meta:
        verbose_name = "Название букета"
        verbose_name_plural = "Названия букетов"
        indexes = [
            models.Index(fields=['language', 'is_approved']),
            models.Index(fields=['usage_count']),
        ]

    def __str__(self):
        return self.name
