129 lines
3.4 KiB
Python
129 lines
3.4 KiB
Python
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/{card_id}',
|
|
response_model=CreatePalletResponse,
|
|
operation_id='create_pallet',
|
|
dependencies=[Depends(authorized_user)],
|
|
)
|
|
async def create_pallet(
|
|
session: SessionDependency,
|
|
card_id: int,
|
|
):
|
|
return await ShippingService(session).create_pallet(card_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")
|