from django.contrib import admin
from .models import (
    ConversionRule,
    MonthlyConversionLog,
    SuperCoinTransaction,
    SuperCoinWallet,
    TDSLedger,
    TWMCoinGrant,
    UserVoucherCode,
    Wallet,
    WalletLedger,
)

@admin.register(Wallet)
class WalletAdmin(admin.ModelAdmin):
    list_display = ('user', 'main_balance', 'repurchase_balance', 'voucher_balance', 'locked_amount')

@admin.register(WalletLedger)
class WalletLedgerAdmin(admin.ModelAdmin):
    list_display = ('user', 'wallet', 'transaction_type', 'wallet_type', 'source_type', 'amount', 'reference_id', 'remarks', 'created_at')


@admin.register(UserVoucherCode)
class UserVoucherCodeAdmin(admin.ModelAdmin):
    list_display = ('user', 'code', 'total_value', 'remaining_value', 'status', 'expires_at', 'source_reference_id', 'created_at')
    search_fields = ('code', 'source_reference_id', 'user__mobile', 'user__email')
    list_filter = ('status', 'created_at')


@admin.register(SuperCoinWallet)
class SuperCoinWalletAdmin(admin.ModelAdmin):
    list_display = ('user', 'balance', 'updated_at')
    search_fields = ('user__mobile', 'user__email')


@admin.register(SuperCoinTransaction)
class SuperCoinTransactionAdmin(admin.ModelAdmin):
    list_display = ('user', 'transaction_type', 'source_type', 'amount', 'reference_id', 'created_at')
    search_fields = ('reference_id', 'user__mobile', 'user__email')
    list_filter = ('transaction_type', 'source_type', 'created_at')


@admin.register(TDSLedger)
class TDSLedgerAdmin(admin.ModelAdmin):
    list_display = ('user', 'context', 'gross_amount', 'tds_percent', 'tds_amount', 'reference_id', 'created_at')
    search_fields = ('reference_id', 'distributor_id', 'user__mobile', 'user__email')
    list_filter = ('context', 'month', 'created_at')


@admin.register(ConversionRule)
class ConversionRuleAdmin(admin.ModelAdmin):
    list_display = ('user', 'distributor_id', 'monthly_limit', 'conversion_percentage', 'is_active', 'updated_at')
    search_fields = ('distributor_id', 'user__mobile', 'user__email')
    list_filter = ('is_active',)


@admin.register(MonthlyConversionLog)
class MonthlyConversionLogAdmin(admin.ModelAdmin):
    list_display = ('user', 'distributor_id', 'converted_amount', 'tds_deducted', 'net_amount', 'month')
    search_fields = ('reference_id', 'distributor_id', 'user__mobile', 'user__email')
    list_filter = ('month',)


@admin.register(TWMCoinGrant)
class TWMCoinGrantAdmin(admin.ModelAdmin):
    list_display = ('user', 'amount', 'expiry_days', 'expires_at', 'reference_id', 'granted_by', 'created_at')
    search_fields = ('reference_id', 'reason', 'user__mobile', 'user__email')
    list_filter = ('expiry_days', 'created_at')
