feat: end-point for pdf of all deal's barcodes, client and marketplace info in bill of payment

This commit is contained in:
2024-09-28 19:38:06 +04:00
parent d9c43624c0
commit 489f65a087
8 changed files with 169 additions and 57 deletions

View File

@@ -1,3 +1,4 @@
import base64
from io import BytesIO
from typing import Annotated
@@ -7,8 +8,10 @@ from sqlalchemy.ext.asyncio import AsyncSession
from backend.dependecies import SessionDependency, CurrentUserDependency
from backend.session import get_session
from models import User
from schemas.barcode import GetProductBarcodePdfResponse, GetDealProductsBarcodesPdfRequest
from schemas.deal import *
from services.auth import get_current_user, authorized_user, guest_user
from services.barcode import BarcodeService
from services.billing import BillingService
from services.deal import DealService
@@ -391,4 +394,24 @@ async def add_kit_to_deal_product(
user: CurrentUserDependency
):
return await DealService(session).add_kit_to_deal_product(user, request)
@deal_router.post(
'/barcodes/get-pdf',
operation_id='get_deal_barcodes_pdf',
response_model=GetProductBarcodePdfResponse
)
async def get_deal_products_barcodes_pdf(
request: GetDealProductsBarcodesPdfRequest,
session: Annotated[AsyncSession, Depends(get_session)]
):
filename, pdf_buffer = await BarcodeService(session).get_deal_barcodes_pdf(request)
pdf_buffer: BytesIO
base64_string = base64.b64encode(pdf_buffer.read()).decode('utf-8')
return GetProductBarcodePdfResponse(
base64_string=base64_string,
filename=filename,
mime_type='application/pdf'
)
# endregion