from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from import_export import resources, fields
from import_export.widgets import ForeignKeyWidget
from .models import Contact
from django.contrib.auth.models import User

# ✅ Unregister Contact if already registered
if Contact in admin.site._registry:
    admin.site.unregister(Contact)

# ✅ Define Resource for Import/Export
class ContactResource(resources.ModelResource):
    owner = fields.Field(
        column_name='owner',
        attribute='owner',
        widget=ForeignKeyWidget(User, field='username')  # Maps 'owner' to 'username'
    )

    class Meta:
        model = Contact
        exclude = ('id',)  # Exclude 'id' since Django auto-generates it
        import_id_fields = ['phone']  # Use 'phone' as unique identifier
        fields = (
            'owner', 'name', 'phone', 'email', 'company', 'address', 'notes', 
            'birthday', 'status', 'sms_is_send', 'mail_is_send', 'whatsapp_is_send', 
            'whatsapp_is_verified', 'created_at', 'updated_at'
        )

# ✅ Define ContactAdmin with Import/Export
@admin.register(Contact)
class ContactAdmin(ImportExportModelAdmin):
    resource_class = ContactResource
    list_display = (
        'owner', 'name', 'phone', 'email', 'company', 'birthday', 
        'status', 'sms_is_send', 'mail_is_send', 'whatsapp_is_send', 
        'whatsapp_is_verified', 'created_at', 'updated_at'
    )
    list_filter = (
        'status', 'sms_is_send', 'mail_is_send', 'whatsapp_is_send', 
        'whatsapp_is_verified', 'created_at', 'updated_at'
    )
    search_fields = ('name', 'phone', 'email', 'company')
    ordering = ('-updated_at',)
    readonly_fields = ('created_at', 'updated_at')

    fieldsets = (
        ("Owner Info", {"fields": ("owner",)}),
        ("Contact Details", {"fields": ("name", "phone", "email", "company", "birthday", "address", "notes")}),
        ("Status & Verification", {"fields": ("status", "whatsapp_is_verified")}),
        ("Notifications", {"fields": ("sms_is_send", "mail_is_send", "whatsapp_is_send")}),
        ("Timestamps", {"fields": ("created_at", "updated_at")}),
    )