from wagtail import hooks
from wagtail.snippets.views.snippets import SnippetViewSet, SnippetViewSetGroup
from wagtail.snippets.models import register_snippet
from wagtail.admin.panels import (
    FieldPanel, MultiFieldPanel, InlinePanel, FieldRowPanel, TabbedInterface, ObjectList
)
from .models import Service, Testimonial, ContactSubmission, SiteSettings


# ── Improve Service snippet panels ───────────────────────────────────────────
class ServiceViewSet(SnippetViewSet):
    model = Service
    icon = 'pick'
    menu_label = 'Services'
    menu_order = 100
    list_display = ['title', 'slug', 'order', 'active']
    list_filter = ['active']
    search_fields = ['title', 'short_desc']

    panels = [
        TabbedInterface([
            ObjectList([
                FieldPanel('title'),
                FieldPanel('slug'),
                FieldRowPanel([FieldPanel('order'), FieldPanel('active')]),
                FieldPanel('icon_path'),
            ], heading='Basic Info'),
            ObjectList([
                FieldPanel('image'),
                FieldPanel('short_desc'),
                FieldPanel('full_desc'),
                FieldPanel('features'),
            ], heading='Content'),
            ObjectList([
                FieldPanel('seo_title'),
                FieldPanel('seo_desc'),
            ], heading='SEO'),
        ])
    ]


class TestimonialViewSet(SnippetViewSet):
    model = Testimonial
    icon = 'group'
    menu_label = 'Testimonials'
    menu_order = 200
    list_display = ['name', 'role', 'rating', 'active']
    list_filter = ['active', 'rating']


class ServiceTestimonialGroup(SnippetViewSetGroup):
    items = [ServiceViewSet, TestimonialViewSet]
    menu_icon = 'folder-open-inverse'
    menu_label = 'Services & Reviews'
    menu_order = 300


register_snippet(ServiceTestimonialGroup)


# ── Contact submissions in sidebar ───────────────────────────────────────────
@hooks.register('register_admin_menu_item')
def register_contact_menu():
    from django.urls import reverse
    from wagtail.admin.menu import MenuItem
    return MenuItem(
        'Contact Submissions',
        '/django-admin/website/contactsubmission/',
        icon_name='mail',
        order=400,
    )
