from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from .models import MarketplaceService
from apps.tickets.models import Ticket


def marketplace_list(request):
    category = request.GET.get('category', 'all')
    services = MarketplaceService.objects.filter(is_active=True)

    if category != 'all':
        services = services.filter(category=category)

    categories = MarketplaceService.CATEGORY_CHOICES

    return render(request, 'public/marketplace.html', {
        'services': services,
        'active_category': category,
        'categories': categories,
    })


@login_required
def marketplace_request(request, slug):
    service = get_object_or_404(MarketplaceService, slug=slug, is_active=True)

    if request.method == 'POST':
        message = request.POST.get('message', '').strip()
        budget = request.POST.get('budget', '').strip()

        full_message = f'{message}'
        if budget:
            full_message += f'\n\nBudget / Timeline: {budget}'

        Ticket.objects.create(
            source=Ticket.SOURCE_MARKETPLACE,
            user=request.user,
            sender_name=request.user.get_full_name() or request.user.username,
            sender_email=request.user.email,
            sender_phone=request.user.phone,
            sender_company=request.user.company,
            subject=f'Marketplace Request: {service.title}',
            message=full_message,
            marketplace_service=service,
            category='Marketplace',
        )
        messages.success(request, f'Your request for {service.title} has been submitted. We will get back to you shortly.')
        return redirect('marketplace')

    return render(request, 'public/marketplace_request.html', {'service': service})
