47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
from fastapi import APIRouter, Depends
|
|
from db.handlers.stock import StockHandler
|
|
from db.handlers.toolbox import ToolboxHandler
|
|
from utils import requestDict, logger
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/", summary="Запрос остатка инструмента")
|
|
async def toolkit_request(
|
|
request_data: dict = Depends(requestDict),
|
|
):
|
|
response = {"status": "error", "data": {}}
|
|
logger.info(f"Получение запроса остатка инструмента")
|
|
# logger.info(request_data)
|
|
toolkitId = request_data.get("body").get("toolkitId")
|
|
stocks = await StockHandler.getByToolkitId(toolkitId)
|
|
if not stocks:
|
|
return response
|
|
userId = request_data.get("body").get("userId")
|
|
allToolboxes = request_data.get("body").get("allToolboxes")
|
|
toolboxes = (
|
|
await ToolboxHandler.getByOwner(userId)
|
|
if not allToolboxes
|
|
else await ToolboxHandler.getAll()
|
|
)
|
|
if not toolboxes:
|
|
return response
|
|
toolboxesTitles = {toolbox["id"]: toolbox["title"] for toolbox in toolboxes}
|
|
stocksData = {"count": 0, "toolboxes": {}}
|
|
for stock in stocks:
|
|
toolboxTitle = toolboxesTitles.get(stock["toolbox_id"], None)
|
|
if not toolboxTitle:
|
|
continue
|
|
stocksData["count"] += stock["quantity"]
|
|
if toolboxTitle not in stocksData["toolboxes"]:
|
|
stocksData["toolboxes"][toolboxTitle] = {
|
|
"count": stock["quantity"],
|
|
"placement": stock["placement"],
|
|
}
|
|
else:
|
|
stocksData["toolboxes"][toolboxTitle]["count"] += stock["quantity"]
|
|
response["status"] = "ok"
|
|
response["data"] = stocksData
|
|
return response
|