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