feat: adding services kit to deal
This commit is contained in:
@ -1,8 +1,11 @@
|
||||
from fastapi import HTTPException
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from modules.fulfillment_base.models import DealProductService
|
||||
from modules.fulfillment_base.repositories import ProductServiceRepository
|
||||
from modules.fulfillment_base.repositories import (
|
||||
ProductServiceRepository,
|
||||
ServicesKitRepository,
|
||||
DealProductRepository,
|
||||
)
|
||||
from modules.fulfillment_base.schemas.product_service import *
|
||||
|
||||
|
||||
@ -34,8 +37,6 @@ class ProductServiceService:
|
||||
data: UpdateProductServiceRequest,
|
||||
) -> UpdateProductServiceResponse:
|
||||
entity = await self.repository.get_by_id(deal_id, product_id, service_id)
|
||||
if not entity:
|
||||
raise HTTPException(status_code=404, detail=self.entity_not_found_msg)
|
||||
|
||||
await self.repository.update(entity, data.entity)
|
||||
return UpdateProductServiceResponse(message="Услуга обновлена")
|
||||
@ -44,9 +45,6 @@ class ProductServiceService:
|
||||
self, deal_id: int, product_id: int, service_id: int
|
||||
) -> DeleteProductServiceResponse:
|
||||
entity = await self.repository.get_by_id(deal_id, product_id, service_id)
|
||||
if not entity:
|
||||
raise HTTPException(status_code=404, detail=self.entity_not_found_msg)
|
||||
|
||||
await self.repository.delete(entity)
|
||||
return DeleteProductServiceResponse(message="Товар удален из сделки")
|
||||
|
||||
@ -63,3 +61,21 @@ class ProductServiceService:
|
||||
request.deal_id, request.target_deal_product_ids, services_to_copy
|
||||
)
|
||||
return ProductServicesDuplicateResponse(message="Услуги продублированы")
|
||||
|
||||
async def add_services_kit(
|
||||
self, request: DealProductAddKitRequest
|
||||
) -> DealProductAddKitResponse:
|
||||
services_kit_repo = ServicesKitRepository(self.repository.session)
|
||||
services_kit = await services_kit_repo.get_by_id(request.kit_id)
|
||||
|
||||
deal_product_repo = DealProductRepository(self.repository.session)
|
||||
deal_product = await deal_product_repo.get_by_id(
|
||||
request.deal_id, request.product_id
|
||||
)
|
||||
|
||||
await self.repository.delete_product_services(
|
||||
request.deal_id, [request.product_id]
|
||||
)
|
||||
await self.repository.add_services_kit(deal_product, services_kit)
|
||||
|
||||
return DealProductAddKitResponse(message="Комплект добавлен в товар")
|
||||
|
||||
Reference in New Issue
Block a user