Files
frontend/apps/sn/src/features/exmn/api/trtdst-api.ts
T
2026-09-28 11:22:22 +09:00

49 lines
2.1 KiB
TypeScript

import { getData, putData } from "@/components/lib/api";
import type {
TrtdstBatchRequest,
TrtdstBatchResponse,
TrtdstReferenceSummary,
TrtdstSearchParams,
TrtdstSettingDto,
} from "../model/trtdst-types";
/** 조사사업 공통 선행 처리분구 API의 기준 경로다. */
const TRTDST_API_PATH = "v1/trtdstSettings";
/** 관리 그리드는 활성 처리분구 한 페이지만 조회한다. 등록 화면의 전체 선택지와 구분한다. */
export const getTrtdstPage = async (params: {
ctpvNm?: string; sggNm?: string; page: number; size: number; sort?: string;
}): Promise<{ content: TrtdstSettingDto[]; totalElements: number }> => {
const query = new URLSearchParams();
Object.entries(params).forEach(([key, value]) => {
if (value !== undefined && value !== "") query.set(key, String(value));
});
return getData(`${TRTDST_API_PATH}/page?${query}`);
};
/** 선택된 행정구역 조건으로 활성 처리분구 목록을 조회한다. */
export const getTrtdstSettings = async (
params: TrtdstSearchParams,
): Promise<TrtdstSettingDto[]> => {
const query = new URLSearchParams({ useYn: params.useYn });
if (params.ctpvNm?.trim()) query.set("ctpvNm", params.ctpvNm.trim());
if (params.sggNm?.trim()) query.set("sggNm", params.sggNm.trim());
const response = await getData(`${TRTDST_API_PATH}?${query.toString()}`);
if (Array.isArray(response)) return response as TrtdstSettingDto[];
if (Array.isArray(response?.content)) return response.content as TrtdstSettingDto[];
return [];
};
/** 처리분구 추가·명칭수정·삭제대기를 한 트랜잭션으로 저장한다. */
export const saveTrtdstSettings = async (
request: TrtdstBatchRequest,
): Promise<TrtdstBatchResponse> =>
putData(`${TRTDST_API_PATH}/batch`, request) as Promise<TrtdstBatchResponse>;
/** 삭제 전 처리분구를 참조하는 조사사업과 시설 건수를 확인한다. */
export const getTrtdstReferences = async (
trtdstId: string,
): Promise<TrtdstReferenceSummary> =>
getData(`${TRTDST_API_PATH}/${encodeURIComponent(trtdstId)}/references`) as Promise<TrtdstReferenceSummary>;