feat: deals table

This commit is contained in:
2024-08-10 06:53:10 +03:00
parent 2c9ff3b373
commit 1b46a0fc56
3 changed files with 47 additions and 6 deletions

View File

@@ -165,7 +165,7 @@ class DealService(BaseService):
)
return final_subquery
async def get_summary(self) -> DealSummaryResponse:
async def get_summary(self, full: bool = False) -> DealSummaryResponse:
price_subquery = self._get_price_subquery()
q = (
select(
@@ -184,10 +184,15 @@ class DealService(BaseService):
price_subquery, Deal.id == price_subquery.c.deal_id)
.where(
Deal.is_deleted == False,
)
)
if not full:
q = q.where(
Deal.is_completed == False,
Deal.current_status != DealStatus.COMPLETED
)
)
else:
q = q.order_by(Deal.created_at.desc())
deals_query = await self.session.execute(q)
summaries = []
for deal, total_price, rank in deals_query.all():
@@ -207,13 +212,47 @@ class DealService(BaseService):
status=last_status.to_status,
total_price=total_price,
rank=rank,
base_marketplace=base_marketplace
base_marketplace=base_marketplace,
created_at=deal.created_at
)
)
return DealSummaryResponse(summaries=summaries)
async def get_all(self) -> DealGetAllResponse:
deals_query = await self.session.scalars(select(Deal).options(joinedload(Deal.client)))
deals_query = (
await self.session.scalars(
select(
Deal
)
.options(
joinedload(Deal.shipping_warehouse),
joinedload(Deal.client)
.joinedload(Client.details),
selectinload(Deal.services)
.options(
joinedload(models.secondary.DealService.service).joinedload(Service.category),
selectinload(models.secondary.DealService.employees)
),
selectinload(Deal.products)
.joinedload(models.secondary.DealProduct.product)
.joinedload(models.Product.client),
selectinload(Deal.products)
.joinedload(models.secondary.DealProduct.product)
.joinedload(models.Product.barcodes),
selectinload(Deal.products)
.joinedload(models.secondary.DealProduct.services)
.options(
joinedload(models.secondary.DealProductService.service),
selectinload(models.secondary.DealProductService.employees)
),
selectinload(Deal.status_history)
.joinedload(DealStatusHistory.user),
selectinload(Deal.status_history)
.noload(DealStatusHistory.deal),
)
)
)
deals = deals_query.all()
result = []
for deal in deals: