/** * File which deals with adding and removing downloads from * the admin section of the website. * * @author Jeffery Russell 6-30-18 */ /** Whiskers template file */ const TEMPLATE_FILE = "admin/adminUsers.html"; const includes = require('../includes/includes.js'); //updates db const sql = require('../utils/sql'); //parses post data const qs = require('querystring'); /** * Processes post requests from the addDownload form * * @param postData * @returns {*|Promise} */ const addUserPostData = function(postData) { return new Promise(function(resolve, reject) { const post = qs.parse(postData); if(post.add_user) { sql.addUser(post.add_user_name, post.add_user_password) .then(function() { resolve(); }).catch(function(error) { reject(error); }) } else { resolve(); } }); }; /** * Removes a download if requested by the * post data from an admin. */ const removeUserPost = function(postData) { return new Promise(function(resolve, reject) { const post = qs.parse(postData); console.log(post); if(post.delete_user) { console.log("Removing user: " + post.delete_user); sql.removeUser(post.delete_user).then(function() { resolve(); }).catch(function(err) { reject(err); }); } else { resolve(); } }); }; /** * Processes post data to determine if the user requested that * a user be updated in the database. */ const editUserPost = function(postData, templateContext) { return new Promise(function(resolve, reject) { const post = qs.parse(postData); if(post.edit_user) { sql.getUserByID(post.edit_user).then(function(user) { if(user.length == 1) { templateContext.edit_user = post.edit_user; templateContext.user_name = user[0].user_name; resolve(); } else { resolve(); } }).catch(function(err) { reject(err); }); } else if(post.edit_user_2) { sql.updateUser(post.edit_user_2, post.edit_user_name, post.edit_user_password) .then(function() { resolve(); }) } else { resolve(); } }); }; /** * Fetches the download items in the database so that * the template engine can use it to display them in * a table. * * @param templateContext-- context item used by whiskers * @returns {Promise} */ const getUserInformation = function(templateContext) { return new Promise(function(resolve, reject) { sql.getAllUsers().then(function(users) { templateContext.users = users; resolve(); }).catch(function(error) { reject(error); }); }); }; module.exports= { /** Fetches context information for the template and handles * post data for the downloads. * * @param postData posted by user * @param templateContext json object used as the template context * @returns {Promise} renders the template used for this page */ main: function(templateContext) { return new Promise(function(resolve, reject) { Promise.all([includes.fetchTemplate(TEMPLATE_FILE), getUserInformation(templateContext)]).then(function(template) { templateContext.adminPage = template[0]; resolve(); }).catch(function(error) { console.log("error in users.js"); reject(error); }); }); }, processPostData: function(templateContext, postData) { return new Promise(function(resolve, reject) { Promise.all([includes.fetchTemplate(TEMPLATE_FILE), addUserPostData(postData), removeUserPost(postData), editUserPost(postData, templateContext), getUserInformation(templateContext)]).then(function(template) { templateContext.adminPage = template[0]; resolve(); }).catch(function(error) { console.log("error in users.js"); reject(error); }); }); } };