Files
Fulfillment-Backend/routers/deal.py
2024-04-11 07:57:08 +03:00

135 lines
3.7 KiB
Python

from typing import Annotated
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from backend.session import get_session
from models import User
from schemas.deal import *
from services.auth import get_current_user
from services.deal import DealService
deal_router = APIRouter(
prefix='/deal',
tags=['deal']
)
@deal_router.post('/create')
async def create(
request: DealCreateRequest,
session: Annotated[AsyncSession, Depends(get_session)],
user: Annotated[User, Depends(get_current_user)]
):
return await DealService(session).create(request, user)
@deal_router.post('/quickCreate', response_model=DealQuickCreateResponse)
async def quick_create(
request: DealQuickCreateRequest,
session: Annotated[AsyncSession, Depends(get_session)],
user: Annotated[User, Depends(get_current_user)]
):
return await DealService(session).quick_create(request, user)
@deal_router.post('/changeStatus', response_model=DealChangeStatusResponse)
async def change_status(
request: DealChangeStatusRequest,
session: Annotated[AsyncSession, Depends(get_session)],
user: Annotated[User, Depends(get_current_user)]
):
return await DealService(session).change_status(request, user)
@deal_router.get('/summaries',
response_model=DealSummaryResponse,
operation_id='getDealSummaries'
)
async def get_summary(
session: Annotated[AsyncSession, Depends(get_session)]
):
return await DealService(session).get_summary()
@deal_router.post(
'/services/add/multiple',
response_model=DealAddServicesResponse,
operation_id='addMultipleDealServices'
)
async def services_add(
request: DealAddServicesRequest,
session: Annotated[AsyncSession, Depends(get_session)]
):
return await DealService(session).add_services(request)
@deal_router.post(
'/services/add',
response_model=DealAddServiceResponse,
operation_id='addDealService'
)
async def services_add(
request: DealAddServiceRequest,
session: Annotated[AsyncSession, Depends(get_session)]
):
return await DealService(session).add_service(request)
@deal_router.post(
'/services/update-quantity',
response_model=DealUpdateServiceQuantityResponse,
operation_id='updateDealServiceQuantity'
)
async def services_update(
request: DealUpdateServiceQuantityRequest,
session: Annotated[AsyncSession, Depends(get_session)]
):
return await DealService(session).update_service_quantity(request)
@deal_router.post(
'/services/delete',
response_model=DealDeleteServiceResponse,
operation_id='deleteDealService'
)
async def services_delete(
request: DealDeleteServiceRequest,
session: Annotated[AsyncSession, Depends(get_session)]
):
return await DealService(session).delete_service(request)
@deal_router.post(
'/services/delete/multiple',
response_model=DealDeleteServicesResponse,
operation_id='deleteMultipleDealServices'
)
async def services_delete(
request: DealDeleteServicesRequest,
session: Annotated[AsyncSession, Depends(get_session)]
):
return await DealService(session).delete_services(request)
@deal_router.get(
'/get-all',
response_model=DealGetAllResponse,
operation_id='getAllDeals'
)
async def get_all(
session: Annotated[AsyncSession, Depends(get_session)]
):
return await DealService(session).get_all()
# endpoint to get deal by id
@deal_router.get(
'/get/{deal_id}',
response_model=DealSchema,
operation_id='getDealById'
)
async def get_deal_by_id(
deal_id: int,
session: Annotated[AsyncSession, Depends(get_session)]
):
return await DealService(session).get_by_id(deal_id)