Files
2026-11-05 08:28:15 +00:00

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)