Files
Fulfillment-Backend/routers/residues.py
2025-01-14 21:35:39 +04:00

158 lines
4.2 KiB
Python

from io import BytesIO
from fastapi import APIRouter, Depends, Response, Query
from backend.dependecies import SessionDependency
from generators.residual_qr_code_generator import ResidualQRCodeGenerator
from schemas.residues import *
from services.auth import authorized_user
from services.residues import ResiduesService
residues_router = APIRouter(
prefix="/residues",
tags=["residues"],
)
@residues_router.get(
'/pallet/{pallet_id}',
response_model=GetResidualPalletResponse,
operation_id='get_residual_pallet',
dependencies=[Depends(authorized_user)],
)
async def get_pallet(
session: SessionDependency,
pallet_id: int,
):
return await ResiduesService(session).get_pallet(pallet_id)
@residues_router.post(
'/pallet',
response_model=CreateResidualPalletResponse,
operation_id='create_residual_pallet',
dependencies=[Depends(authorized_user)],
)
async def create_pallet(
session: SessionDependency,
request: CreateResidualPalletRequest,
):
return await ResiduesService(session).create_pallet(request)
@residues_router.delete(
'/pallet/{pallet_id}',
response_model=DeleteResidualPalletResponse,
operation_id='delete_residual_pallet',
dependencies=[Depends(authorized_user)],
)
async def delete_pallet(
session: SessionDependency,
pallet_id: int,
):
return await ResiduesService(session).delete_pallet(pallet_id)
@residues_router.post(
'/product',
response_model=CreateResidualProductResponse,
operation_id='create_residual_product',
dependencies=[Depends(authorized_user)],
)
async def create_residual_product(
session: SessionDependency,
request: CreateResidualProductRequest,
):
return await ResiduesService(session).create_residual_product(request)
@residues_router.post(
'/product/{residual_product_id}',
response_model=UpdateResidualProductResponse,
operation_id='update_residual_product',
dependencies=[Depends(authorized_user)],
)
async def update_residual_product(
session: SessionDependency,
request: UpdateResidualProductRequest,
residual_product_id: int,
):
return await ResiduesService(session).update_residual_product(request, residual_product_id)
@residues_router.delete(
'/product/{residual_product_id}',
response_model=DeleteResidualProductResponse,
operation_id='delete_residual_product',
dependencies=[Depends(authorized_user)],
)
async def delete_residual_product(
session: SessionDependency,
residual_product_id: int,
):
return await ResiduesService(session).delete_residual_product(residual_product_id)
@residues_router.get(
'/box/{box_id}',
response_model=GetResidualBoxResponse,
operation_id='get_residual_box',
dependencies=[Depends(authorized_user)],
)
async def get_box(
session: SessionDependency,
box_id: int,
):
return await ResiduesService(session).get_box(box_id)
@residues_router.post(
'/box',
response_model=CreateResidualBoxResponse,
operation_id='create_residual_box',
dependencies=[Depends(authorized_user)],
)
async def create_box(
session: SessionDependency,
request: CreateResidualBoxRequest,
):
return await ResiduesService(session).create_box(request)
@residues_router.delete(
'/box/{box_id}',
response_model=DeleteResidualBoxResponse,
operation_id='delete_residual_box',
dependencies=[Depends(authorized_user)],
)
async def delete_box(
session: SessionDependency,
box_id: int,
):
return await ResiduesService(session).delete_box(box_id)
@residues_router.post(
'/receipt',
response_model=LoadReceiptResponse,
operation_id='receipt',
)
async def receipt(
session: SessionDependency,
request: LoadReceiptRequest,
):
return await ResiduesService(session).load_receipt(request)
@residues_router.get(
"/pdf/",
operation_id="get_pdf",
)
async def generate_pdf(
session: SessionDependency,
pallet_ids: str = Query(""),
box_ids: str = Query(""),
):
pdf_file: BytesIO = await ResidualQRCodeGenerator(session).generate(pallet_ids, box_ids)
return Response(pdf_file.getvalue(), media_type="application/pdf")