This commit is contained in:
44
src/utils/business/seriesGrantPackage.ts
Normal file
44
src/utils/business/seriesGrantPackage.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import type { GrantPackageInfo, PackageResponse } from '@/types/api'
|
||||
|
||||
export interface GrantPackageCandidate {
|
||||
id: number
|
||||
package_name?: string
|
||||
package_code?: string
|
||||
cost_price?: number
|
||||
suggested_retail_price?: number | null
|
||||
is_authorized: boolean
|
||||
authorized_package?: GrantPackageInfo
|
||||
}
|
||||
|
||||
export const mergeGrantPackageCandidates = (
|
||||
candidates: PackageResponse[],
|
||||
authorizedPackages: GrantPackageInfo[]
|
||||
): GrantPackageCandidate[] => {
|
||||
const merged = new Map<number, GrantPackageCandidate>()
|
||||
|
||||
candidates.forEach((candidate) => {
|
||||
merged.set(candidate.id, {
|
||||
id: candidate.id,
|
||||
package_name: candidate.package_name,
|
||||
package_code: candidate.package_code,
|
||||
cost_price: candidate.cost_price,
|
||||
suggested_retail_price: candidate.suggested_retail_price,
|
||||
is_authorized: false
|
||||
})
|
||||
})
|
||||
|
||||
authorizedPackages.forEach((authorizedPackage) => {
|
||||
const candidate = merged.get(authorizedPackage.package_id)
|
||||
merged.set(authorizedPackage.package_id, {
|
||||
id: authorizedPackage.package_id,
|
||||
package_name: candidate?.package_name ?? authorizedPackage.package_name,
|
||||
package_code: candidate?.package_code ?? authorizedPackage.package_code,
|
||||
cost_price: authorizedPackage.cost_price ?? candidate?.cost_price,
|
||||
suggested_retail_price: candidate?.suggested_retail_price,
|
||||
is_authorized: true,
|
||||
authorized_package: authorizedPackage
|
||||
})
|
||||
})
|
||||
|
||||
return [...merged.values()]
|
||||
}
|
||||
Reference in New Issue
Block a user