from django.contrib import admin
from .models import Shop, Theme

class ShopAdmin(admin.ModelAdmin):
    # List display settings
    list_display = ('name', 'phone', 'email', 'website')
    search_fields = ('name', 'phone', 'email')  # Enable search
    list_filter = ('mpesa_env',)  # Filter by Mpesa environment

    # Organizing fields into sections
    fieldsets = (
        ("Basic Information", {
            "fields": ('name', 'address', 'phone', 'email', 'website', 'logo'),
        }),
        ("Mpesa API Settings", {
            "fields": (
                'mpesa_consumer_key',
                'mpesa_consumer_secret',
                'mpesa_short_code',
                'mpesa_passkey',
                'mpesa_env',
            ),
            "classes": ('collapse',),  # Collapsible section for better UI
        }),
        ("SMTP Email Settings", {
            "fields": (
                'smtp_host',
                'smtp_port',
                'smtp_user',
                'smtp_password',
                'smtp_use_tls',
                'smtp_use_ssl',
            ),
            "classes": ('collapse',),
        }),
        ("SMS API Settings", {
            "fields": ('sms_api_url', 'sms_api_key', 'sms_sender_id'),
            "classes": ('collapse',),
        }),
    )

    # Read-only fields for sensitive data (Optional)
    readonly_fields = ('mpesa_consumer_key', 'mpesa_consumer_secret', 'mpesa_passkey')

    # Custom actions (Optional)
    actions = ['test_mpesa_connection', 'test_smtp_settings', 'test_sms_api']

    def test_mpesa_connection(self, request, queryset):
        # Implement logic to test Mpesa connection
        self.message_user(request, "Mpesa connection tested successfully.")

    def test_smtp_settings(self, request, queryset):
        # Implement logic to test SMTP email settings
        self.message_user(request, "SMTP email settings tested successfully.")

    def test_sms_api(self, request, queryset):
        # Implement logic to test SMS API connection
        self.message_user(request, "SMS API tested successfully.")

    test_mpesa_connection.short_description = "Test Mpesa API Connection"
    test_smtp_settings.short_description = "Test SMTP Email Settings"
    test_sms_api.short_description = "Test SMS API Connection"

# Registering models in the admin
admin.site.register(Shop, ShopAdmin)

class ThemeAdmin(admin.ModelAdmin):
    list_display = ('mode', 'primary_color')
    list_display_links = ('mode',)

admin.site.register(Theme, ThemeAdmin)
