Merge remote-tracking branch 'origin/dealPrefilling'

This commit is contained in:
2024-10-18 05:41:23 +03:00
3 changed files with 61 additions and 0 deletions

View File

@@ -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