from django.contrib import admin

from .models import Transfer, TransferWindow


class DomainReadOnlyAdmin(admin.ModelAdmin):
    """Domain lifecycle changes must go through services, not Django admin."""

    def has_add_permission(self, request):
        return False

    def has_delete_permission(self, request, obj=None):
        return False

    def get_readonly_fields(self, request, obj=None):
        return tuple(field.name for field in self.model._meta.fields)


@admin.register(TransferWindow)
class TransferWindowAdmin(DomainReadOnlyAdmin):
    list_display = (
        "name",
        "season",
        "window_type",
        "start_at",
        "end_at",
        "status",
        "opened_at",
        "closed_at",
    )
    list_filter = ("status", "window_type", "season")
    search_fields = ("name", "season__name")
    ordering = ("-start_at",)


@admin.register(Transfer)
class TransferAdmin(DomainReadOnlyAdmin):
    list_display = (
        "id",
        "player",
        "source_club",
        "destination_club",
        "status",
        "transfer_fee",
        "is_international",
        "requested_at",
    )
    list_filter = ("status", "is_international", "window")
    search_fields = (
        "id",
        "player__first_name",
        "player__last_name",
        "source_club__name",
        "destination_club__name",
    )
    ordering = ("-created_at",)
