from django.shortcuts import render, redirect
from django.http import HttpResponse, JsonResponse

from .carro import Carro
from PedidosApp.models import Producto
from django.contrib.auth.decorators import login_required
from django.template.loader import render_to_string
from django.core import serializers

# Create your views here.


# Agregar productos al carrito de la compra usando AJAX

@login_required(login_url='/acceder/acceder/')
def agregar_producto_ajax(request):
    
    if request.method == 'GET':
        carro = Carro(request)
        producto_id = request.GET['producto_id']
        cantidad = int(request.GET['cantidad'])
        producto = Producto.objects.get(id=producto_id)
        carro.agregar(producto=producto,cantidad=cantidad)
        session = request.session
        user = request.user
        
        # inicio prueba
        stock_act = Producto.objects.get(id=producto_id).stock
        # fin prueba
        
        total_productos = 0
        
        total = 0.0
        for key, value in request.session["carro"].items():
            total = total + (float(value["precio"]) * value["cantidad"])
            
            total_productos = total_productos + value["cantidad"]
            
        data = request.session['carro']
        
        
        
        t = render_to_string('CarroApp/actualizar_widget.html', {'carro': data, 'total_items': len(
            request.session['carro']), "importe_total": total, "total_productos": total_productos,"user":user})
        return JsonResponse({"data": t, "total_productos": total_productos,"stock_act":stock_act})
        


# Eliminar productos del carrito de la compra usando AJAX
@login_required(login_url='/acceder/acceder/')
def eliminar_producto_ajax(request):
    if request.method == 'GET':
        carro = Carro(request)
        producto_id = request.GET['producto_id']
        producto = Producto.objects.get(id=producto_id)
        carro.eliminar(producto=producto)
        session = request.session
        user = request.user
        
        total_productos = 0
            
        total = 0.0
        for key, value in request.session["carro"].items():
            total = total + (float(value["precio"]) * value["cantidad"])
            
            total_productos = total_productos + value["cantidad"]
            
      
        data = request.session['carro']
        
        t = render_to_string('CarroApp/actualizar_widget.html', {'carro': data, 'total_items': len(
            request.session['carro']), "importe_total": total, "total_productos": total_productos,"user":user})
        return JsonResponse({"data": t, "total_productos": total_productos})


# Actualizar cantidad de productos del carrito de la compra usando AJAX
@login_required(login_url='/acceder/acceder/')
def actualizar_producto_ajax(request):
    if request.method == 'GET':
        carro = Carro(request)
        producto_id = request.GET['producto_id']
        
        cantidad = int(request.GET['cantidad'])
        
        user = request.user
        
        total_productos =0
        
        producto = Producto.objects.get(id=producto_id)
        carro.actualizar(producto=producto, cantidad=cantidad)
        session = request.session
        total = 0.0
        for key, value in request.session["carro"].items():
            total = total + (float(value["precio"]) * value["cantidad"])
            total_productos = total_productos + value["cantidad"]
        
        data = request.session['carro']

        t = render_to_string('CarroApp/actualizar_widget.html', {
                             'carro': data, 'total_items': len(request.session['carro']), "importe_total": total, "total_productos": total_productos,"user":user})
        return JsonResponse({"data": t, "total_productos": total_productos})


# LAS SIGUIENTES VISTAS ESTAN DESACTUALIZADAS, Y HAN SIDO SUSTITUIDAS POR VERSIONES QUE FUNCIONAN CON JQUERY
#  *********************************************************************************************************

@login_required(login_url='/acceder/acceder/')
def agregar_producto(request, producto_id):

    carro = Carro(request)
    producto = Producto.objects.get(id=producto_id)
    carro.agregar(producto=producto)
    return redirect("Pedidos")
    


@login_required(login_url='/acceder/acceder/')
def eliminar_producto(request, producto_id):
    carro = Carro(request)
    producto = Producto.objects.get(id=producto_id)
    carro.eliminar(producto=producto)
    return redirect("Pedidos")


@login_required(login_url='/acceder/acceder/')
def decrementar_producto(request, producto_id):
    carro = Carro(request)
    producto = Producto.objects.get(id=producto_id)
    carro.decrementar(producto=producto)
    return redirect("Pedidos")


@login_required(login_url='/acceder/acceder/')
def limpiar_carro(request):
    carro = Carro(request)
    carro.limpiar()
    return redirect("Pedidos")

# Vistas para incrementar y decrementar varios productos a la vez

# agragar de 5 productos en 5 productos

@login_required(login_url='/acceder/acceder/')
def agregar_producto_5(request, producto_id):
    carro = Carro(request)
    producto = Producto.objects.get(id=producto_id)
    carro.incrementar_5(producto=producto)
    return redirect("Pedidos")

# decrementar productos de 5 en 5

@login_required(login_url='/acceder/acceder/')
def decrementar_producto_5(request, producto_id):
    carro = Carro(request)
    producto = Producto.objects.get(id=producto_id)
    carro.decrementar_5(producto=producto)
    return redirect("Pedidos")
