from django.db import models
from uuid import uuid4

class Level(models.Model):
    LEVEL_CHOICES = [(i, f"LVL-{i}") for i in range(1, 16)]
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    name = models.CharField(max_length=50) 
    level_number = models.PositiveIntegerField(
        unique=True, 
        choices=LEVEL_CHOICES
    ) 
    percentage = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
    is_active = models.BooleanField(default=True, verbose_name="Is Active")

    class Meta:
        ordering = ['level_number']

    def __str__(self):
        return f"{self.name} (LVL-{self.level_number})"

    @classmethod
    def auto_level(cls):
        levels_to_create = []
        for i in range(1, 16):
            if not cls.objects.filter(level_number=i).exists():
                levels_to_create.append(
                    cls(name=f"Level {i}", level_number=i, percentage=0.00)
                )
        if levels_to_create:
            cls.objects.bulk_create(levels_to_create)
            return f"Successfully created {len(levels_to_create)} levels."
        return "All 15 levels already exist."