Coverage for backend \ app \ Inventario \ controllers \ inventarioController.py: 85.19%
27 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-29 16:13 -0500
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-29 16:13 -0500
1from fastapi import APIRouter, Depends
2from app.Inventario.services.inventarioService import InventarioService
3from app.Inventario.schemas.inventarioSchemas import *
4from app.database import obtenerSesion
5from app.configuracionGeneral.seguridadJWT import protegerRuta
6from app.configuracionGeneral.schemasGenerales import respuestaApi
8router = APIRouter()
10@router.get("/", tags=["Inventario"], summary="Obtener todos los inventarios", status_code=200, response_model=respuestaApi)
11async def obtenerTodosLosInventarios(dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "GET"))):
12 return InventarioService(dbSession).listarInventarios()
14@router.get("/{idInventario}", tags=["Inventario"], summary="Obtener un inventario por id", status_code=200, response_model=respuestaApi)
15async def obtenerInventarioPorId(idInventario: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "GET"))):
16 return InventarioService(dbSession).obtenerPorId(idInventario)
18@router.get("/producto/{idProducto}", tags=["Inventario"], summary="Obtener inventario por id de producto", status_code=200, response_model=respuestaApi)
19async def obtenerInventarioPorProducto(idProducto: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "GET"))):
20 return InventarioService(dbSession).obtenerPorProducto(idProducto)
22@router.post("/", tags=["Inventario"], description="Crear un nuevo inventario para un producto existente", response_model=respuestaApi)
23async def crearInventario(inventario: InventarioCrearSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "POST"))):
24 result, status = InventarioService(dbSession).crearInventario(inventario)
25 from fastapi.responses import JSONResponse
26 return JSONResponse(status_code=status, content=result.model_dump())
28@router.put("/{idInventario}", tags=["Inventario"], summary="Actualizar un inventario por id", description="Administrador: puede modificar `cantidadDisponible`, `cantidadMinima` y `activoInventario`. Bodeguero: puede modificar `cantidadMinima` y `activoInventario` (no puede cambiar `cantidadDisponible`).", status_code=200, response_model=respuestaApi)
29async def actualizarInventario(idInventario: int, inventario: InventarioActualizarSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "PUT"))):
30 return InventarioService(dbSession).modificarInventario(idInventario, inventario, usuario)
32@router.delete("/{idInventario}", tags=["Inventario"], summary="Deshabilitar un inventario por id", status_code=200, response_model=respuestaApi)
33async def deshabilitarInventario(idInventario: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Inventario", "DELETE"))):
34 return InventarioService(dbSession).deshabilitarInventario(idInventario)