84 lines
2.6 KiB
TypeScript
84 lines
2.6 KiB
TypeScript
import { normalizeNullableStringId, normalizeStringId } from './shared';
|
|
|
|
type ProductStatusCode = Api.Product.ProductStatusCode;
|
|
type ProductStatusActionCode = Api.Product.ProductStatusActionCode;
|
|
|
|
interface ProductSettingsResponse {
|
|
baseInfo: {
|
|
id: string | number;
|
|
code: string;
|
|
directionCode: string;
|
|
name: string;
|
|
managerUserId?: string | number | null;
|
|
managerUserNickname?: string | null;
|
|
description?: string | null;
|
|
statusCode: ProductStatusCode;
|
|
lastStatusReason?: string | null;
|
|
};
|
|
lifecycle: {
|
|
statusCode: ProductStatusCode;
|
|
lastStatusReason?: string | null;
|
|
availableActions?: Array<{
|
|
actionCode: ProductStatusActionCode;
|
|
actionName: string;
|
|
needReason: boolean;
|
|
}> | null;
|
|
};
|
|
}
|
|
|
|
interface ProductMemberResponse {
|
|
id: string | number;
|
|
userId: string | number;
|
|
userNickname: string;
|
|
roleId: string | number;
|
|
roleName: string;
|
|
roleCode: string;
|
|
managerFlag: boolean;
|
|
status: 0 | 1;
|
|
joinedTime: string;
|
|
leftTime?: string | null;
|
|
remark?: string | null;
|
|
}
|
|
|
|
export function normalizeProductSettings(response: ProductSettingsResponse): Api.Product.ProductSettings {
|
|
return {
|
|
baseInfo: {
|
|
id: normalizeStringId(response.baseInfo.id),
|
|
code: response.baseInfo.code || '',
|
|
directionCode: response.baseInfo.directionCode || '',
|
|
name: response.baseInfo.name || '',
|
|
managerUserId: normalizeNullableStringId(response.baseInfo.managerUserId) ?? '',
|
|
managerUserNickname: response.baseInfo.managerUserNickname || '',
|
|
description: response.baseInfo.description ?? null,
|
|
statusCode: response.baseInfo.statusCode,
|
|
lastStatusReason: response.baseInfo.lastStatusReason ?? null
|
|
},
|
|
lifecycle: {
|
|
statusCode: response.lifecycle.statusCode,
|
|
lastStatusReason: response.lifecycle.lastStatusReason ?? null,
|
|
availableActions:
|
|
response.lifecycle.availableActions?.map(item => ({
|
|
actionCode: item.actionCode,
|
|
actionName: item.actionName,
|
|
needReason: item.needReason
|
|
})) ?? []
|
|
}
|
|
};
|
|
}
|
|
|
|
export function normalizeProductMember(response: ProductMemberResponse): Api.Product.ProductMember {
|
|
return {
|
|
id: normalizeStringId(response.id),
|
|
userId: normalizeStringId(response.userId),
|
|
userNickname: response.userNickname || '',
|
|
roleId: normalizeStringId(response.roleId),
|
|
roleName: response.roleName || '',
|
|
roleCode: response.roleCode || '',
|
|
managerFlag: Boolean(response.managerFlag),
|
|
status: response.status,
|
|
joinedTime: response.joinedTime,
|
|
leftTime: response.leftTime ?? null,
|
|
remark: response.remark ?? null
|
|
};
|
|
}
|