from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy
from django.views.generic import ListView, CreateView, UpdateView, DeleteView
from master.models import PackageInquiry , ContactUs


from helpers import PaginatedListView
# -------------------- Enquiry Management --------------------

from django.views.generic import ListView
from django.db.models import Q

from helpers import paginate_queryset

class EnquiryListView(LoginRequiredMixin, PaginatedListView):
    model = PackageInquiry
    template_name = 'enquiry/enquiry_list.html'
    context_object_name = 'enquiries'
    
    def get_queryset(self):

        qs = PackageInquiry.objects.all().order_by("-id")

        name = self.request.GET.get("name", "").strip()
        email = self.request.GET.get("email", "").strip()
        contact = self.request.GET.get("contact", "").strip()
        city = self.request.GET.get("city", "").strip()

        if name:
            qs = qs.filter(full_name__icontains=name)

        if email:
            qs = qs.filter(email__icontains=email)

        if contact:
            qs = qs.filter(phone__icontains=contact)

        if city:
            qs = qs.filter(city__icontains=city)   # only if field exists

        return qs
    


class EnquiryCreateView(LoginRequiredMixin, CreateView):
    model = PackageInquiry
    fields = ['name', 'email', 'contact', 'city', 'message']
    template_name = 'enquiry/enquiry_form.html'
    success_url = reverse_lazy('enquiry:enquiry_list')

    def form_valid(self, form):
        messages.success(self.request, "✅ Enquiry submitted successfully!")
        return super().form_valid(form)


class EnquiryUpdateView(LoginRequiredMixin, UpdateView):
    model = PackageInquiry
    fields = ['name', 'email', 'contact', 'city', 'message']
    template_name = 'enquiry/enquiry_form.html'
    success_url = reverse_lazy('enquiry:enquiry_list')

    def form_valid(self, form):
        messages.success(self.request, "✏️ Enquiry updated successfully!")
        return super().form_valid(form)


class EnquiryDeleteView(LoginRequiredMixin, DeleteView):
    model = PackageInquiry
    template_name = 'enquiry_confirm_delete.html'
    success_url = reverse_lazy('enquiry:enquiry_list')

    def delete(self, request, *args, **kwargs):
        messages.warning(request, "🗑️ Enquiry deleted successfully!")
        return super().delete(request, *args, **kwargs)




#Career 

class CareerListView(LoginRequiredMixin, PaginatedListView):
    model = ContactUs 
    template_name = 'career/career_list.html'
    context_object_name = 'career_enquires'

    def get_queryset(self):

        qs = ContactUs.objects.all().order_by("-id")

        name = self.request.GET.get("name", "").strip()
        email = self.request.GET.get("email", "").strip()
        contact = self.request.GET.get("contact", "").strip()
        city = self.request.GET.get("city", "").strip()

        if name:
            qs = qs.filter(full_name__icontains=name)

        if email:
            qs = qs.filter(email__icontains=email)

        if contact:
            qs = qs.filter(phone__icontains=contact)

        if city:
            qs = qs.filter(city__icontains=city)   # only if field exists

        return qs
    


class CareerCreateView(LoginRequiredMixin, CreateView):
    model = ContactUs 
    fields = ['name', 'email', 'contact', 'city', 'message']
    template_name = 'enquiry/enquiry_form.html'
    success_url = reverse_lazy('enquiry:enquiry_list')

    def form_valid(self, form):
        messages.success(self.request, "✅ Enquiry submitted successfully!")
        return super().form_valid(form)


class CareerUpdateView(LoginRequiredMixin, UpdateView):
    model = ContactUs 
    fields = ['name', 'email', 'contact', 'city', 'message']
    template_name = 'enquiry/enquiry_form.html'
    success_url = reverse_lazy('enquiry:enquiry_list')

    def form_valid(self, form):
        messages.success(self.request, "✏️ Enquiry updated successfully!")
        return super().form_valid(form)


class CareerDeleteView(LoginRequiredMixin, DeleteView):
    model = ContactUs 
    template_name = 'enquiry_confirm_delete.html'
    success_url = reverse_lazy('enquiry:enquiry_list')

    def delete(self, request, *args, **kwargs):
        messages.warning(request, "🗑️ Enquiry deleted successfully!")
        return super().delete(request, *args, **kwargs)
