from django.shortcuts import render, redirect
from django.core.mail import send_mail
from django.template.loader import render_to_string
from django.conf import settings
from .forms import SubmissionForm
from apps.core.models import SiteSettings, SubmitPageContent

def get_base_context():
    return {'site': SiteSettings.get_solo()}

def submission_form(request):
    site = SiteSettings.get_solo()
    page = SubmitPageContent.get_solo()
    if request.method == 'POST':
        form = SubmissionForm(request.POST, request.FILES)
        if form.is_valid():
            submission = form.save()
            
            # Send acknowledgement email to user
            user_subject = f"[{site.site_name}] Submission Received: {submission.title}"
            user_message = render_to_string('email/submission_acknowledgement.html', {
                'submission': submission,
                'site': site,
            })
            send_mail(
                user_subject,
                '',
                settings.DEFAULT_FROM_EMAIL,
                [submission.email],
                html_message=user_message,
                fail_silently=True
            )
            submission.acknowledgement_sent = True
            submission.save(update_fields=['acknowledgement_sent'])
            
            # Send alert to admin
            admin_subject = f"New Submission: {submission.title}"
            admin_message = render_to_string('email/submission_internal_alert.html', {
                'submission': submission,
                'site': site,
            })
            send_mail(
                admin_subject,
                '',
                settings.DEFAULT_FROM_EMAIL,
                [site.contact_email],
                html_message=admin_message,
                fail_silently=True
            )
            
            return redirect('submit_success')
    else:
        form = SubmissionForm()
        
    context = get_base_context()
    context.update({'form': form, 'page': page})
    return render(request, 'submissions/submit.html', context)

def submission_success(request):
    return render(request, 'submissions/submit_success.html', get_base_context())
