158 lines
4.2 KiB
Python
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")
|