crappy
This commit is contained in:
@@ -2,6 +2,7 @@ import datetime
|
||||
from typing import Type, Union
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.orm import joinedload, selectinload
|
||||
|
||||
from models import User, Deal
|
||||
from models.deal import *
|
||||
@@ -16,7 +17,9 @@ class DealService(BaseService):
|
||||
async def _get_deal_by_id(self, deal_id) -> Union[Deal, None]:
|
||||
return await self.session.get(Deal, deal_id)
|
||||
|
||||
async def change_status(self, deal: Deal, status: DealStatus, user: User,
|
||||
async def change_status(self, deal: Deal,
|
||||
status: DealStatus,
|
||||
user: User,
|
||||
deadline: datetime.datetime = None) -> DealStatusHistory:
|
||||
deadline = deadline
|
||||
status_change = DealStatusHistory(
|
||||
@@ -75,3 +78,24 @@ class DealService(BaseService):
|
||||
await self.change_status(deal, DealStatus(request.new_status), user)
|
||||
await self.session.commit()
|
||||
return DealChangeStatusResponse(ok=True)
|
||||
|
||||
async def get_summary(self) -> DealSummaryResponse:
|
||||
deals_query = await self.session.scalars(select(Deal)
|
||||
.options(selectinload(Deal.status_history),
|
||||
joinedload(Deal.client))
|
||||
.where(Deal.is_deleted == False,
|
||||
Deal.is_completed == False))
|
||||
summaries = []
|
||||
for deal in deals_query.all():
|
||||
deal: Deal
|
||||
last_status: DealStatusHistory = max(deal.status_history, key=lambda status: status.changed_at)
|
||||
summaries.append(
|
||||
DealSummary(
|
||||
id=deal.id,
|
||||
client_name=deal.client.name,
|
||||
name=deal.name,
|
||||
changed_at=last_status.changed_at,
|
||||
status=last_status.to_status
|
||||
)
|
||||
)
|
||||
return DealSummaryResponse(summaries=summaries)
|
||||
Reference in New Issue
Block a user