Merge remote-tracking branch 'origin/dealPrefilling'
This commit is contained in:
@@ -455,6 +455,44 @@ class DealService(BaseService):
|
||||
url = f"deals/{request.deal_id}?accessToken={access_token}"
|
||||
return DealCreateGuestUrlResponse(ok=True, message='Ссылка успешно создана!', url=url)
|
||||
|
||||
async def _create_deal_services_for_prefilling(self, old_deal: models.Deal, new_deal: models.Deal):
|
||||
for service in old_deal.services:
|
||||
deal_service = models.secondary.DealService(
|
||||
service_id=service.service_id,
|
||||
deal_id=new_deal.id,
|
||||
quantity=service.quantity,
|
||||
price=service.price,
|
||||
)
|
||||
self.session.add(deal_service)
|
||||
|
||||
async def _create_deal_products_for_prefilling(self, old_deal: models.Deal, new_deal: models.Deal):
|
||||
for old_deal_product in old_deal.products:
|
||||
deal_product = models.secondary.DealProduct(
|
||||
deal_id=new_deal.id,
|
||||
product_id=old_deal_product.product.id,
|
||||
quantity=old_deal_product.quantity
|
||||
)
|
||||
self.session.add(deal_product)
|
||||
await self.session.flush()
|
||||
for old_service in old_deal_product.services:
|
||||
deal_product_service = models.secondary.DealProductService(
|
||||
deal_id=new_deal.id,
|
||||
product_id=old_deal_product.product.id,
|
||||
service_id=old_service.service.id,
|
||||
price=old_service.price
|
||||
)
|
||||
self.session.add(deal_product_service)
|
||||
|
||||
async def prefill_deal(self, user, request: DealPrefillRequest) -> DealPrefillResponse:
|
||||
old_deal: models.Deal = await self.get_by_id(user, request.old_deal_id, return_raw=True)
|
||||
new_deal: models.Deal = await self.get_by_id(user, request.new_deal_id, return_raw=True)
|
||||
|
||||
await self._create_deal_services_for_prefilling(old_deal, new_deal)
|
||||
await self._create_deal_products_for_prefilling(old_deal, new_deal)
|
||||
await self.session.commit()
|
||||
|
||||
return DealPrefillResponse(ok=True, message="Сделка успешно предзаполнена")
|
||||
|
||||
# endregion
|
||||
|
||||
# region Deal services
|
||||
|
||||
Reference in New Issue
Block a user