from app_utils.django import clean_setting

# Name of this app as shown in the Auth sidebar, page titles
# and as default avatar name for notifications
FREIGHT_APP_NAME = clean_setting("FREIGHT_APP_NAME", "Freight", required_type=str)

# Sets the number minutes until a delayed sync will be recognized as error
FREIGHT_CONTRACT_SYNC_GRACE_MINUTES = clean_setting(
    "FREIGHT_CONTRACT_SYNC_GRACE_MINUTES", 30
)


# Webhook URL used for notifications if defined
FREIGHT_DISCORD_WEBHOOK_URL = clean_setting(
    "FREIGHT_DISCORD_WEBHOOK_URL", None, required_type=str
)

# Will be shown as "user name" instead of what is configured as app name
# for notifications if defined
FREIGHT_DISCORD_AVATAR_NAME = clean_setting(
    "FREIGHT_DISCORD_AVATAR_NAME", None, required_type=str
)

# when set true will no longer set name and avatar for webhooks
FREIGHT_DISCORD_DISABLE_BRANDING = clean_setting(
    "FREIGHT_DISCORD_DISABLE_BRANDING", False
)

# Mentions to appear upfront to any notification
# Typical values are: None, '@here' and '@everyone'.
FREIGHT_DISCORD_MENTIONS = clean_setting(
    "FREIGHT_DISCORD_MENTIONS", None, required_type=str
)

# max days back considered when calculating statistics
FREIGHT_STATISTICS_MAX_DAYS = clean_setting(
    "FREIGHT_STATISTICS_MAX_DAYS", 90, min_value=1
)

# Webhook URL used for notifications to customers if defined
FREIGHT_DISCORD_CUSTOMERS_WEBHOOK_URL = clean_setting(
    "FREIGHT_DISCORD_CUSTOMERS_WEBHOOK_URL", None, required_type=str
)

# defines after how many hours a status becomes stale
# a stale status will not be reported to customers
FREIGHT_HOURS_UNTIL_STALE_STATUS = clean_setting("FREIGHT_HOURS_UNTIL_STALE_STATUS", 24)

# Whether to show full location names in the route dropdown of the calculator
FREIGHT_FULL_ROUTE_NAMES = clean_setting("FREIGHT_FULL_ROUTE_NAMES", False)

# whether ESI requests have a timeout
FREIGHT_ESI_TIMEOUT_ENABLED = clean_setting("FREIGHT_ESI_TIMEOUT_ENABLED", True)

# modes of operation for Freight
FREIGHT_OPERATION_MODE_MY_ALLIANCE = "my_alliance"
FREIGHT_OPERATION_MODE_MY_CORPORATION = "my_corporation"
FREIGHT_OPERATION_MODE_CORP_IN_ALLIANCE = "corp_in_alliance"
FREIGHT_OPERATION_MODE_CORP_PUBLIC = "corp_public"

FREIGHT_OPERATION_MODES = [
    (FREIGHT_OPERATION_MODE_MY_ALLIANCE, "My Alliance"),
    (FREIGHT_OPERATION_MODE_MY_CORPORATION, "My Corporation"),
    (FREIGHT_OPERATION_MODE_CORP_IN_ALLIANCE, "Corporation in my Alliance"),
    (FREIGHT_OPERATION_MODE_CORP_PUBLIC, "Corporation public"),
]

# whether ESI requests have a timeout
FREIGHT_OPERATION_MODE = clean_setting(
    "FREIGHT_OPERATION_MODE",
    default_value=FREIGHT_OPERATION_MODE_MY_ALLIANCE,
    choices=[x[0] for x in FREIGHT_OPERATION_MODES],
)

# whether to use Discord Proxy for sending DMs
FREIGHT_DISCORDPROXY_ENABLED = clean_setting("FREIGHT_DISCORDPROXY_ENABLED", False)

# Discordproxy port for GRPC
FREIGHT_DISCORDPROXY_PORT = clean_setting("FREIGHT_DISCORDPROXY_PORT", 50051)
