from django.db import models


class BotName(models.TextChoices):
    hazel = "hazel", "Hazel"
    maya = "maya", "Maya"
    rebecca = "rebecca", "Rebecca"

    @classmethod
    def model_choices(cls):
        return cls.choices

    @classmethod
    def values(cls):
        """Return just the machine-safe values"""
        return [choice.value for choice in cls]

    @classmethod
    def is_valid(cls, value: str) -> bool:
        return value in cls.values()


class CompanyType(models.TextChoices):
    SIMPLE = 'simple', 'Simple'
    DEALERSHIP = 'dealership', 'Dealership'
    DEALERSHIP_GROUP = 'dealership_group', 'Dealership Group'

    @classmethod
    def model_choices(cls):
        return cls.choices

    @classmethod
    def values(cls):
        """Return just the machine-safe values"""
        return [choice.value for choice in cls]

    @classmethod
    def is_valid(cls, value: str) -> bool:
        return value in cls.values()


class BotInstructionTemplateType(models.TextChoices):
    # Core Instructions
    GENERAL = "general", "General Bot Messages"
    ADVISOR_TRANSFER = "advisor_transfer", "Advisor Transfer"
    BDC_TRANSFER = "bdc_transfer", "BDC Transfer"
    ADVISOR_NOT_FOUND = "advisor_not_found", "Advisor Not Found"
    WORKING_HOURS = "working_hours", "Working Hours"
    OFF_HOURS = "off_hours", "Off Hours"
    HOLIDAY = "holiday", "Holiday"
    DEALERSHIP_TRANSFER = "dealership_transfer", "Dealership Transfer (Rebecca)"

    # 🔥 Service AI Instructions
    SERVICE_LIST = "service_list", "Service List Message"
    SERVICE_LINE = "service_line", "Service Single Line Message"
    SERVICE_LINE_NO_LABOR = "service_line_no_labor", "No Labor Message"
    SERVICE_NO_PRICE = "service_no_price", "No Price Message"
    SERVICE_DETAIL = "service_detail", "Service Detail Message"
    SERVICE_PRICE = "service_price", "Service Price Message"
    SERVICE_NOT_FOUND = "service_not_found", "Service Not Found Message"

    @classmethod
    def model_choices(cls):
        """Return choices in (value, label) format for model fields"""
        return cls.choices

    @classmethod
    def values(cls):
        """Return just the machine-safe values"""
        return [choice.value for choice in cls]

    @classmethod
    def is_valid(cls, value: str) -> bool:
        return value in cls.values()
