32 lines
863 B
TypeScript
32 lines
863 B
TypeScript
import type { Document, DocumentType } from './types';
|
|
import { unique } from 'radash';
|
|
|
|
export function combineDocuments({
|
|
documentTypes,
|
|
documents,
|
|
}: {
|
|
documentTypes: DocumentType[];
|
|
documents: Document[];
|
|
}) {
|
|
if (!documents.length) {
|
|
return documentTypes.map((x) => ({ ...(x as Document), canUpload: true }));
|
|
}
|
|
|
|
const res = unique(documents, ({ documentTypeId }) => documentTypeId).map((document) => ({
|
|
...document,
|
|
canUpload: documentTypes.some(
|
|
(documentType) => documentType.documentTypeId === document.documentTypeId
|
|
),
|
|
}));
|
|
|
|
documentTypes.forEach((documentType) => {
|
|
if (!res.some((document) => document.documentTypeId === documentType.documentTypeId)) {
|
|
res.push({ ...documentType, canUpload: true });
|
|
}
|
|
});
|
|
|
|
return res;
|
|
}
|
|
|
|
export type CombinedDocuments = ReturnType<typeof combineDocuments>;
|