from django.db import models
from quiz.models import Quiz
from wikiazma.storage_helper import public_storage


class Challenge(models.Model):
    """
    Represents a quiz challenge within the app.
    """

    quiz = models.ForeignKey(Quiz, db_index=True, on_delete=models.CASCADE)
    prize_title = models.CharField(max_length=100)
    prize_caption = models.CharField(max_length=200)

    def __str__(self):
        return f"{self.quiz.name} (Challenge)"


class Champion(models.Model):
    """
    Represents a champion in a challenge.
    """

    PLACE_STATUS_CHOICE_1 = "1"
    PLACE_STATUS_CHOICE_2 = "2"
    PLACE_STATUS_CHOICE_3 = "3"
    PLACE_STATUS_CHOICE_RAND = "RANDOM"

    PLACE_STATUS_CHOICES = [
        (PLACE_STATUS_CHOICE_1, "1"),
        (PLACE_STATUS_CHOICE_2, "2"),
        (PLACE_STATUS_CHOICE_3, "3"),
        (PLACE_STATUS_CHOICE_RAND, "Random"),
    ]

    challenge = models.ForeignKey(Challenge, db_index=True, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    image = models.ImageField(
        upload_to="challenge/champion/image/",
        null=True,
        blank=True,
        storage=public_storage,
    )
    prize = models.CharField(max_length=200)
    place_status = models.CharField(
        max_length=10,
        choices=PLACE_STATUS_CHOICES,
        db_index=True,
    )

    def __str__(self) -> str:
        return self.name
