from django.db import models

class Country(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.CharField(max_length=100, unique=False, default='')  # 添加slug字段，暂时不设置唯一约束
    code = models.CharField(max_length=10, unique=True)
    league_name = models.CharField(max_length=100, null=True, blank=True)
    
    def __str__(self):
        return self.name
    
    class Meta:
        ordering = ['name']
        verbose_name_plural = "Countries"
        app_label = 'api'

class Team(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.CharField(max_length=100, unique=False, default='')  # 添加slug字段，暂时不设置唯一约束
    country = models.ForeignKey(Country, on_delete=models.CASCADE, related_name='teams')
    
    def __str__(self):
        return self.name
    
    class Meta:
        ordering = ['name']
        app_label = 'api'

class Player(models.Model):
    name = models.CharField(max_length=100, unique=True)  # display_name
    slug = models.CharField(max_length=100, unique=False, default='')  # 用于资源定位的slug，暂时不设置唯一约束
    age = models.IntegerField(null=True, blank=True)
    date_of_birth = models.DateField(null=True, blank=True)
    height = models.IntegerField(null=True, blank=True)  # in cm
    nationality = models.CharField(max_length=50, null=True, blank=True)
    positions = models.CharField(max_length=100, null=True, blank=True)
    image_url = models.URLField(null=True, blank=True)
    
    def __str__(self):
        return self.name
    
    class Meta:
        ordering = ['name']
        app_label = 'api'

class PlayerStats(models.Model):
    player = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='stats')
    team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='player_stats')
    tournament = models.CharField(max_length=100)
    appearances = models.CharField(max_length=20, null=True, blank=True)
    minutes_played = models.IntegerField(null=True, blank=True)
    goals = models.IntegerField(null=True, blank=True)
    assists = models.IntegerField(null=True, blank=True)
    tackles = models.FloatField(null=True, blank=True)
    interceptions = models.FloatField(null=True, blank=True)
    fouls_committed = models.FloatField(null=True, blank=True)
    pass_success_rate = models.FloatField(null=True, blank=True)
    shots_per_game = models.FloatField(null=True, blank=True)
    dribbles_per_game = models.FloatField(null=True, blank=True)
    rating = models.FloatField(null=True, blank=True)
    
    def __str__(self):
        return f"{self.player.name} - {self.tournament}"
    
    class Meta:
        ordering = ['player__name', 'tournament']
        verbose_name_plural = "Player Stats"
        app_label = 'api'

class MatchResult(models.Model):
    country = models.ForeignKey(Country, on_delete=models.CASCADE, related_name='matches')
    home_team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='home_matches')
    away_team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='away_matches')
    match_date = models.DateField()
    home_goals = models.IntegerField(null=True, blank=True)
    away_goals = models.IntegerField(null=True, blank=True)
    result = models.CharField(max_length=10, null=True, blank=True)  # e.g., 'W', 'D', 'L'
    
    def __str__(self):
        return f"{self.home_team.name} vs {self.away_team.name} on {self.match_date}"
    
    class Meta:
        ordering = ['-match_date']
        verbose_name_plural = "Match Results"
        app_label = 'api'

class LeagueStanding(models.Model):
    team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='standings')
    country = models.ForeignKey(Country, on_delete=models.CASCADE, related_name='standings')
    position = models.IntegerField()
    played = models.IntegerField()
    won = models.IntegerField()
    drawn = models.IntegerField()
    lost = models.IntegerField()
    goals_for = models.IntegerField()
    goals_against = models.IntegerField()
    goal_difference = models.IntegerField()
    points = models.IntegerField()
    recent_form = models.CharField(max_length=20, null=True, blank=True)
    
    def __str__(self):
        return f"{self.team.name} - Position: {self.position}"
    
    class Meta:
        ordering = ['position']
        verbose_name_plural = "League Standings"
        app_label = 'api'

class MatchReview(models.Model):
    name = models.CharField(max_length=200)
    # thumbnail_url = models.URLField()
    # video_url = models.URLField()

    thumbnail_url = models.CharField(max_length=200,null=False,blank=False)
    video_url = models.CharField(max_length=200,null=False,blank=False)

    def __str__(self):
        return self.name
    
    class Meta:
        ordering = ['name']
        verbose_name_plural = "Match Reviews"
        app_label = 'api'