feat: complete group of deals

This commit is contained in:
2024-11-12 14:28:04 +04:00
parent 1dde0089b9
commit bbe9832923
3 changed files with 43 additions and 20 deletions

32
services/deal_group.py Normal file
View File

@@ -0,0 +1,32 @@
from sqlalchemy import select
from sqlalchemy.orm import selectinload
from models import DealService as DealServiceModel
from models.deal_group import DealGroup
from schemas.deal import *
from services.base import BaseService
class DealGroupService(BaseService):
async def get_deals_by_group_id(self, group_id) -> list[Deal]:
group: DealGroup | None = await self.session.scalar(
select(DealGroup)
.where(DealGroup.id == group_id)
.options(
selectinload(DealGroup.deals).selectinload(Deal.products).selectinload(DealProduct.services),
selectinload(DealGroup.deals).selectinload(Deal.products)
.selectinload(DealProduct.product).selectinload(Product.barcodes),
selectinload(DealGroup.deals).selectinload(Deal.services).selectinload(DealServiceModel.service),
selectinload(DealGroup.deals).selectinload(Deal.status_history),
selectinload(DealGroup.deals).selectinload(Deal.group).selectinload(DealGroup.deals),
selectinload(DealGroup.deals).joinedload(Deal.client),
selectinload(DealGroup.deals).joinedload(Deal.shipping_warehouse),
)
)
return group.deals if group else []
async def complete_group(self, group_id: int) -> None:
deals = await self.get_deals_by_group_id(group_id)
for deal in deals:
deal.is_completed = True
await self.session.commit()