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=CreateBoxResponse,
 | 
						|
    operation_id='create_box',
 | 
						|
    dependencies=[Depends(authorized_user)],
 | 
						|
)
 | 
						|
async def create_box(
 | 
						|
        session: SessionDependency,
 | 
						|
        request: CreateBoxRequest,
 | 
						|
):
 | 
						|
    return await ShippingService(session).create_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")
 |