diff --git a/src/steps/@start.tsx b/src/steps/@start.tsx index ef11aba..694167c 100644 --- a/src/steps/@start.tsx +++ b/src/steps/@start.tsx @@ -1,11 +1,16 @@ import {Context} from '@matterway/sdk'; import {successStep} from 'steps/@success'; import {uploadFileStep} from './uploadFile'; +import {extractFileDataStep} from './extractFileData'; export async function startStep(ctx: Context) { console.log('step: startStep'); - const _uploadedFile = await uploadFileStep(ctx); + const uploadedFile = await uploadFileStep(ctx); + + if (uploadedFile !== null) { + const _excelData = await extractFileDataStep(ctx, uploadedFile); + } await successStep(ctx); } diff --git a/src/steps/extractFileData.tsx b/src/steps/extractFileData.tsx new file mode 100644 index 0000000..305a7bf --- /dev/null +++ b/src/steps/extractFileData.tsx @@ -0,0 +1,30 @@ +import {SDKFile, convertBase64ToBuffer, type Context} from '@matterway/sdk'; +import {Workbook} from 'exceljs'; +import {isEmpty} from 'lodash-es'; + +export async function extractFileDataStep(ctx: Context, excelFile: SDKFile) { + console.log('step: extractFileDataStep', {excelFile}); + + const fileBuffer = convertBase64ToBuffer(excelFile.data); + const workbook = await new Workbook().xlsx.load(fileBuffer); + const worksheet = workbook.worksheets[0]; + + const data = worksheet.getRows(2, worksheet.rowCount); + const extractedData = data + ?.map((row) => ({ + projectName: row.getCell(1).value, + startDate: row.getCell(2).value, + targetEndDate: row.getCell(3).value, + budget: row.getCell(4).value, + })) + .filter( + (obj) => + !isEmpty(obj.projectName) || + !isEmpty(obj.startDate) || + !isEmpty(obj.targetEndDate) || + !isEmpty(obj.budget), + ); + + console.log('step: extractFileDataStep end', {extractedData}); + return extractedData; +} diff --git a/src/steps/uploadFile.tsx b/src/steps/uploadFile.tsx index a0b9cc3..fed6091 100644 --- a/src/steps/uploadFile.tsx +++ b/src/steps/uploadFile.tsx @@ -57,5 +57,5 @@ export async function uploadFileStep(ctx: Context) { } console.log('step: uploadFileStep end', files[0]); - return {excelFile: files[0]}; + return files[0]; }