-
Notifications
You must be signed in to change notification settings - Fork 0
/
carrito.py
61 lines (54 loc) · 2.72 KB
/
carrito.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from producto import Producto
from inventario import Inventario
from db import get_db_connection
from flask import jsonify
class Carrito:
def __init__(self):
self.conexion = get_db_connection()
self.cursor = self.conexion.cursor()
self.items = []
def agregar(self, codigo, cantidad, inventario):
producto = inventario.consultar_producto(codigo)
if producto is None:
return jsonify({'message': 'El producto no existe.'}), 404
if producto.cantidad < cantidad:
return jsonify({'message': 'Cantidad en stock insuficiente.'}), 400
for item in self.items:
if item.codigo == codigo:
item.cantidad += cantidad
sql = f'UPDATE productos SET cantidad = cantidad - {cantidad} WHERE codigo = {codigo};'
self.cursor.execute(sql)
self.conexion.commit()
return jsonify({'message': 'Producto agregado al carrito correctamente.'}), 200
nuevo_item = Producto(codigo, producto.descripcion, cantidad, producto.precio)
self.items.append(nuevo_item)
sql = f'UPDATE productos SET cantidad = cantidad - {cantidad} WHERE codigo = {codigo};'
self.cursor.execute(sql)
self.conexion.commit()
return jsonify({'message': 'Producto agregado al carrito correctamente.'}), 200
def quitar(self, codigo, cantidad):
for item in self.items:
if item.codigo == codigo:
if cantidad > item.cantidad:
return jsonify({'message': 'Cantidad a quitar mayor a la cantidad en el carrito.'}), 400
item.cantidad -= cantidad
if item.cantidad == 0:
self.items.remove(item)
sql = f'UPDATE productos SET cantidad = cantidad + {cantidad} WHERE codigo = {codigo};'
self.cursor.execute(sql)
self.conexion.commit()
return jsonify({'message': 'Producto quitado del carrito correctamente.'}), 200
return jsonify({'message': 'El producto no se encuentra en el carrito.'}), 404
def vaciar(self):
for item in self.items:
sql = f'UPDATE productos SET cantidad = cantidad + {item.cantidad} WHERE codigo = {item.codigo};'
self.cursor.execute(sql)
self.conexion.commit()
self.items = []
return jsonify({'message': 'Carrito vaciado correctamente.'}), 200
def mostrar(self):
productos_carrito = []
for item in self.items:
producto = {'codigo': item.codigo, 'descripcion': item.descripcion, 'cantidad': item.cantidad, 'precio': item.precio}
productos_carrito.append(producto)
return jsonify(productos_carrito), 200