from django.conf import settings
from django.db.models import TextChoices, IntegerChoices
from django.utils.translation import gettext_lazy as _

TICKET_DETAIL_URL = '/ui/#/tickets/tickets/{id}?type={type}'


class TicketType(TextChoices):
    general = 'general', _("General")
    apply_asset = 'apply_asset', _('Apply for asset')
    login_confirm = 'login_confirm', _("Login confirm")
    command_confirm = 'command_confirm', _('Command confirm')
    login_asset_confirm = 'login_asset_confirm', _('Login asset confirm')


class TicketState(TextChoices):
    all = 'all', _('All')
    pending = 'pending', _('Ticket open')
    closed = 'closed', _("Ticket closed")
    approved = 'approved', _('Ticket approved')
    rejected = 'rejected', _('Ticket rejected')


class TicketStatus(TextChoices):
    open = 'open', _("Ticket open")
    closed = 'closed', _("Ticket finished")


class StepState(TextChoices):
    pending = 'pending', _('Step pending')
    closed = 'closed', _("Step closed")
    approved = 'approved', _('Step approved')
    rejected = 'rejected', _('Step rejected')


class StepStatus(TextChoices):
    active = 'active', _('Step active')
    closed = 'closed', _("Step closed")
    pending = 'pending', _('Step pending')


class TicketAction(TextChoices):
    open = 'open', _("Open")
    close = 'close', _("Close")
    reject = 'reject', _('Reject')
    approve = 'approve', _('Approve')


class TicketLevel(IntegerChoices):
    one = 1, _("One level")
    two = 2, _("Two level")


class TicketApplyAssetScope(TextChoices):
    all = 'all', _("All assets")
    permed = 'permed', _("Permed assets")
    permed_valid = 'permed_valid', _('Permed valid assets')

    @classmethod
    def get_scope(cls):
        return settings.TICKET_APPLY_ASSET_SCOPE.lower()

    @classmethod
    def is_permed(cls):
        return cls.get_scope() == cls.permed

    @classmethod
    def is_permed_valid(cls):
        return cls.get_scope() == cls.permed_valid
