from django.shortcuts import render, get_object_or_404
from django.db.models import F
from django.views.decorators.http import require_POST
from django.contrib import messages
from .models import LandingPage
from apps.leads.models import Lead


def landing_detail(request, slug):
    page = get_object_or_404(LandingPage, slug=slug, is_published=True)
    LandingPage.objects.filter(pk=page.pk).update(views_count=F('views_count') + 1)
    properties = page.properties.filter(is_published=True)[:12]
    return render(request, 'landing/detail.html', {
        'page': page,
        'properties': properties,
    })


@require_POST
def landing_inquiry(request, slug):
    page = get_object_or_404(LandingPage, slug=slug, is_published=True)
    name = request.POST.get('name', '').strip()
    email = request.POST.get('email', '').strip()
    phone = request.POST.get('phone', '').strip()
    msg = request.POST.get('message', '').strip()

    if name and (email or phone):
        ip = request.META.get('HTTP_X_FORWARDED_FOR', '').split(',')[0].strip() \
            or request.META.get('REMOTE_ADDR')
        Lead.objects.create(
            name=name, email=email, phone=phone, message=msg,
            source='landing_page', landing_page=page,
            interested_in=f"Landing: {page.title}",
            ip_address=ip or None,
            user_agent=request.META.get('HTTP_USER_AGENT', '')[:255],
            referrer=request.META.get('HTTP_REFERER', '')[:500],
        )
        messages.success(request, 'Thanks! We will contact you shortly.')
    else:
        messages.error(request, 'Please provide your name and a phone or email.')

    from django.shortcuts import redirect
    return redirect('landing_pages:detail', slug=slug)
