- /**
- * File which deals with adding and removing downloads from
- * the admin section of the website.
- *
- * @author Jeffery Russell 6-30-18
- */
-
-
- //file IO
- const utils = require('../../utils/utils.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 addDownloadPostData = function(postData)
- {
- return new Promise(function(resolve, reject)
- {
- const post = qs.parse(postData);
- if(post.add_download)
- {
- sql.addDownload(post.add_download_name, post.add_download_file)
- .then(function()
- {
- resolve("");
- }).catch(function(error)
- {
- reject(error);
- })
- }
- else
- {
- resolve("");
- }
- });
- };
-
-
- /**
- * Displays the addDownload form the the user
- *
- * @param postData
- * @returns {*|Promise}
- */
- const addDownload = function(postData)
- {
- return new Promise(function(resolve, reject)
- {
- Promise.all([addDownloadPostData(postData),
- utils.include("./admin/downloads/addDownload.html")]).then(function(html)
- {
- resolve("<div class=\"col-md-6\">" + html.join('') + "</div>");
- }).catch(function(error)
- {
- reject(error);
- })
- });
- };
-
-
- /**
- * Handel form requests from the downloads table
- *
- * @param postData
- * @returns {*|Promise}
- */
- const displayDownloadsPostData = function(postData)
- {
- return new Promise(function(resolve, reject)
- {
- const post = qs.parse(postData);
- if(post.delete_download)
- {
- sql.removeDownload(post.delete_download).then(function()
- {
- resolve(postData);
- }).catch(function(err)
- {
- reject(err);
- });
- }
- else
- {
- resolve(postData);
- }
- });
- };
-
-
- /**
- * Renders a single download row in the downloads table
- *
- * @param download
- * @returns {*|Promise}
- */
- const renderDownloadRow = function(download)
- {
- return "<tr>" +
- "<td>" + download.name + "</td>" +
- "<td>" + download.file + "</td>" +
- "<td>" + download.download_count + "</td>" +
- "<td><form action=\"/admin\" method =\"post\" >\n" +
- " <input type=\"submit\" name=\"submit\" value=\"Delete\"\n" +
- " class=\"btn btn-secondary\"/>\n" +
- "<input type='hidden' name='delete_download' value='" +
- download.download_id + "'/>"+
- "</form></td>" +
- "</tr>";
- };
-
-
- /**
- * Displays all the download information in a table
- * @param postData
- * @returns {*|Promise}
- */
- const displayDownloads = function(postData)
- {
- var html = "<div class=\"col-md-6\">";
- return new Promise(function(resolve, reject)
- {
- displayDownloadsPostData(postData).then(function()
- {
- html += "<div class='blogPost'>" +
- "<h1 class=\"text-center\">Downloads</h1>" +
- "<div class=\"\"><table class=\"table table-striped\">" +
- "<thead class=\"thead-dark\"><tr>" +
- "<td>Download Name</td><td>File</td>" +
- "<td>Download Count</td><td>Delete</td>" +
- "</tr></thead><tbody>";
-
-
- sql.getAllDownloads().then(function(downloads)
- {
- var downloadPromises = [];
-
- downloads.forEach(function(download)
- {
- downloadPromises.push(renderDownloadRow(download));
- });
-
- Promise.all(downloadPromises).then(function(htmls)
- {
- const htmlafter = "</tbody></table></div></div><br>" +
- "</div>";
-
- resolve(html + htmls.join('') + htmlafter);
- });
- }).catch(function(error)
- {
- reject(error);
- });
- });
- });
- };
-
-
- module.exports=
- {
- /**
- * Renders tha download section of the admin page
- *
- * @param postData
- * @returns {Promise}
- */
- main: function(postData)
- {
- return new Promise(function(resolve, reject)
- {
- Promise.all([addDownload(postData),
- displayDownloads(postData)]).then(function(html)
- {
- resolve("<div class=\"row\">" + html.join('') + "</div>");
- }).catch(function(error)
- {
- console.log("error in add downloads.js");
- reject(error);
- });
- });
- }
- };
|