from django.db import models


class SeasonStatus(models.TextChoices):
    DRAFT = "DRAFT", "Draft"
    UPCOMING = "UPCOMING", "Upcoming"
    ACTIVE = "ACTIVE", "Active"
    COMPLETED = "COMPLETED", "Completed"
    CANCELLED = "CANCELLED", "Cancelled"
    ARCHIVED = "ARCHIVED", "Archived"

class SeasonOrchestrationStatus(models.TextChoices):
    PENDING = "PENDING", "Pending"
    RUNNING = "RUNNING", "Running"
    SUCCEEDED = "SUCCEEDED", "Succeeded"
    FAILED = "FAILED", "Failed"


class SeasonOrchestrationStepStatus(models.TextChoices):
    PENDING = "PENDING", "Pending"
    RUNNING = "RUNNING", "Running"
    SUCCEEDED = "SUCCEEDED", "Succeeded"
    FAILED = "FAILED", "Failed"


class SeasonOrchestrationStepKey(models.TextChoices):
    PRECHECK = "PRECHECK", "Preflight checks"
    FINALIZE_SOURCE = "FINALIZE_SOURCE", "Finalize source competitions"
    COMPLETE_SOURCE = "COMPLETE_SOURCE", "Complete source season"
    MATERIALIZE_PLAYERS = "MATERIALIZE_PLAYERS", "Materialize player progression and aging"
    APPLY_MOVEMENT = "APPLY_MOVEMENT", "Apply promotion/relegation"
    GENERATE_LEAGUES = "GENERATE_LEAGUES", "Generate target league schedules"
    CREATE_COMPETITIONS = "CREATE_COMPETITIONS", "Create target federation competitions"
    QUALIFY_COMPETITIONS = "QUALIFY_COMPETITIONS", "Apply continental qualification"
    DRAW_COMPETITIONS = "DRAW_COMPETITIONS", "Draw target competitions"
    BUILD_CALENDAR = "BUILD_CALENDAR", "Build season calendar windows"
    MARK_UPCOMING = "MARK_UPCOMING", "Mark target season upcoming"


class SeasonCalendarSourceType(models.TextChoices):
    LEAGUE = "LEAGUE", "League competition"
    FEDERATION = "FEDERATION", "Federation competition"


class SeasonCalendarPhase(models.TextChoices):
    LEAGUE_ROUND = "LEAGUE_ROUND", "League round"
    GROUP_MATCHDAY = "GROUP_MATCHDAY", "Group matchday"
    KNOCKOUT_ROUND = "KNOCKOUT_ROUND", "Knockout round"
