from django.shortcuts import render
from django.http import JsonResponse, HttpResponse
from django.core.mail import send_mail
from django.urls import reverse
from django.conf import settings
from .models import Configuracion


def index (request):
    from .models import Sucursal, Representante
    from .forms import ContactForm

    representantes = Representante.objects.all()
    sucursales = Sucursal.objects.all()
    context = {'representantes': representantes, 'sucursales': sucursales, 'form': ContactForm}
    return render(request, 'index.html', context)


def send_email(request):
    from .forms import ContactForm
    import logging

    logger = logging.getLogger(__name__)

    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['nombre']
            phone = form.cleaned_data.get('telefono', '')
            email = form.cleaned_data['email']
            message = form.cleaned_data['mensaje']

            subject = f'SOLICITUD DE CONTACTO en Sitio WEB: {name}'
            full_message = f'Nombre: {name}\nNúmero de Teléfono: {phone}\nEmail: {email}\nMensaje:\n{message}'

            try:
                send_mail(
                    subject,
                    full_message,
                    'sitio.amtrac@gmail.com',  # De
                    [Configuracion.load().email_contacto],  # Para
                )
                return JsonResponse({'success': True})
            except Exception as e:
                # Registra el error
                logger.error(f'Error al enviar el correo: {e}')
                return JsonResponse({'success': False, 'errors': {
                    'email': ['Error al enviar el formulario. Inténtelo de nuevo más tarde.']}})
        else:
            return JsonResponse({'success': False, 'errors': form.errors})
    else:
        form = ContactForm()

    return render(request, 'layouts/partials/contact-form.html', {'form': form})


def cotizar(request):
    from .forms import CotizarForm
    return render(request, 'cotizar.html', {'form': CotizarForm()})


def send_cotizar(request):
    from .forms import CotizarForm
    import logging

    logger = logging.getLogger(__name__)

    if request.method == 'POST':
        form = CotizarForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['nombre']
            phone = form.cleaned_data.get('telefono', '')
            email = form.cleaned_data['email']
            message = form.cleaned_data['mensaje']
            company = form.cleaned_data.get('empresa', '')
            schedule = form.cleaned_data.get('horario', '')

            subject = f'SOLICITUD DE COTIZACION en Sitio WEB: {name}'
            full_message = f'Nombre: {name}\nEmpresa: {company}\nNúmero de Teléfono: {phone}\nEmail: {email}\nHorario para contactar: {schedule}\nMensaje:\n{message}'

            try:
                send_mail(
                    subject,
                    full_message,
                    'sitio.amtrac@gmail.com',  # De
                    [Configuracion.load().email_contacto],  # Para
                )
                return JsonResponse({'success': True})
            except Exception as e:
                logger.error(f'Error al enviar el correo: {e}')
                return JsonResponse({'success': False, 'errors': {
                    'email': ['Error al enviar el formulario. Inténtelo de nuevo más tarde.']}})
        else:
            return JsonResponse({'success': False, 'errors': form.errors})
    else:
        form = CotizarForm()

    return render(request, 'layouts/partials/cotizar-form.html', {'form': form})


def robots_txt(request):
    content = [
        "User-agent: *",
        "Allow: /",
        # Por ejemplo, bloquea la sección admin para todos los bots
        f"Disallow: {reverse('admin:index')}",
    ]

    # Si estás en modo DEBUG, tal vez quieras bloquear to do el sitio
    if settings.DEBUG:
        content.append("Disallow: /")

    return HttpResponse("\n".join(content), content_type="text/plain")