diff --git a/routes/methods.js b/routes/methods.js index d377d61cd79360dd27609a2ab7426607901a9fc6..59709d7d78802cc2232f63afb5c4c16a7431eaf2 100644 --- a/routes/methods.js +++ b/routes/methods.js @@ -132,6 +132,12 @@ var methods = { callback(rows, err); }); }, + addUserProjectRole: function(data, callback) { + dbconn.user.query('INSERT INTO user_project_role SET ?', data, function (err, results, fields){ + if (err) throw err; + callback(err); + }) + }, // ======================= project db ======================= getAllProjects: function(callback) { dbconn.project.query('CALL getAllprojects', function (err, rows, fields){ @@ -146,9 +152,10 @@ var methods = { }) }, addProjectOverview: function(data, callback) { - dbconn.project.query('INSERT INTO project_overview SET ?', data, function (err, rows, fields){ + dbconn.project.query('INSERT INTO project_overview SET ?', data, function (err, results, fields){ if (err) throw err; - callback(err); + //console.log(results.insertId) + callback(results.insertId, err); }) } }; diff --git a/routes/routes-project.js b/routes/routes-project.js index 6b8ac371b0eb983b000f9f9e0e806adcfc96c5aa..ad713a24bbeab20be58d8d4444674de84c38bd2f 100644 --- a/routes/routes-project.js +++ b/routes/routes-project.js @@ -100,7 +100,7 @@ module.exports = function (app) { } }) - app.post('/addprojectoverview', function (req, res) { + app.post('/addprojectoverview__', function (req, res) { if (req.isAuthenticated()) { var wiki = 0 if (req.body.wiki) @@ -146,6 +146,83 @@ module.exports = function (app) { } }) + app.post('/addprojectoverview', function (req, res) { + if (req.isAuthenticated()) { + var wiki = 0 + if (req.body.wiki) + wiki = 1 + + var projectTerm = req.body.termForm + " - " + req.body.termTo + var projectOverviewData = { + pname: req.body.pname, + title: req.body.title, + onelinesummary: req.body.summary, + category: req.body.category, + logo: req.body.logo, + gitlab: req.body.gitlabURL, + wiki: wiki, + overview: req.body.overview, + question: req.body.question, + approach: req.body.approach, + result: req.body.result, + keywords: req.body.keywords, + announcement: req.body.announcement, + term: projectTerm, + further_details: req.body.furtherDetails, + website: req.body.website, + src: req.body.src, + caption: req.body.caption, + contact_lastname: req.body.contactName, + contact_email: req.body.contactEmail, + leader_lastname: req.body.leaderName, + leader_email: req.body.leaderEmail + } + + /* RS: Temporary solution while Project DB is still in early phase. + When User DB and Project DB are integrated and quite stabil, this operation should be done in 1 transaction. + */ + var userId // todo: make this global variable? + async.waterfall([ + // get userId by email from userdb + function(done) { + methods.getUserIdByEmail(req.user.email, function(id, err) { + if (!err) { + userId = id + done(err) + } + }) + }, + // add project overview + function(done) { + methods.addProjectOverview(projectOverviewData, function(projectOverviewId, err){ + if (!err) { + done(err, projectOverviewId) + } + }) + }, + // assign the created overview to logged-in user + function(projectOverviewId, done) { + var userProjectRoleData = { + project_id: projectOverviewId, + user_id: userId, + role_id: 3 // OVERVIEW_CREATOR + } + methods.addUserProjectRole(userProjectRoleData, function(userProjects, err) { + if (err) { + //req.flash('error', "Failed") + req.flash('error', "Fehlgeschlagen") + res.redirect('/addProjectOverview'); + } + else { + req.flash('success', 'Your project has been created.') + res.redirect('/project'); + } + }) + } + ]) + } + }) + app.get('/updateprojectoverview', function (req, res) { // only their own project })