138 lines
3.7 KiB
Python
138 lines
3.7 KiB
Python
from fastapi import APIRouter, Path
|
|
|
|
from backend.dependecies import SessionDependency
|
|
from modules.fulfillment_base.schemas.deal_product import *
|
|
from modules.fulfillment_base.schemas.product_service import *
|
|
from modules.fulfillment_base.services import DealProductService, ProductServiceService
|
|
|
|
router = APIRouter(tags=["deal-product"])
|
|
|
|
# region DealProduct
|
|
|
|
|
|
@router.get(
|
|
"/{dealId}",
|
|
response_model=GetDealProductsResponse,
|
|
operation_id="get_deal_products",
|
|
)
|
|
async def get_deal_products(
|
|
session: SessionDependency,
|
|
deal_id: int = Path(alias="dealId"),
|
|
):
|
|
return await DealProductService(session).get_all(deal_id)
|
|
|
|
|
|
@router.post(
|
|
"/",
|
|
response_model=CreateDealProductResponse,
|
|
operation_id="create_deal_product",
|
|
)
|
|
async def create_deal_product(
|
|
session: SessionDependency,
|
|
request: CreateDealProductRequest,
|
|
):
|
|
return await DealProductService(session).create(request)
|
|
|
|
|
|
@router.patch(
|
|
"/{dealId}/product/{productId}",
|
|
response_model=UpdateDealProductResponse,
|
|
operation_id="update_deal_product",
|
|
)
|
|
async def update_deal_product(
|
|
session: SessionDependency,
|
|
request: UpdateDealProductRequest,
|
|
deal_id: int = Path(alias="dealId"),
|
|
product_id: int = Path(alias="productId"),
|
|
):
|
|
return await DealProductService(session).update(deal_id, product_id, request)
|
|
|
|
|
|
@router.delete(
|
|
"/{dealId}/product/{productId}",
|
|
response_model=DeleteDealProductResponse,
|
|
operation_id="delete_deal_product",
|
|
)
|
|
async def delete_deal_product(
|
|
session: SessionDependency,
|
|
deal_id: int = Path(alias="dealId"),
|
|
product_id: int = Path(alias="productId"),
|
|
):
|
|
return await DealProductService(session).delete(deal_id, product_id)
|
|
|
|
|
|
# endregion
|
|
|
|
|
|
# region DealProductService
|
|
|
|
|
|
@router.post(
|
|
"/service",
|
|
response_model=CreateProductServiceResponse,
|
|
operation_id="create_deal_product_service",
|
|
)
|
|
async def create_deal_product_service(
|
|
session: SessionDependency,
|
|
request: CreateProductServiceRequest,
|
|
):
|
|
return await ProductServiceService(session).create(request)
|
|
|
|
|
|
@router.patch(
|
|
"/{dealId}/product/{productId}/service/{serviceId}",
|
|
response_model=UpdateProductServiceResponse,
|
|
operation_id="update_deal_product_service",
|
|
)
|
|
async def update_deal_product_service(
|
|
session: SessionDependency,
|
|
request: UpdateProductServiceRequest,
|
|
deal_id: int = Path(alias="dealId"),
|
|
product_id: int = Path(alias="productId"),
|
|
service_id: int = Path(alias="serviceId"),
|
|
):
|
|
return await ProductServiceService(session).update(
|
|
deal_id, product_id, service_id, request
|
|
)
|
|
|
|
|
|
@router.delete(
|
|
"/{dealId}/product/{productId}/service/{serviceId}",
|
|
response_model=DeleteProductServiceResponse,
|
|
operation_id="delete_deal_product_service",
|
|
)
|
|
async def delete_deal_product_service(
|
|
session: SessionDependency,
|
|
deal_id: int = Path(alias="dealId"),
|
|
product_id: int = Path(alias="productId"),
|
|
service_id: int = Path(alias="serviceId"),
|
|
):
|
|
return await ProductServiceService(session).delete(deal_id, product_id, service_id)
|
|
|
|
|
|
@router.post(
|
|
"/services/duplicate",
|
|
response_model=ProductServicesDuplicateResponse,
|
|
operation_id="duplicate_product_services",
|
|
)
|
|
async def copy_product_services(
|
|
session: SessionDependency,
|
|
request: ProductServicesDuplicateRequest,
|
|
):
|
|
return await ProductServiceService(session).duplicate_product_services(request)
|
|
|
|
|
|
@router.post(
|
|
"/add-services-kit",
|
|
response_model=DealProductAddKitResponse,
|
|
operation_id="add_kit_to_deal_product",
|
|
)
|
|
async def add_kit_to_deal_product(
|
|
session: SessionDependency,
|
|
request: DealProductAddKitRequest,
|
|
):
|
|
return await ProductServiceService(session).add_services_kit(request)
|
|
|
|
|
|
# endregion
|