48 lines
2.0 KiB
Python
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))
|