56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import type {
|
|
BizSclTreeDto,
|
|
BzScaleItem,
|
|
DesignCnstnApplySaveRequestDto,
|
|
DesignCnstnMngDetResponseDto,
|
|
} from "@/entities/design-cnstn";
|
|
import { designCnstnApplySaveSchema } from "@/entities/design-cnstn";
|
|
import { toEsntlAtchFileSaveList } from "@/widgets/pbadms-sprt";
|
|
|
|
import type { ReviewStepCode } from "../model/view-types";
|
|
|
|
import { type ReviewOpinionGetFormDataResult, toRvwOpnnSaveDto } from "./review-opinion-utils";
|
|
|
|
export function toBzScaleSaveDto(bizSclList: BizSclTreeDto[]): BzScaleItem[] {
|
|
return bizSclList
|
|
.filter((node) => node.useYn === "Y")
|
|
.map((node) => ({
|
|
cnstpSeCd: node.cnstpSeCd,
|
|
bscPl: node.bscPlanQty,
|
|
budgetReflct: node.bgtRfltQty,
|
|
thtiDsgn: node.tstmDesignQty,
|
|
}));
|
|
}
|
|
|
|
export function buildSavePayload(
|
|
data: DesignCnstnMngDetResponseDto,
|
|
prgrsSttsComCd: string,
|
|
): DesignCnstnApplySaveRequestDto {
|
|
const detDto = data.detDto;
|
|
if (!detDto) {
|
|
throw new Error("상세 정보(detDto)가 없습니다.");
|
|
}
|
|
|
|
return designCnstnApplySaveSchema.parse({
|
|
designCnstnMng: { ...detDto, prgrsSttsComCd },
|
|
bzScaleList: toBzScaleSaveDto(data.bizSclList ?? []),
|
|
esntlAtchFileList: toEsntlAtchFileSaveList(data.esntlFileList),
|
|
});
|
|
}
|
|
|
|
export function buildTechReviewPayload(
|
|
data: DesignCnstnMngDetResponseDto,
|
|
prgrsSttsComCd: string,
|
|
techReViewSaveCd: string,
|
|
reviewStep: ReviewStepCode,
|
|
reviewOpinionFormData?: ReviewOpinionGetFormDataResult | null,
|
|
opnrNm?: string,
|
|
): DesignCnstnApplySaveRequestDto {
|
|
return designCnstnApplySaveSchema.parse({
|
|
...buildSavePayload(data, prgrsSttsComCd),
|
|
techReViewSaveCd,
|
|
rvwStpCd: reviewStep,
|
|
rvwOpnnList: toRvwOpnnSaveDto(data, reviewOpinionFormData, opnrNm),
|
|
});
|
|
}
|