from django.db import models


class DownloadType(models.TextChoices):
    LAUNCHER = 'launcher', 'Launcher'
    PATCH = 'patch', 'Patch Update'


class Download(models.Model):
    """Model quản lý Launcher và Patch"""
    
    version = models.CharField(max_length=50, verbose_name='Phiên bản')
    download_type = models.CharField(
        max_length=20,
        choices=DownloadType.choices,
        default=DownloadType.LAUNCHER,
        verbose_name='Loại'
    )
    changelog = models.TextField(blank=True, verbose_name='Changelog')
    
    # Upload file hoặc nhập link
    file = models.FileField(
        upload_to='downloads/', 
        blank=True, 
        null=True,
        verbose_name='Upload file'
    )
    download_link = models.URLField(
        max_length=500, 
        blank=True,
        verbose_name='Link tải ngoài'
    )
    
    is_required = models.BooleanField(default=False, verbose_name='Bắt buộc update')
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='Ngày tạo')
    
    class Meta:
        verbose_name = 'File tải về'
        verbose_name_plural = 'Files tải về'
        ordering = ['-id']
    
    def __str__(self):
        return f"{self.get_download_type_display()} v{self.version}"
    
    def get_download_url(self):
        if self.file:
            return self.file.url
        return self.download_link or '#'


class Banner(models.Model):
    """Banner quảng cáo cho Launcher"""
    
    title = models.CharField(max_length=200, verbose_name='Tiêu đề')
    image = models.ImageField(
        upload_to='banners/',
        verbose_name='Hình ảnh'
    )
    link = models.URLField(max_length=500, blank=True, verbose_name='Link khi click')
    order = models.IntegerField(default=0, verbose_name='Thứ tự hiển thị')
    is_active = models.BooleanField(default=True, verbose_name='Kích hoạt')
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='Ngày tạo')
    
    class Meta:
        verbose_name = 'Banner'
        verbose_name_plural = 'Banners'
        ordering = ['order', '-created_at']
    
    def __str__(self):
        return self.title

