Files
Crm-Backend/modules/fulfillment_base/services/deal_service.py

46 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from modules.fulfillment_base.models import DealService
from modules.fulfillment_base.repositories import DealServiceRepository
from modules.fulfillment_base.schemas.deal_service import *
from services.mixins import ServiceGetAllMixin
class DealServiceService(ServiceGetAllMixin[DealService, DealServiceSchema]):
schema_class = DealServiceSchema
entity_not_found_msg = "Связь услуги со сделкой не найдена"
def __init__(self, session: AsyncSession):
self.repository = DealServiceRepository(session)
async def create(
self, request: CreateDealServiceRequest
) -> CreateDealServiceResponse:
await self.repository.create(request.entity)
deal_service = await self.repository.get_by_id(
request.entity.deal_id, request.entity.service_id
)
return CreateDealServiceResponse(
entity=DealServiceSchema.model_validate(deal_service),
message="Услуга добавлена в сделку",
)
async def update(
self, deal_id: int, service_id: int, data: UpdateDealServiceRequest
) -> UpdateDealServiceResponse:
entity = await self.repository.get_by_id(deal_id, service_id)
if not entity:
raise HTTPException(status_code=404, detail=self.entity_not_found_msg)
await self.repository.update(entity, data.entity)
return UpdateDealServiceResponse(message="Услуга сделки обновлена")
async def delete(self, deal_id: int, service_id: int) -> DeleteDealServiceResponse:
entity = await self.repository.get_by_id(deal_id, service_id)
if not entity:
raise HTTPException(status_code=404, detail=self.entity_not_found_msg)
await self.repository.delete(entity)
return DeleteDealServiceResponse(message="Услуга удалена из сделки")