o2o-negosium-original/negodata/backend/router/v1/renegotiation/renegotiation.py

48 lines
2.0 KiB
Python

from typing import Optional
from fastapi import APIRouter, Depends, Path, Query
from common.models.gmodel import PageParams, UserInfo
from router.v1.validator.dependencies import IsValidAccessToken, RemoveNoneResponse
from services.renegotiation_service import RenegotiationService
from .protocol import (
Req_ApproveRenegotiation,
Req_RejectRenegotiation,
Res_RenegotiationDecision,
Res_RenegotiationList,
)
router = APIRouter(prefix="/v1/renegotiation", tags=["Renegotiation"], responses={404: {"description": "Not found"}})
@router.get(path="/list", response_model=Res_RenegotiationList, summary="재협상 요청 현황")
async def list_requests(
service: RenegotiationService = Depends(),
user_info: UserInfo = Depends(IsValidAccessToken),
status: Optional[int] = Query(None, description="요청 상태(1=심사중 2=승인 3=반려 4=철회). 미지정 시 전체"),
pg: PageParams = Depends(),
):
return RemoveNoneResponse(await service.list_requests(user_info.company_id, user_info.user_id, user_info.role, status, pg))
@router.post(path="/{session_id}/approve", response_model=Res_RenegotiationDecision, summary="재협상 승인")
async def approve(
req: Req_ApproveRenegotiation,
session_id: str = Path(..., description="요청이 달린 협상 세션 uuid"),
service: RenegotiationService = Depends(),
user_info: UserInfo = Depends(IsValidAccessToken),
):
return RemoveNoneResponse(
await service.approve(user_info.company_id, user_info.user_id, user_info.role, session_id, req)
)
@router.post(path="/{session_id}/reject", response_model=Res_RenegotiationDecision, summary="재협상 반려")
async def reject(
req: Req_RejectRenegotiation,
session_id: str = Path(..., description="요청이 달린 협상 세션 uuid"),
service: RenegotiationService = Depends(),
user_info: UserInfo = Depends(IsValidAccessToken),
):
return RemoveNoneResponse(await service.reject(user_info.company_id, user_info.user_id, user_info.role, session_id, req))