from rest_framework import viewsets, filters
from rest_framework.decorators import action
from rest_framework.response import Response
from django_filters.rest_framework import DjangoFilterBackend
from .models import Country, Team, Player, PlayerStats, MatchResult, LeagueStanding, MatchReview
from .serializers import (
    CountrySerializer,
    TeamSerializer, 
    PlayerSerializer, 
    PlayerStatsSerializer,
    MatchResultSerializer,
    LeagueStandingSerializer,
    MatchReviewSerializer
)

class CountryViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Country.objects.all()
    serializer_class = CountrySerializer
    filter_backends = [filters.SearchFilter, DjangoFilterBackend]
    search_fields = ['name', 'code']
    filterset_fields = ['id', 'name', 'code']  # 添加id字段

class TeamViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Team.objects.select_related('country').all()
    serializer_class = TeamSerializer
    filter_backends = [filters.SearchFilter, DjangoFilterBackend]
    search_fields = ['name']
    filterset_fields = ['id', 'country']  # 添加id字段

class PlayerViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Player.objects.all()
    serializer_class = PlayerSerializer
    filter_backends = [filters.SearchFilter, DjangoFilterBackend]
    search_fields = ['name', 'positions', 'nationality']
    filterset_fields = ['id', 'positions', 'nationality', 'stats__team']  # 添加通过stats关联的team字段

class PlayerStatsViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = PlayerStats.objects.select_related('player', 'team').all()
    serializer_class = PlayerStatsSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['id', 'player', 'team', 'tournament']  # 添加id字段

class MatchResultViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = MatchResult.objects.select_related('home_team', 'away_team', 'country').all()
    serializer_class = MatchResultSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['id', 'home_team', 'away_team', 'country']  # 添加id字段

class LeagueStandingViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = LeagueStanding.objects.select_related('team', 'country').all()
    serializer_class = LeagueStandingSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['id', 'team', 'country', 'position']  # 添加id字段

class MatchReviewViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = MatchReview.objects.all()
    serializer_class = MatchReviewSerializer
    
    def get_serializer_context(self):
        context = super().get_serializer_context()
        context['request'] = self.request
        return context
