44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import type { ElaprApln } from "../model/elapr-apln-interface";
|
|
import type { ElaprAplnRow } from "../model/elapr-apln-row-types";
|
|
import type { ElaprPrgrsSttsSaveRequestDto } from "../model/elapr-prgrs-stts-interface";
|
|
|
|
import { getVisibleRows } from "./apln-validators";
|
|
|
|
function toPrgrsSttsItem(
|
|
aprvrUuid: string | undefined,
|
|
atrzSeComCd: string | undefined,
|
|
atrzSeqNo: number | undefined,
|
|
): ElaprPrgrsSttsSaveRequestDto {
|
|
if (!aprvrUuid?.trim()) {
|
|
throw new Error("결재자가 지정되지 않은 행이 있습니다.");
|
|
}
|
|
if (!atrzSeComCd?.trim()) {
|
|
throw new Error("결재구분이 지정되지 않은 행이 있습니다.");
|
|
}
|
|
if (atrzSeqNo == null) {
|
|
throw new Error("결재순서번호가 지정되지 않은 행이 있습니다.");
|
|
}
|
|
|
|
return {
|
|
aprvrUuid,
|
|
atrzSeComCd,
|
|
atrzSeqNo,
|
|
};
|
|
}
|
|
|
|
/** 서식 결재선 API 응답 → 기안 요청용 진행상태 목록 */
|
|
export function buildElaprPrgrsSttsListFromApln(
|
|
items: ElaprApln[],
|
|
): ElaprPrgrsSttsSaveRequestDto[] {
|
|
return items.map((item) => toPrgrsSttsItem(item.aprvrUuid, item.atrzSeComCd, item.atrzSeqNo));
|
|
}
|
|
|
|
/** 결재선 그리드 행 → 기안 요청용 진행상태 목록 (서버가 seq 기준 상태 자동 결정) */
|
|
export function buildElaprPrgrsSttsListFromAplnRows(
|
|
rows: ElaprAplnRow[],
|
|
): ElaprPrgrsSttsSaveRequestDto[] {
|
|
return getVisibleRows(rows).map((row) =>
|
|
toPrgrsSttsItem(row.aprvrUuid, row.atrzSeComCd, row.atrzSeqNo),
|
|
);
|
|
}
|