From 101184bf17cae9c1e053264a57914d4beb5a60d2 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 17 Jun 2019 14:29:01 +0530 Subject: [PATCH 1/6] Trying to save project attachments at the time of project creation --- src/routes/projects/create.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/routes/projects/create.js b/src/routes/projects/create.js index fe93fd91..e332bdd1 100644 --- a/src/routes/projects/create.js +++ b/src/routes/projects/create.js @@ -105,6 +105,21 @@ function createProjectAndPhases(req, project, projectTemplate, productTemplates) }); } return Promise.resolve(newProject); + }).then((newProject) => { + if (project.attachments && (project.attachments.length > 0)) { + req.log.debug('creating project attachments'); + const attachments = project.attachments.map(attachment => Object.assign({ + projectId: newProject.id, + createdBy: req.authUser.userId, + updatedBy: req.authUser.userId, + }, attachment)); + return models.ProjectAttachment.bulkCreate(attachments, { returning: true }).then((projectAttachments) => { + result.attachments = _.map(projectAttachments, attachment => + _.omit(attachment.toJSON(), ['deletedAt', 'deletedBy'])); + return Promise.resolve(newProject); + }); + } + return Promise.resolve(newProject); }).then((newProject) => { result.newProject = newProject; @@ -263,6 +278,7 @@ module.exports = [ let newProject = null; let newPhases; let projectEstimations; + let projectAttachments; models.sequelize.transaction(() => { req.log.debug('Create Project - Starting transaction'); // Validate the templates @@ -276,6 +292,7 @@ module.exports = [ newProject = createdProjectAndPhases.newProject; newPhases = createdProjectAndPhases.newPhases; projectEstimations = createdProjectAndPhases.estimations; + projectAttachments = createdProjectAndPhases.attachments; req.log.debug('new project created (id# %d, name: %s)', newProject.id, newProject.name); // create direct project with name and description @@ -316,8 +333,8 @@ module.exports = [ newProject = newProject.get({ plain: true }); // remove utm details & deletedAt field newProject = _.omit(newProject, ['deletedAt', 'utm']); - // add an empty attachments array - newProject.attachments = []; + // adds the project attachments, if any + newProject.attachments = projectAttachments; // set phases array newProject.phases = newPhases; // sets estimations array From 11c7f41ae0305216df709aa9cc808c81a262a877 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 17 Jun 2019 15:21:05 +0530 Subject: [PATCH 2/6] Lint fix --- src/routes/projects/create.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes/projects/create.js b/src/routes/projects/create.js index e332bdd1..87b726b7 100644 --- a/src/routes/projects/create.js +++ b/src/routes/projects/create.js @@ -170,7 +170,8 @@ function createProjectAndPhases(req, project, projectTemplate, productTemplates) }); }); })); - }).then(() => Promise.resolve(result)); + }) + .then(() => Promise.resolve(result)); } /** From 686ccb917ce614db4d0b509471be3cd32393c455 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 17 Jun 2019 15:32:52 +0530 Subject: [PATCH 3/6] temp deployable feature branch --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4864453b..fb44eb83 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -96,7 +96,7 @@ workflows: - test filters: branches: - only: ['dev', 'dev-sts'] + only: ['dev', 'dev-sts', 'feature/adding_attachments_during_project_creation'] - deployProd: context : org-global requires: From e3ff91c6063177f32af04867cb8cb7274ee2488e Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 17 Jun 2019 16:12:50 +0530 Subject: [PATCH 4/6] Accepting attachments in payload of project creation request. --- src/routes/projects/create.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/routes/projects/create.js b/src/routes/projects/create.js index 87b726b7..b0208719 100644 --- a/src/routes/projects/create.js +++ b/src/routes/projects/create.js @@ -66,6 +66,14 @@ const createProjectValdiations = { buildingBlockKey: Joi.string().required(), metadata: Joi.object().optional(), })).optional(), + attachments: Joi.array().items(Joi.object().keys({ + category: Joi.string().required(), + contentType: Joi.string().required(), + description: Joi.string().optional(), + filePath: Joi.string().required(), + size: Joi.number().required(), + title: Joi.string().required(), + })).optional(), }).required(), }, }; From 38d00e7bdee8db417d4178d1b26ac22c0c6b9d4e Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 17 Jun 2019 16:40:09 +0530 Subject: [PATCH 5/6] Allowing null and empty values for description of an attachment --- src/routes/projects/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/projects/create.js b/src/routes/projects/create.js index b0208719..bcc62509 100644 --- a/src/routes/projects/create.js +++ b/src/routes/projects/create.js @@ -69,7 +69,7 @@ const createProjectValdiations = { attachments: Joi.array().items(Joi.object().keys({ category: Joi.string().required(), contentType: Joi.string().required(), - description: Joi.string().optional(), + description: Joi.string().allow(null).allow('').optional(), filePath: Joi.string().required(), size: Joi.number().required(), title: Joi.string().required(), From f14dfaf8f0a80a95a1929dc0d8337b593c7e17b3 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Tue, 25 Jun 2019 14:00:36 +0530 Subject: [PATCH 6/6] Removed feature branch from deployable branches list. --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fb44eb83..4864453b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -96,7 +96,7 @@ workflows: - test filters: branches: - only: ['dev', 'dev-sts', 'feature/adding_attachments_during_project_creation'] + only: ['dev', 'dev-sts'] - deployProd: context : org-global requires: