Files
Fulfillment-Backend/routers/shipping.py

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")