from django.contrib import admin
from .models import (
    Package,
    PackageImage,
    PackageItinerary,
    PackageInquiry
)


# ===============================
# Inline Images
# ===============================
class PackageImageInline(admin.TabularInline):
    model = PackageImage
    extra = 1


# ===============================
# Inline Itinerary
# ===============================
class PackageItineraryInline(admin.TabularInline):
    model = PackageItinerary
    extra = 1


# ===============================
# Package Admin
# ===============================
@admin.register(Package)
class PackageAdmin(admin.ModelAdmin):

    list_display = (
        "title",
        "duration",
        "discounted_price",
        "is_active",
        "created_at"
    )

    list_filter = ("is_active", "created_at")

    search_fields = ("title", "subtitle")

    prepopulated_fields = {"slug": ("title",)}

    inlines = [
        PackageImageInline,
        PackageItineraryInline
    ]


# ===============================
# Inquiry Admin
# ===============================
@admin.register(PackageInquiry)
class PackageInquiryAdmin(admin.ModelAdmin):

    list_display = (
        "full_name",
        "email",
        "phone",
        "created_at"
    )

    list_filter = ("created_at",)

    search_fields = ("full_name", "email", "phone")


from django.shortcuts import render, get_object_or_404, redirect
from .models import Package
from .forms import PackageInquiryForm


# ===============================
# Package Detail View
# ===============================
def package_detail(request, slug):

    package = get_object_or_404(
        Package,
        slug=slug,
        is_active=True
    )

    form = PackageInquiryForm()

    if request.method == "POST":
        form = PackageInquiryForm(request.POST)

        if form.is_valid():
            inquiry = form.save(commit=False)
            inquiry.package = package
            inquiry.save()

            return redirect("package_detail", slug=slug)

    context = {
        "package": package,
        "form": form
    }

    return render(request, "packages/detail.html", context)
