# apps/fornecedores_insumos/views.py

from django.shortcuts import render, redirect, get_object_or_404
from apps.dashboard.utils import get_user_info
from apps.fornecedores_insumos.forms import FornecedoresInsumosForm
from apps.fornecedores_insumos.models import FornecedoresInsumosModels
from django.contrib import messages
from django.utils.safestring import mark_safe

def cadastro_fornecedores_insumos(request):
    if not request.user.is_authenticated:
        return redirect('index')

    user_info = get_user_info(request.user.id)

    if request.method == 'POST':
        form = FornecedoresInsumosForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, mark_safe(
                '<i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Novo fornecedor cadastrado com êxito.'))
            return redirect('lista_fornecedores_insumos')
    else:
        form = FornecedoresInsumosForm()

    return render(request, 'fornecedores_insumos/cadastro_fornecedores_insumos.html', {"user_info": user_info, "form": form})


def editar_fornecedores_insumos(request, fornecedor_id):
    if not request.user.is_authenticated:
        return redirect('index')

    fornecedor = get_object_or_404(FornecedoresInsumosModels, pk=fornecedor_id)
    user_info = get_user_info(request.user.id)

    if request.method == 'POST':
        form = FornecedoresInsumosForm(request.POST, instance=fornecedor)
        if form.is_valid():
            form.save()
            messages.success(request, mark_safe(
                '<i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Fornecedor atualizado com êxito.'))
            return redirect('lista_fornecedores_insumos')
    else:
        form = FornecedoresInsumosForm(instance=fornecedor)

    return render(request, 'fornecedores_insumos/editar_fornecedor_insumo.html', {
        "form": form,
        "user_info": user_info,
        'fornecedor': fornecedor,
        "fornecedor_id": fornecedor_id
    })

def lista_fornecedores_insumos(request):
    if not request.user.is_authenticated:
        return redirect('index')

    user_info = get_user_info(request.user.id)
    dados_fornecedores = FornecedoresInsumosModels.objects.all()

    return render(request, 'fornecedores_insumos/lista_fornecedores_insumos.html', {
        "cards_fornecedores_insumos": dados_fornecedores,
        "user_info": user_info
    })

def deletar_fornecedores_insumos(request, fornecedor_id):
    if not request.user.is_authenticated:
        return redirect('index')

    try:
        fornecedor = FornecedoresInsumosModels.objects.get(id=fornecedor_id)
        fornecedor.delete()
        messages.success(request, mark_safe(
            '<i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Fornecedor deletado com êxito.'))
    except FornecedoresInsumosModels.DoesNotExist:
        messages.error(request, mark_safe(
            '<i class="fa-solid fa-circle-exclamation"></i><strong class="mx-1">Erro!</strong> Fornecedor não encontrado.'))
    return redirect('lista_fornecedores_insumos')
