from django.db import models


class EligibilityStatus(models.TextChoices):
    ALLOWED = "ALLOWED", "Allowed"
    DENIED = "DENIED", "Denied"
    REQUIRES_APPROVAL = "REQUIRES_APPROVAL", "Requires Approval"


class EligibilityCode(models.TextChoices):
    PLAYER_NOT_FOUND = "PLAYER_NOT_FOUND", "Player not found"
    PLAYER_INVALID = "PLAYER_INVALID", "Invalid player"
    CAREER_INACTIVE = "CAREER_INACTIVE", "Player or coach career is inactive"

    WINDOW_NOT_FOUND = "WINDOW_NOT_FOUND", "Transfer window not found"
    WINDOW_NOT_OPEN = "WINDOW_NOT_OPEN", "Transfer window is not open"
    WINDOW_NOT_CURRENT = "WINDOW_NOT_CURRENT", "Transfer window is not currently active"

    SEASON_NOT_ACTIVE = "SEASON_NOT_ACTIVE", "Season is not active"

    SOURCE_CLUB_NOT_FOUND = "SOURCE_CLUB_NOT_FOUND", "Source club not found"
    SOURCE_CLUB_INACTIVE = "SOURCE_CLUB_INACTIVE", "Source club is inactive"

    DESTINATION_CLUB_NOT_FOUND = (
        "DESTINATION_CLUB_NOT_FOUND",
        "Destination club not found",
    )
    DESTINATION_CLUB_INACTIVE = (
        "DESTINATION_CLUB_INACTIVE",
        "Destination club is inactive",
    )

    SAME_CLUB = "SAME_CLUB", "Source and destination clubs are the same"

    CONTRACT_MISMATCH = "CONTRACT_MISMATCH", "Contract does not match source club"

    FREE_AGENT_SOURCE_INVALID = (
        "FREE_AGENT_SOURCE_INVALID",
        "Free agent cannot have a source club",
    )

    ACTIVE_TRANSFER_CONFLICT = (
        "ACTIVE_TRANSFER_CONFLICT",
        "Player already has an active transfer",
    )

    ROSTER_MISMATCH = (
        "ROSTER_MISMATCH",
        "Current squad membership does not match contract state",
    )

    MINOR_INTERNATIONAL_REQUIRES_APPROVAL = (
        "MINOR_INTERNATIONAL_REQUIRES_APPROVAL",
        "International transfer of a minor requires approval",
    )


MINOR_AGE = 18