An error occurred while loading the file. Please try again.
routes-project.js 11.77 KiB
const methods = require('./methods')
const async = require('async')
const helpers = require('./helpers')
const pictSizeLimit = 1000000 // 1 MB
module.exports = function (app) {
  // ======== APP ROUTES - PROJECT ====================
  var lang = 'DE'
  app.get('/mailinglists', function (req, res) {
    async.waterfall([
        function(done) {
            methods.getAllMailinglists(function(mailinglistOverview, err) {
                if (!err) {
                    done(err, mailinglistOverview)
        // create JSON object of mailinglists for front-end
        function(mailinglistOverview, done) {
            var allMailingLists = []  // JSON object
            for (let i = 0; i < mailinglistOverview.length; i++) {
                // add data to JSON object
                allMailingLists.push({
                    id: mailinglistOverview[i].id,
                    name: mailinglistOverview[i].name,
                    src: mailinglistOverview[i].src,
                    projectstatus: mailinglistOverview[i].projectstatus,
                    project_title: mailinglistOverview[i].project_title,
                    keywords: mailinglistOverview[i].keywords
                });
            res.render(lang+'/project/mailinglists', {
                isUserAuthenticated: req.isAuthenticated(),
                user: req.user,
                mailinglists: allMailingLists
            });
  });
  app.get('/project_', function (req, res) {
    async.waterfall([
      // get all projects from projectdb
      function(done) {
        methods.getAllProjects(function(projectsOverview, err) {
          if (!err) {
            done(err, projectsOverview)
      // create JSON object for front-end
      function(projectsOverview, done) {
        var activeProjects = []
        var nonActiveProjects = []
        for (var i = 0; i < projectsOverview.length; i++) {
          var project = {
            id: projectsOverview[i].id,
            logo: projectsOverview[i].logo,
            akronym: projectsOverview[i].pname,
            title: projectsOverview[i].title,
            summary: projectsOverview[i].onelinesummary,
            category: projectsOverview[i].category,
            cp: projectsOverview[i].contact_email,
            gitlab: projectsOverview[i].gitlab
if (projectsOverview[i].projectstatus == 0) { nonActiveProjects.push(project) } else if (projectsOverview[i].projectstatus == 1) { activeProjects.push(project) } } // render the page if (req.isAuthenticated()) { res.render(lang+'/project/projects', { isUserAuthenticated: true, nonActive: nonActiveProjects, active: activeProjects }); } else { res.render(lang+'/project/projects', { isUserAuthenticated: false, nonActive: nonActiveProjects, active: activeProjects }); } } ]) }) app.get('/project', function (req, res) { res.render(lang+'/project/project-simplified', { isUserAuthenticated: req.isAuthenticated(), user: req.user }); }) app.get('/addprojectoverview', function (req, res) { if (req.isAuthenticated()) { res.render(lang+'/project/addProjectOverview') } else { res.redirect('/login') } }) 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 } methods.addProjectOverview(projectOverviewData, function(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.post('/addprojectoverview', function (req, res) { if (req.isAuthenticated()) { var wiki = 0 if (req.body.wiki) wiki = 1 var projectLogo = req.files.logo var projectPicture = req.files.src var projectLogoPath, projectPicturePath if (projectLogo) { // raise error if size limit is exceeded if (projectLogo.size === pictSizeLimit) { req.flash('error', 'Projektlogo exceeds 1 MB'); res.redirect('/addprojectoverview'); } else { // TEST PATH FOR DEVELOPMENT (LOCALHOST) projectLogoPath = './folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name // PATH FOR TEST/LIVE SERVER // var projectLogoPath = to-be-defined } } if (projectPicture) { // raise error if size limit is exceeded if (projectPicture.size === pictSizeLimit) { req.flash('error', 'Projektbild exceeds 1 MB'); res.redirect('/addprojectoverview'); } else { // TEST PATH FOR DEVELOPMENT (LOCALHOST) projectPicturePath = './folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name // PATH FOR TEST/LIVE SERVER // var projectPicturePath = to-be-defined } } 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: projectLogoPath, 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: projectPicturePath, caption: req.body.caption, contact_lastname: req.body.contactName, contact_email: req.body.contactEmail, leader_lastname: req.body.leaderName, leader_email: req.body.leaderEmail } // save pictures if (projectLogo) { projectLogo.mv(projectLogoPath, function(err) { if (err) { console.error(err) res.status(500).render(lang+'/500', { error: err }) } }); } if (projectPicture) { projectPicture.mv(projectPicturePath, function(err) { if (err) { console.error(err) res.status(500).render(lang+'/500', { error: err }) } }); } /* 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(data, err){ if (err) { res.status(500).render(lang+'/500', { error: err }) } else { done(err, data.insertId) } }) }, // 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 }) app.post('/updateprojectoverview', function (req, res) { // only their own project }) app.get('/projectoverview', function(req, res){ async.waterfall([ function(done) { methods.getProjectOverviewById(req.query.projectID, function(projectOverview, err) { if (!err) { done(err, projectOverview) } }) }, function(projectOverview,done){ methods.getProjectImagesById(req.query.projectID, function(projectImages, err) { if (!err) { done(err, projectImages, projectOverview) } }) }, // render projectOverview page function(projectImages, projectOverview, done) { console.log(projectImages); partnerWebsites = helpers.stringToArray(projectOverview[0].partner_website); partnerNames = helpers.stringToArray(projectOverview[0].partner_name); awardSites = helpers.stringToArray(projectOverview[0].award_website); awardNames = helpers.stringToArray(projectOverview[0].award_name); sponsorWebsites = helpers.stringToArray(projectOverview[0].sponsor_website); sponsorImgs = helpers.stringToArray(projectOverview[0].sponsor_img); sponsorNames = helpers.stringToArray(projectOverview[0].sponsor_name); res.render(lang+'/project/projectOverview', { isUserAuthenticated: req.isAuthenticated(), user: req.user, projectOV: projectOverview, projectImgs: projectImages, partnerWS: partnerWebsites, partnerN: partnerNames, awardWS: awardSites, awardN: awardNames, sponsorWS: sponsorWebsites, sponsorIMG: sponsorImgs, sponsorN: sponsorNames }); } ]) }) app.get('/videoconferences', function(req, res){ res.render(lang+'/project/videoconferences', {
isUserAuthenticated: req.isAuthenticated(), user: req.user, }); }) app.get('/landingpage', function(req, res){ res.render(lang+'/project/landingpage', { isUserAuthenticated: req.isAuthenticated(), user: req.user, }); }) };