Files
Fulfillment-Backend/services/deal.py
2024-03-03 07:22:42 +03:00

43 lines
1.3 KiB
Python

import datetime
from sqlalchemy import select
from models import User
from models.deal import *
from schemas.deal import *
from services.base import BaseService
class DealService(BaseService):
async def _get_deal_by_id(self, deal_id) -> Deal:
return await self.session.get(Deal, deal_id)
async def create(self, request: DealCreateRequest) -> DealCreateResponse:
deal = Deal(
name=request.name,
created_at=datetime.datetime.now(),
current_status=DealStatus.AWAITING_ACCEPTANCE
)
self.session.add(deal)
await self.session.commit()
return DealCreateResponse(ok=True)
async def change_status(self, request: DealChangeStatusRequest, user: User) -> DealChangeStatusResponse:
# Changing current status
deal = await self._get_deal_by_id(request.deal_id)
from_status = deal.current_status
deal.current_status = request.new_status
# Append status history
status_change = DealStatusHistory(
deal_id=request.deal_id,
user_id=user.id,
changed_at=datetime.datetime.now(),
from_status=from_status,
to_status=request.new_status
)
self.session.add(status_change)
await self.session.commit()
return DealChangeStatusResponse(ok=True)