from django.contrib import admin
from .models import AyurvedaVendorListing, Booking, Category, Deal, NavigationItem, Page, PageSection, SiteSettings, SupportRequest, TrustBenefit, WebsiteImage


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    list_display = ('name', 'slug', 'sort_order', 'active')
    list_editable = ('sort_order', 'active')
    prepopulated_fields = {'slug': ('name',)}


@admin.register(Deal)
class DealAdmin(admin.ModelAdmin):
    list_display = ('title', 'category', 'clinic', 'city', 'price', 'featured', 'active')
    list_filter = ('category', 'city', 'featured', 'active')
    search_fields = ('title', 'clinic', 'city')
    prepopulated_fields = {'slug': ('title',)}
    fieldsets = ((None, {'fields': ('category', 'title', 'slug', 'clinic', 'city', 'description', 'image', 'image_url', 'link_url')}), ('Price and rating', {'fields': ('price', 'original_price', 'rating', 'review_count')}), ('Display', {'fields': ('featured', 'active')}))


@admin.register(Booking)
class BookingAdmin(admin.ModelAdmin):
    list_display = ('name', 'deal', 'preferred_date', 'status', 'created_at')
    list_filter = ('status', 'preferred_date')


admin.site.register(SupportRequest)


class PageSectionInline(admin.StackedInline):
    model = PageSection
    extra = 1
    fields = ('heading', 'subheading', 'body', 'image_url', 'button_label', 'button_url', 'sort_order', 'active')


@admin.register(Page)
class PageAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'published', 'sort_order', 'updated_at')
    list_editable = ('published', 'sort_order')
    search_fields = ('title', 'summary', 'body')
    prepopulated_fields = {'slug': ('title',)}
    inlines = (PageSectionInline,)
    fieldsets = (
        ('Page', {'fields': ('title', 'slug', 'summary', 'body', 'featured_image', 'published', 'sort_order')}),
        ('Search engines', {'fields': ('meta_title', 'meta_description'), 'classes': ('collapse',)}),
    )


@admin.register(SiteSettings)
class SiteSettingsAdmin(admin.ModelAdmin):
    fieldsets = (('Brand and header', {'fields': ('site_name', 'tagline', 'logo', 'logo_url', 'location_text')}), ('Homepage hero', {'fields': ('hero_badge', 'hero_title', 'hero_description')}), ('Featured deals', {'fields': ('featured_heading',)}), ('Special offer', {'fields': ('offer_heading', 'offer_text', 'offer_code', 'offer_button_label', 'offer_button_url', 'offer_image')}), ('Footer and support', {'fields': ('footer_description', 'footer_text', 'support_email', 'support_phone')}))
    def has_add_permission(self, request):
        return not SiteSettings.objects.exists()

    def has_delete_permission(self, request, obj=None):
        return False


@admin.register(NavigationItem)
class NavigationItemAdmin(admin.ModelAdmin):
    list_display = ('label', 'url', 'sort_order', 'active', 'open_in_new_tab')
    list_editable = ('sort_order', 'active', 'open_in_new_tab')


@admin.register(TrustBenefit)
class TrustBenefitAdmin(admin.ModelAdmin):
    list_display = ('title', 'sort_order', 'active')
    list_editable = ('sort_order', 'active')


@admin.register(WebsiteImage)
class WebsiteImageAdmin(admin.ModelAdmin):
    list_display = ('label', 'page_path', 'original_path', 'has_replacement', 'active', 'updated_at')
    list_filter = ('page_path', 'active')
    list_editable = ('active',)
    search_fields = ('label', 'page_path', 'original_path')
    readonly_fields = ('original_path', 'image_preview', 'updated_at')
    fields = ('page_path', 'label', 'original_path', 'image_preview', 'replacement_image', 'replacement_url', 'active', 'updated_at')

    @admin.display(boolean=True, description='Replacement')
    def has_replacement(self, obj):
        return bool(obj.replacement_image or obj.replacement_url)

    @admin.display(description='Current image')
    def image_preview(self, obj):
        from django.utils.html import format_html
        source = obj.replacement_image.url if obj.replacement_image else (obj.replacement_url or obj.original_path)
        return format_html('<img src="{}" style="max-width:320px;max-height:190px;border-radius:8px" alt="">', source)


@admin.register(AyurvedaVendorListing)
class AyurvedaVendorListingAdmin(admin.ModelAdmin):
    list_display = ('title', 'company_name', 'category', 'listing_type', 'price', 'quality_rating', 'status', 'sponsored', 'sponsored_until')
    list_filter = ('category', 'status', 'listing_type', 'sponsored', 'city')
    list_editable = ('quality_rating', 'status', 'sponsored', 'sponsored_until')
    search_fields = ('title', 'company_name', 'email', 'phone')
    readonly_fields = ('created_at',)
    fieldsets = (('Vendor', {'fields': ('company_name', 'contact_name', 'email', 'phone', 'city')}), ('Listing', {'fields': ('category', 'listing_type', 'title', 'description', 'price', 'original_price', 'image', 'image_url')}), ('Quality and approval', {'fields': ('quality_rating', 'review_count', 'status')}), ('Paid first-row placement', {'fields': ('sponsored', 'sponsorship_amount', 'sponsored_until')}), ('Record', {'fields': ('created_at',)}))

# Register your models here.
