//const SamlStrategy = require('passport-saml').Strategy import methods from '../functions/methods' import gitlab from '../functions/gitlab' import helpers from '../functions/helpers' import https from 'https' module.exports = function (app:any, lang:string) { // ======== APP ROUTES - PROJECT ==================== app.get('/', function (req:any, res:any) { res.render(lang+'/project/project-simplified') }) app.get('/mailinglists', async function (req:any, res:any) { let mailList = await methods.getAllMailinglists() if (mailList) { let allMailingLists = [] // JSON object for (let i = 0; i < mailList.length; i++) { // add data to JSON object allMailingLists.push({ id: mailList[i].id, name: mailList[i].name, src: mailList[i].src, projectstatus: mailList[i].projectstatus, project_title: mailList[i].project_title, keywords: mailList[i].keywords }); } res.render(lang+'/project/mailinglists', { //isUserAuthenticated: req.isAuthenticated(), //user: req.user, mailinglists: allMailingLists }); } else { res.render(lang+'/project/mailinglists', { //isUserAuthenticated: req.isAuthenticated(), //user: req.user, mailinglists: null }) } }) app.get('/projectoverview', async function(req:any, res:any){ let projectOverview = await methods.getProjectOverviewById(req.query.projectID) if (projectOverview.length > 0) { let partnerWebsites = helpers.stringToArray(projectOverview[0].partner_website) let partnerNames = helpers.stringToArray(projectOverview[0].partner_name) let awardSites = helpers.stringToArray(projectOverview[0].award_website) let awardNames = helpers.stringToArray(projectOverview[0].award_name) let sponsorWebsites = helpers.stringToArray(projectOverview[0].sponsor_website) let sponsorImgs = helpers.stringToArray(projectOverview[0].sponsor_img) let sponsorNames = helpers.stringToArray(projectOverview[0].sponsor_name) let projectImages = await methods.getProjectImagesById(req.query.projectID) 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 }); } else { res.redirect('/') } }) // Projektdaten app.get('/projektdaten', async function(req:any, res:any){ let projectArr = [] let isProject = true let firstId = 0 let orderKeyword = req.query.sort while (isProject == true) { let projects = await gitlab.getProjects(100, firstId) let projectData = projects.data[0] if (projectData.length == 0) { isProject = false } else { for(let i = 0; i < projectData.length; i++){ // M4_LAB logo for all projects that do not have logo if (projectData[i].avatar_url == null) { projectData[i].avatar_url = "https://m4lab.hft-stuttgart.de/img/body/M4_LAB_LOGO_NO_TEXT.png" } // for all projects that have no description if (projectData[i].description == "") { projectData[i].description = "- no description -" } let project = { logo: projectData[i].avatar_url, name: projectData[i].name, weburl: projectData[i].web_url, desc: projectData[i].description, keywords: projectData[i].tag_list, createdAt: projectData[i].created_at, lastUpdatedAt: projectData[i].last_activity_at } projectArr.push(project) } firstId = projectData[projectData.length-1].id } // MLAB-576 if (orderKeyword == "created_at") { projectArr.sort((a, b) => { let aDate:any = new Date(a.createdAt) let bDate:any = new Date(b.createdAt) return bDate - aDate }); } else if (orderKeyword == "updated_at") { projectArr.sort((a, b) => { let aDate:any = new Date(a.lastUpdatedAt) let bDate:any = new Date(b.lastUpdatedAt) return bDate - aDate }); } else { // default, sorted by name projectArr.sort((a, b) => { let fa = a.name.toLowerCase(), fb = b.name.toLowerCase(); if (fa < fb) return -1; if (fa > fb) return 1; return 0; }); } } res.render(lang+'/project/projectList', { project: projectArr }) }) // Projektinformationen app.get('/projektinformationen', async function(req:any, res:any){ let pagesArr: { logo: any; name: any; weburl: any; desc: any; keywords: any; createdAt: any; lastUpdatedAt: any; }[] = [] let isProject = true let firstId = 0 let orderKeyword = req.query.sort while (isProject == true) { let projects = await gitlab.getProjects(100, firstId) let pagesData = projects.data[1] if (pagesData.length == 0) { isProject = false } else { for(let i = 0; i < pagesData.length; i++){ let status = await gitlab.getLatestPipelineStatus(pagesData[i].id) if (status) { // M4_LAB logo for all projects that do not have logo if (pagesData[i].avatar_url == null) { pagesData[i].avatar_url = "https://m4lab.hft-stuttgart.de/img/body/M4_LAB_LOGO_NO_TEXT.png" } // for all projects that have no description if (pagesData[i].description == "") { pagesData[i].description = "- no description -" } // https://transfer.hft-stuttgart.de/pages/EIGENTUEMER/PROJEKTNAME/ pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/"+pagesData[i].namespace.path+"/"+pagesData[i].name+"/" // remove 'website' from tag list let index = pagesData[i].tag_list.indexOf('website') if (index > -1) { pagesData[i].tag_list.splice(index, 1) } // fill in pagesArr let pages = { logo: pagesData[i].avatar_url, name: pagesData[i].name, weburl: pagesData[i].web_url, desc: pagesData[i].description, keywords: pagesData[i].tag_list, createdAt: pagesData[i].created_at, lastUpdatedAt: pagesData[i].last_activity_at } https.get(pagesData[i].web_url, function (response:any) { if (response.statusCode >= 200 && response.statusCode <= 299) { pagesArr.push(pages) } }) } } firstId = pagesData[pagesData.length-1].id } // MLAB-576 if (orderKeyword == "created_at") { pagesArr.sort((a, b) => { let aDate:any = new Date(a.createdAt) let bDate:any = new Date(b.createdAt) return bDate - aDate }); } else if (orderKeyword == "updated_at") { pagesArr.sort((a, b) => { let aDate:any = new Date(a.lastUpdatedAt) let bDate:any = new Date(b.lastUpdatedAt) return bDate - aDate }); } else { // default, sorted by name pagesArr.sort((a, b) => { let fa = a.name.toLowerCase(), fb = b.name.toLowerCase(); if (fa < fb) return -1; if (fa > fb) return 1; return 0; }); } } res.render(lang+'/project/pagesList', { pages: pagesArr }) }) };