feat: pallets and boxes for deals
This commit is contained in:
@@ -15,4 +15,5 @@ from .billing import billing_router
|
||||
from .task import task_router
|
||||
from .work_shifts import work_shifts_router
|
||||
from .statistics import statistics_router
|
||||
from .expense import expense_router
|
||||
from .expense import expense_router
|
||||
from .shipping import shipping_router
|
||||
|
||||
128
routers/shipping.py
Normal file
128
routers/shipping.py
Normal file
@@ -0,0 +1,128 @@
|
||||
from io import BytesIO
|
||||
|
||||
from fastapi import APIRouter, Depends, Response
|
||||
|
||||
from backend.dependecies import SessionDependency
|
||||
from generators.shipping_qr_code_generator import ShippingQRCodeGenerator
|
||||
from schemas.shipping import *
|
||||
from services.auth import authorized_user
|
||||
from services.shipping import ShippingService
|
||||
|
||||
shipping_router = APIRouter(
|
||||
prefix="/shipping",
|
||||
tags=["shipping"],
|
||||
)
|
||||
|
||||
|
||||
@shipping_router.post(
|
||||
'/pallet/{deal_id}',
|
||||
response_model=CreatePalletResponse,
|
||||
operation_id='create_pallet',
|
||||
dependencies=[Depends(authorized_user)],
|
||||
)
|
||||
async def create_pallet(
|
||||
session: SessionDependency,
|
||||
deal_id: int,
|
||||
):
|
||||
return await ShippingService(session).create_pallet(deal_id)
|
||||
|
||||
|
||||
@shipping_router.delete(
|
||||
'/pallet/{pallet_id}',
|
||||
response_model=DeletePalletResponse,
|
||||
operation_id='delete_pallet',
|
||||
dependencies=[Depends(authorized_user)],
|
||||
)
|
||||
async def delete_pallet(
|
||||
session: SessionDependency,
|
||||
pallet_id: int,
|
||||
):
|
||||
return await ShippingService(session).delete_pallet(pallet_id)
|
||||
|
||||
|
||||
@shipping_router.post(
|
||||
'/product',
|
||||
response_model=UpdateShippingProductResponse,
|
||||
operation_id='update_shipping_product',
|
||||
dependencies=[Depends(authorized_user)],
|
||||
)
|
||||
async def update_shipping_product(
|
||||
session: SessionDependency,
|
||||
request: UpdateShippingProductRequest,
|
||||
):
|
||||
return await ShippingService(session).update_shipping_product(request)
|
||||
|
||||
|
||||
@shipping_router.delete(
|
||||
'/product/{shipping_product_id}',
|
||||
response_model=DeleteShippingProductResponse,
|
||||
operation_id='delete_shipping_product',
|
||||
dependencies=[Depends(authorized_user)],
|
||||
)
|
||||
async def delete_shipping_product(
|
||||
session: SessionDependency,
|
||||
shipping_product_id: int,
|
||||
):
|
||||
return await ShippingService(session).delete_shipping_product(shipping_product_id)
|
||||
|
||||
|
||||
@shipping_router.post(
|
||||
'/box',
|
||||
response_model=UpdateBoxResponse,
|
||||
operation_id='update_box',
|
||||
dependencies=[Depends(authorized_user)],
|
||||
)
|
||||
async def update_box(
|
||||
session: SessionDependency,
|
||||
request: UpdateBoxRequest,
|
||||
):
|
||||
return await ShippingService(session).update_box(request)
|
||||
|
||||
|
||||
@shipping_router.delete(
|
||||
'/box/{box_id}',
|
||||
response_model=DeleteBoxResponse,
|
||||
operation_id='delete_box',
|
||||
dependencies=[Depends(authorized_user)],
|
||||
)
|
||||
async def delete_box(
|
||||
session: SessionDependency,
|
||||
box_id: int,
|
||||
):
|
||||
return await ShippingService(session).delete_box(box_id)
|
||||
|
||||
|
||||
@shipping_router.get(
|
||||
"/pdf/deal/{deal_id}",
|
||||
operation_id="get_deal_qr_code_pdf",
|
||||
)
|
||||
async def generate_deal_qr_code_pdf(
|
||||
session: SessionDependency,
|
||||
deal_id: int,
|
||||
):
|
||||
pdf_file: BytesIO = await ShippingQRCodeGenerator(session).generate_deal(deal_id)
|
||||
return Response(pdf_file.getvalue(), media_type="application/pdf")
|
||||
|
||||
|
||||
@shipping_router.get(
|
||||
"/pdf/pallets/{deal_id}",
|
||||
operation_id="get_pallets_pdf",
|
||||
)
|
||||
async def generate_pallets_pdf(
|
||||
session: SessionDependency,
|
||||
deal_id: int,
|
||||
):
|
||||
pdf_file: BytesIO = await ShippingQRCodeGenerator(session).generate_pallets(deal_id)
|
||||
return Response(pdf_file.getvalue(), media_type="application/pdf")
|
||||
|
||||
|
||||
@shipping_router.get(
|
||||
"/pdf/boxes/{deal_id}",
|
||||
operation_id="get_boxes_pdf",
|
||||
)
|
||||
async def generate_boxes_pdf(
|
||||
session: SessionDependency,
|
||||
deal_id: int,
|
||||
):
|
||||
pdf_file: BytesIO = await ShippingQRCodeGenerator(session).generate_boxes(deal_id)
|
||||
return Response(pdf_file.getvalue(), media_type="application/pdf")
|
||||
Reference in New Issue
Block a user