from django.contrib import admin
from .models import (
    AutoIDActivationLog,
    AutoIDAllocation,
    BrandAmbassadorEligibility,
    DistributorGlobalPositionCounter,
    DistributorID,
    DistributorOwnershipPeriod,
    DistributorQualificationState,
    DistributorTransferAcceptance,
    DistributorTransferHistory,
    DistributorTransferRequest,
    DistributorTransferTerms,
)

@admin.register(DistributorID)
class DistributorIDAdmin(admin.ModelAdmin):
    list_display = ('distributor_code', 'user', 'product', 'global_position', 'is_active', 'is_auto_generated')

@admin.register(DistributorGlobalPositionCounter)
class DistributorGlobalPositionCounterAdmin(admin.ModelAdmin):
    list_display = ('counter', 'updated_at')


@admin.register(BrandAmbassadorEligibility)
class BrandAmbassadorEligibilityAdmin(admin.ModelAdmin):
    list_display = ('user', 'opportunity_bundle', 'distributor_count', 'qualified_at', 'is_active')
    list_filter = ('opportunity_bundle', 'is_active')
    search_fields = ('user__mobile', 'user__email', 'scheme__name')


@admin.register(DistributorOwnershipPeriod)
class DistributorOwnershipPeriodAdmin(admin.ModelAdmin):
    list_display = ('distributor', 'owner_user', 'ownership_effective_from', 'ownership_effective_to', 'is_current')
    list_filter = ('is_current',)
    search_fields = ('distributor__distributor_code', 'owner_user__mobile', 'owner_user__email')


@admin.register(DistributorQualificationState)
class DistributorQualificationStateAdmin(admin.ModelAdmin):
    list_display = ('distributor', 'owner_user', 'achieved_directs', 'required_directs', 'withdrawal_eligible', 'qualified_at')
    list_filter = ('withdrawal_eligible',)
    search_fields = ('distributor__distributor_code', 'owner_user__mobile', 'owner_user__email')


@admin.register(DistributorTransferTerms)
class DistributorTransferTermsAdmin(admin.ModelAdmin):
    list_display = ('title', 'display_order', 'mandatory', 'is_active')
    list_filter = ('mandatory', 'is_active')


@admin.register(DistributorTransferRequest)
class DistributorTransferRequestAdmin(admin.ModelAdmin):
    list_display = ('target_distributor', 'old_owner_user', 'requested_new_owner_user', 'status', 'reviewed_by', 'reviewed_at')
    list_filter = ('status',)
    search_fields = ('target_distributor__distributor_code', 'old_owner_user__mobile', 'requested_new_owner_user__mobile')


@admin.register(DistributorTransferAcceptance)
class DistributorTransferAcceptanceAdmin(admin.ModelAdmin):
    list_display = ('transfer_request', 'terms', 'accepted_by', 'accepted', 'accepted_at')
    list_filter = ('accepted',)


@admin.register(DistributorTransferHistory)
class DistributorTransferHistoryAdmin(admin.ModelAdmin):
    list_display = ('distributor', 'old_owner_user', 'new_owner_user', 'approved_at')


@admin.register(AutoIDAllocation)
class AutoIDAllocationAdmin(admin.ModelAdmin):
    list_display = ('owner_user', 'source_distributor', 'level_number', 'total_count', 'remaining_count', 'status')
    list_filter = ('status',)
    search_fields = ('owner_user__mobile', 'source_distributor__distributor_code')


@admin.register(AutoIDActivationLog)
class AutoIDActivationLogAdmin(admin.ModelAdmin):
    list_display = ('allocation', 'activated_distributor', 'activated_by', 'product', 'activation_cost', 'created_at')
