from django.contrib import admin
from .models import (
    Company, CustomUser, Branch,
    PlatformBankAccount, PlatformMobileBanking, CompanyPayment,
)


@admin.register(Company)
class CompanyAdmin(admin.ModelAdmin):
    list_display = ['name', 'owner_name', 'owner_email', 'is_approved', 'created_at']
    list_filter = ['is_approved']
    search_fields = ['name', 'owner_name']
    actions = ['approve_companies']

    @admin.action(description='Approve selected companies')
    def approve_companies(self, request, queryset):
        queryset.update(is_approved=True)


@admin.register(CustomUser)
class CustomUserAdmin(admin.ModelAdmin):
    list_display = ['username', 'email', 'role', 'company', 'is_active']
    list_filter = ['role', 'is_active']
    search_fields = ['username', 'email']


@admin.register(PlatformBankAccount)
class PlatformBankAccountAdmin(admin.ModelAdmin):
    list_display = ['bank_name', 'account_holder_name', 'account_number', 'is_active', 'created_at']
    list_filter = ['is_active', 'bank_name']
    search_fields = ['bank_name', 'account_number', 'account_holder_name']


@admin.register(PlatformMobileBanking)
class PlatformMobileBankingAdmin(admin.ModelAdmin):
    list_display = ['provider', 'account_number', 'account_type', 'is_active', 'created_at']
    list_filter = ['provider', 'account_type', 'is_active']
    search_fields = ['account_number']


@admin.register(CompanyPayment)
class CompanyPaymentAdmin(admin.ModelAdmin):
    list_display = ['company', 'amount', 'method', 'status', 'payment_date', 'created_at']
    list_filter = ['method', 'status']
    search_fields = ['company__name', 'transaction_id']


@admin.register(Branch)
class BranchAdmin(admin.ModelAdmin):
    list_display = ['name', 'company', 'code', 'is_main', 'is_active']
    list_filter = ['is_main', 'is_active']
    search_fields = ['name', 'company__name']
