# Create your views here.
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required

from .models import Proyecto, Accion, Riesgo
from .forms import ProyectoForm, RiesgoForm

import logging


@login_required
def principal(request):
    riesgos = Riesgo.objects.all()

    return render(request, 'gestion/lista_riesgos.html', {'riesgos': riesgos})


# Vistas para los proyectos
@login_required
def lista_proyectos(request):
    proyectos = Proyecto.objects.all()
    return render(request, 'gestion/lista_proyectos.html', {'proyectos': proyectos})


@login_required
def detalle_proyecto(request, proyecto_id):
    proyecto = get_object_or_404(Proyecto, pk=proyecto_id)

    riesgos = Riesgo.objects.filter(proyecto=proyecto_id)

    return render(request, 'gestion/detalle_proyecto.html', {'proyecto': proyecto, 'riesgos': riesgos})


@login_required
def nuevo_proyecto(request):
    if request.method == 'POST':
        form = ProyectoForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('gestion:lista_proyectos')
    else:
        form = ProyectoForm()
    return render(request, 'gestion/form_proyecto.html', {'form': form})


@login_required
def editar_proyecto(request, proyecto_id):
    proyecto = get_object_or_404(Proyecto, pk=proyecto_id)
    if request.method == 'POST':
        form = ProyectoForm(request.POST, request.FILES, instance=proyecto)
        if form.is_valid():
            form.save()
            return redirect('gestion:lista_proyectos')
    else:
        form = ProyectoForm(instance=proyecto)
    return render(request, 'gestion/form_proyecto.html', {'form': form})


@login_required
def eliminar_proyecto(request, proyecto_id):
    proyecto = get_object_or_404(Proyecto, pk=proyecto_id)
    proyecto.delete()
    return redirect('gestion:lista_proyectos')


# Vistas para los riesgos
@login_required
def lista_riesgos(request):
    riesgos = Riesgo.objects.all()
    return render(request, 'gestion/lista_riesgos.html', {'riesgos': riesgos})


@login_required
def detalle_riesgo(request, riesgo_id):
    riesgo = get_object_or_404(Riesgo, pk=riesgo_id)
    return render(request, 'gestion/detalle_riesgo.html', {'riesgo': riesgo})


@login_required
def nuevo_riesgo(request):

    proyectos = Proyecto.objects.all()  # vamos a ver si hay vehículos dados de alta

    if proyectos:
        if request.method == 'POST':
            form = RiesgoForm(request.POST, request.FILES)
            if form.is_valid():
                instancia = form.save(commit=False)

                instancia.valor = float(instancia.importe) * float(instancia.probabilidad) / 100

                instancia.save()

                return redirect('gestion:lista_riesgos')
        else:
            form = RiesgoForm()
        return render(request, 'gestion/form_riesgo.html', {'form': form})
    else:
        return render(request, 'gestion/index.html')


@login_required
def editar_riesgo(request, riesgo_id):
    riesgo = get_object_or_404(Riesgo, pk=riesgo_id)

    if request.method == 'POST':
        form = RiesgoForm(request.POST, request.FILES, instance=riesgo)
        if form.is_valid():
            form.save()
            return redirect('gestion:lista_riesgos')
    else:
        form = RiesgoForm(instance=riesgo)
    return render(request, 'gestion/form_riesgo.html', {'form': form})


@login_required
def eliminar_riesgo(request, riesgo_id):
    riesgo = Riesgo.objects.get(pk=riesgo_id)
    riesgo.delete()
    return redirect('gestion:lista_riesgos')
