import logging

from django.shortcuts import render, redirect
from django.contrib import messages
from apps.blog.models import Post
from apps.products.models import Brand, Category, Product
from .models import Enquiry, GalleryImage
from .forms import EnquiryForm

logger = logging.getLogger(__name__)


def home(request):
    if request.method == 'POST':
        form = EnquiryForm(request.POST)
        if form.is_valid():
            try:
                Enquiry.objects.create(
                    title=form.cleaned_data.get('title', ''),
                    customer_name=form.cleaned_data['customer_name'],
                    business_name=form.cleaned_data.get('business_name', ''),
                    email=form.cleaned_data['email'],
                    phone_country=form.cleaned_data.get('phone_country', '+971'),
                    phone_number=form.cleaned_data['phone_number'],
                    country=form.cleaned_data.get('country', 'AE'),
                    vin_chasis_number=form.cleaned_data.get('vin_chasis_number', ''),
                    comments=form.cleaned_data['comments'],
                )
            except Exception:
                logger.exception('Failed to save enquiry submission')
                messages.error(
                    request,
                    'Something went wrong while submitting your enquiry. Please try again.'
                )
            else:
                messages.success(request, 'Your enquiry has been submitted successfully!')
                return redirect('home:index')
        else:
            messages.error(request, 'Please correct the errors below and try again.')
    else:
        form = EnquiryForm()
    
    latest_posts = Post.objects.filter(
        status=Post.Status.PUBLISHED
    ).select_related('author', 'category')[:3]
    
    featured_categories = Category.objects.filter(is_active=True, parent__isnull=True)

    top_rated_products = Product.objects.filter(
        status=Product.Status.ACTIVE,
        is_top_rated=True
    ).select_related('category', 'brand')[:3]

    active_brands = Brand.objects.filter(is_active=True)

    context = {
        'form': form,
        'latest_posts': latest_posts,
        'featured_categories': featured_categories,
        'top_rated_products': top_rated_products,
        'active_brands': active_brands,
    }
    return render(request, 'home/index.html', context)


def about(request):
    return render(request, 'home/about.html')


def services(request):
    return render(request, 'home/services.html')


def gallery(request):
    images = GalleryImage.objects.all()
    return render(request, 'home/gallery.html', {'images': images})