63 lines
2.7 KiB
Python
63 lines
2.7 KiB
Python
from fastapi import APIRouter, Query, status, Depends, Response, HTTPException
|
|
|
|
from backend.code.modules.settlements.controller import SettlementController
|
|
from backend.code.models.responses.settlement_detail import SettlementDetailResponse
|
|
from backend.code.models.requests.settlement_register import SettlementRegisterRequest
|
|
from backend.code.models.requests.settlement_edit import SettlementEditRequest
|
|
from backend.code.models.requests.settlement_register_done import SettlementRegisterDoneRequest
|
|
|
|
routes = APIRouter(prefix="/settlements", tags=['Settlement'])
|
|
controller = SettlementController()
|
|
|
|
@routes.get("", status_code = status.HTTP_200_OK, response_model = list[SettlementDetailResponse])
|
|
def ListSettlements(params: str | None = Query(default = None, alias = 'query')):
|
|
settlements = controller.ListSettlements(params)
|
|
if settlements is None:
|
|
raise HTTPException(status_code = status.HTTP_400_BAD_REQUEST)
|
|
|
|
if len(settlements) == 0:
|
|
return Response(status_code = status.HTTP_204_NO_CONTENT)
|
|
|
|
return settlements
|
|
|
|
@routes.get("/{id}", status_code = status.HTTP_200_OK, response_model = SettlementDetailResponse)
|
|
def GetSettlement(id: int):
|
|
settlement = controller.SelectSettlement(id)
|
|
if settlement is None:
|
|
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND)
|
|
|
|
return settlement
|
|
|
|
@routes.post('', status_code = status.HTTP_201_CREATED, response_model = SettlementDetailResponse)
|
|
def RegisterSettlement(data: SettlementRegisterRequest):
|
|
created = controller.RegisterSettlement(data.Name, data.Address, data.Active)
|
|
if created is None:
|
|
raise HTTPException(status_code = status.HTTP_400_BAD_REQUEST)
|
|
|
|
if created == -9:
|
|
raise HTTPException(status_code = status.HTTP_409_CONFLICT, detail = 'Settlement name or address exists')
|
|
|
|
return created
|
|
|
|
@routes.put("/{id}", status_code = status.HTTP_204_NO_CONTENT)
|
|
def EditSettlement(id: str, data: SettlementEditRequest):
|
|
edited = controller.EditSettlement(id, data.Name, data.Address, data.Active)
|
|
if edited is None:
|
|
raise HTTPException(status_code = status.HTTP_400_BAD_REQUEST)
|
|
|
|
if deleted == -10:
|
|
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND)
|
|
|
|
@routes.post('/done', status_code = status.HTTP_200_OK)
|
|
def RegisterSettlementDone(data: SettlementRegisterDoneRequest):
|
|
registered = controller.
|
|
|
|
@routes.delete("/{id}", status_code = status.HTTP_204_NO_CONTENT)
|
|
def DisableSettlement(id: str):
|
|
deleted = controller.DeleteSettlement(id)
|
|
if deleted is None:
|
|
raise HTTPException(status_code = status.HTTP_400_BAD_REQUEST)
|
|
|
|
if deleted == -10:
|
|
raise HTTPException(status_code = status.HTTP_404_NOT_FOUND)
|