49 lines
2.1 KiB
TypeScript
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>;
|