From f20d8c24948f089fa3c199bab62d0d6fd3142570 Mon Sep 17 00:00:00 2001 From: gwang0136 Date: Tue, 20 Apr 2021 11:20:23 -1000 Subject: [PATCH 1/6] handle duplicate file upload --- backend/routes/api/patients.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend/routes/api/patients.js b/backend/routes/api/patients.js index 886dc695..bc5c27af 100644 --- a/backend/routes/api/patients.js +++ b/backend/routes/api/patients.js @@ -211,6 +211,12 @@ router.post( if (err) { res.json(err); } else { + const numExisting = collection.fieldKey.find({ + filename: fileName, + }).length; + if (numExisting > 0) + fileName += '_' + numExisting.toString(); + stepData[fieldKey].push({ filename: fileName, uploadedBy: req.user.Username, From ef148069187986e7d15422381c0829c813616e29 Mon Sep 17 00:00:00 2001 From: gwang0136 Date: Tue, 20 Apr 2021 13:00:08 -1000 Subject: [PATCH 2/6] fix substring issue --- backend/routes/api/patients.js | 51 ++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/backend/routes/api/patients.js b/backend/routes/api/patients.js index bc5c27af..7af697a6 100644 --- a/backend/routes/api/patients.js +++ b/backend/routes/api/patients.js @@ -173,6 +173,7 @@ router.delete( router.post( '/:id/files/:stepKey/:fieldKey/:fileName', errorWrap(async (req, res) => { + console.log('hi'); const { id, stepKey, fieldKey, fileName } = req.params; const patient = await models.Patient.findById(id); if (patient == null) { @@ -211,14 +212,48 @@ router.post( if (err) { res.json(err); } else { - const numExisting = collection.fieldKey.find({ - filename: fileName, - }).length; - if (numExisting > 0) - fileName += '_' + numExisting.toString(); - + var updatedFileName = fileName; + console.log(stepData[fieldKey]); + if ( + stepData[fieldKey].filter( + (e) => e.filename === fileName, + ).length > 0 + ) { + var numPrev = 1; + console.log( + stepData[fieldKey].filter( + (e) => + e.filename === + fileName.split('.')[0] + + '_' + + numPrev + + '.' + + fileName.split('.')[1], + ).length, + ); + while ( + stepData[fieldKey].filter( + (e) => + e.filename === + fileName.split('.')[0] + + '_' + + numPrev + + '.' + + fileName.split('.')[1], + ).length > 0 + ) + numPrev += 1; + updatedFileName = + updatedFileName.split('.')[0] + + '_' + + numPrev + + '.' + + updatedFileName.split('.')[1]; + } + + console.log(updatedFileName); stepData[fieldKey].push({ - filename: fileName, + filename: updatedFileName, uploadedBy: req.user.Username, uploadDate: Date.now(), }); @@ -238,7 +273,7 @@ router.post( success: true, message: 'File successfully uploaded', data: { - name: fileName, + name: updatedFileName, uploadedBy: req.user.Username, uploadDate: Date.now(), mimetype: file.mimetype, From 57d6f52dd70c3e00fe6bc4838375c3562365279f Mon Sep 17 00:00:00 2001 From: gwang0136 Date: Tue, 20 Apr 2021 13:00:43 -1000 Subject: [PATCH 3/6] remove console logs oop --- backend/routes/api/patients.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/backend/routes/api/patients.js b/backend/routes/api/patients.js index 7af697a6..3fde1c55 100644 --- a/backend/routes/api/patients.js +++ b/backend/routes/api/patients.js @@ -213,24 +213,12 @@ router.post( res.json(err); } else { var updatedFileName = fileName; - console.log(stepData[fieldKey]); if ( stepData[fieldKey].filter( (e) => e.filename === fileName, ).length > 0 ) { var numPrev = 1; - console.log( - stepData[fieldKey].filter( - (e) => - e.filename === - fileName.split('.')[0] + - '_' + - numPrev + - '.' + - fileName.split('.')[1], - ).length, - ); while ( stepData[fieldKey].filter( (e) => @@ -251,7 +239,6 @@ router.post( updatedFileName.split('.')[1]; } - console.log(updatedFileName); stepData[fieldKey].push({ filename: updatedFileName, uploadedBy: req.user.Username, From cb4680649f5034a77d90c00a1f8810c69f270e25 Mon Sep 17 00:00:00 2001 From: gwang0136 Date: Tue, 20 Apr 2021 13:03:02 -1000 Subject: [PATCH 4/6] another console log oop --- backend/routes/api/patients.js | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/routes/api/patients.js b/backend/routes/api/patients.js index 3fde1c55..f28f39cf 100644 --- a/backend/routes/api/patients.js +++ b/backend/routes/api/patients.js @@ -173,7 +173,6 @@ router.delete( router.post( '/:id/files/:stepKey/:fieldKey/:fileName', errorWrap(async (req, res) => { - console.log('hi'); const { id, stepKey, fieldKey, fileName } = req.params; const patient = await models.Patient.findById(id); if (patient == null) { From a8346b139cf506a61a94b16f7a206471af725dbe Mon Sep 17 00:00:00 2001 From: gwang0136 Date: Thu, 22 Apr 2021 13:53:25 -1000 Subject: [PATCH 5/6] modularize filename modification and handle filenames with no extension --- backend/routes/api/patients.js | 56 ++++++++++++++++------------------ 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/backend/routes/api/patients.js b/backend/routes/api/patients.js index f28f39cf..f785c909 100644 --- a/backend/routes/api/patients.js +++ b/backend/routes/api/patients.js @@ -169,6 +169,26 @@ router.delete( }), ); +const modifyFileName = async (filename, data) => { + var updatedFileName = filename; + var file = ''; + var suffix = ''; + if (filename.includes('.')) { + file = filename.split('.')[0]; + suffix = '.' + filename.split('.')[1]; + } else file = filename; + if (data.filter((e) => e.filename === filename).length > 0) { + var numPrev = 1; + while ( + data.filter((e) => e.filename === file + '_' + numPrev + suffix) + .length > 0 + ) + numPrev += 1; + updatedFileName = file + '_' + numPrev + suffix; + } + return updatedFileName; +}; + // POST: upload individual files router.post( '/:id/files/:stepKey/:fieldKey/:fileName', @@ -211,35 +231,12 @@ router.post( if (err) { res.json(err); } else { - var updatedFileName = fileName; - if ( - stepData[fieldKey].filter( - (e) => e.filename === fileName, - ).length > 0 - ) { - var numPrev = 1; - while ( - stepData[fieldKey].filter( - (e) => - e.filename === - fileName.split('.')[0] + - '_' + - numPrev + - '.' + - fileName.split('.')[1], - ).length > 0 - ) - numPrev += 1; - updatedFileName = - updatedFileName.split('.')[0] + - '_' + - numPrev + - '.' + - updatedFileName.split('.')[1]; - } - + const modifiedFileName = await modifyFileName( + fileName, + stepData[fieldKey], + ); stepData[fieldKey].push({ - filename: updatedFileName, + filename: modifiedFileName, uploadedBy: req.user.Username, uploadDate: Date.now(), }); @@ -259,13 +256,14 @@ router.post( success: true, message: 'File successfully uploaded', data: { - name: updatedFileName, + name: modifiedFileName, uploadedBy: req.user.Username, uploadDate: Date.now(), mimetype: file.mimetype, size: file.size, }, }); + /*console.log(res.data)*/ } }, ); From a7a4f5f39ff938607252815df14232988593d099 Mon Sep 17 00:00:00 2001 From: gwang0136 Date: Thu, 22 Apr 2021 15:16:12 -1000 Subject: [PATCH 6/6] add curly bois --- backend/routes/api/patients.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/routes/api/patients.js b/backend/routes/api/patients.js index f785c909..b5cb3d38 100644 --- a/backend/routes/api/patients.js +++ b/backend/routes/api/patients.js @@ -176,7 +176,9 @@ const modifyFileName = async (filename, data) => { if (filename.includes('.')) { file = filename.split('.')[0]; suffix = '.' + filename.split('.')[1]; - } else file = filename; + } else { + file = filename; + } if (data.filter((e) => e.filename === filename).length > 0) { var numPrev = 1; while (