From 98bcbcd256f153f476d698d241d0ad21d06c1b61 Mon Sep 17 00:00:00 2001 From: Brian McGonagill Date: Thu, 1 Aug 2024 11:56:04 -0500 Subject: [PATCH] Aded Task cleanup by number of weeks or months --- client/AdminMgmt/CleanUp/cleanUp.html | 30 +++++++++++---- client/AdminMgmt/CleanUp/cleanUp.js | 10 +++++ .../modalConfirm/cleanUpModalConfirm.js | 29 +++++++++++---- imports/api/menu.js | 7 +--- imports/api/tasks.js | 37 +++++++++++++++++++ server/methods.js | 3 +- 6 files changed, 93 insertions(+), 23 deletions(-) diff --git a/client/AdminMgmt/CleanUp/cleanUp.html b/client/AdminMgmt/CleanUp/cleanUp.html index d92b810..f27dd77 100644 --- a/client/AdminMgmt/CleanUp/cleanUp.html +++ b/client/AdminMgmt/CleanUp/cleanUp.html @@ -3,7 +3,7 @@

Clean Up System Data

-
+
Clean Up List Items Clean Lists @@ -13,7 +13,7 @@
-
+
Clean Up Menus Clean Menus @@ -23,7 +23,7 @@
-
+
Clean Up Products Clean Products @@ -33,17 +33,31 @@
-
+
Clean Up Tasks - Clean Tasks - info - +
+
+ + +
+
+ Clean Tasks + info + +
+
-
+
Clean Up Stores Clean Stores diff --git a/client/AdminMgmt/CleanUp/cleanUp.js b/client/AdminMgmt/CleanUp/cleanUp.js index 0e106b1..bbadd13 100644 --- a/client/AdminMgmt/CleanUp/cleanUp.js +++ b/client/AdminMgmt/CleanUp/cleanUp.js @@ -19,6 +19,14 @@ Template.cleanUp.onRendered(function() { var elemsm = document.querySelectorAll('.modal'); var instancesm = M.Modal.init(elemsm, {}); + + var elemse = document.querySelectorAll('select'); + var instancese = M.FormSelect.init(elemse, {}); + + setTimeout(function() { + var instances = M.Tooltip.init(elems, {}); + var instancese = M.FormSelect.init(elemse, {}); + }, 300); }); Template.cleanUp.helpers({ @@ -45,5 +53,7 @@ Template.cleanUp.events({ 'click #cleanTasks' (event) { event.preventDefault(); Session.set("cleanWhat", "Tasks"); + let timeFrame = $("#removeOverdueTasks").val(); + Session.set("overdueVal", timeFrame); }, }); \ No newline at end of file diff --git a/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js b/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js index 02f7b39..3ea268e 100644 --- a/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js +++ b/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js @@ -25,27 +25,40 @@ Template.cleanUpModalConfirm.events({ switch(whatItems) { case "Lists": - cleanUp("clean.Lists"); + cleanUp("clean.Lists", whatItems); case "Menus": - cleanUp("clean.Menus"); + cleanUp("clean.Menus", whatItems); case "Products": - // cleanUp("clean.Products"); + // cleanUp("clean.Products", whatItems); case "Stores": - // cleanUp("clean.Stores"); + // cleanUp("clean.Stores", whatItems); case "Tasks": - // cleanUp("clean.Tasks"); + cleanTasks("clean.Tasks", whatItems); default: break; } } }); -cleanUp = function(methodName) { +cleanUp = function(methodName, whatItems) { Meteor.call(methodName, function(err, result) { if (err) { - console.log(" ERROR cleaning lists: " + err) + console.log(" ERROR cleaning " + whatItems + ": " + err); } else { - showSnackbar("Lists have been cleaned up!", "green"); + showSnackbar(whatItems + " have been cleaned up!", "green"); + let confirmModal = document.getElementById('cleanUpConfirm'); + M.Modal.getInstance(confirmModal).close(); + } + }); +} + +cleanTasks = function(methodName, whatItems) { + let timeFrame = Session.get("overdueVal"); + Meteor.call(methodName, timeFrame, function(err, result) { + if (err) { + console.log(" ERROR cleaning " + whatItems + ": " + err); + } else { + showSnackbar(whatItems + " have been cleaned up!", "green"); let confirmModal = document.getElementById('cleanUpConfirm'); M.Modal.getInstance(confirmModal).close(); } diff --git a/imports/api/menu.js b/imports/api/menu.js index 7271f23..51d4f2a 100644 --- a/imports/api/menu.js +++ b/imports/api/menu.js @@ -94,7 +94,6 @@ Meteor.methods({ let srvDate = moment(items[j].serveDateActual); let today = moment(); let expired = moment(today).isAfter(srvDate); - // console.log("Expired: " + expired); if (expired != true) { removeMenu = false; } @@ -108,16 +107,12 @@ Meteor.methods({ // next let's add the ids of any menus that are marked complete let markedComplete = Menus.find({ menuComplete: true }).fetch(); - // console.log("---- ---- ----"); - // console.dir(markedComplete); for (k = 0; k < markedComplete.length; k++) { let menuId = markedComplete[k]._id; removeMenuIds.push(menuId); } - // console.log(" ----- Need to remove Menus: "); - console.dir(removeMenuIds); - + // finally we'll cycle through the ids and remove the items we collected up. for (l = 0; l < removeMenuIds.length; l++) { Menus.remove({ _id: removeMenuIds[l] }); } diff --git a/imports/api/tasks.js b/imports/api/tasks.js index 1989d8c..7e581b1 100644 --- a/imports/api/tasks.js +++ b/imports/api/tasks.js @@ -1,6 +1,7 @@ import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { check } from 'meteor/check'; +import moment from 'moment'; export const TaskItems = new Mongo.Collection('taskitems'); @@ -139,4 +140,40 @@ Meteor.methods({ } }); }, + 'clean.Tasks' (timeFrame) { + check(timeFrame, String); + + if (!this.userId) { + throw new Meteor.Error('You are not allowed to clean up old Tasks. Make sure you are logged in with valid user credentials.'); + } + + let d = new Date(); + let upToDate = ""; + switch(timeFrame) { + case "1-week": + console.log("1 Week"); + upToDate = 7 * 24 * 60 * 60 * 1000; + break; + case "2-weeks": + console.log("2 Week"); + upToDate = 14 * 24 * 60 * 60 * 1000; + break; + case '1-month': + console.log("1 month"); + upToDate = 30 * 24 * 60 * 60 * 1000; + break; + case '3-months': + console.log("3 months"); + upToDate = 90 * 24 * 60 * 60 * 1000; + break; + case 'all': + console.log("all"); + upToDate = 1 * 24 * 60 * 60 * 1000; + break; + default: + break; + } + + return TaskItems.remove({ actualDate: { $lt: new Date((new Date()) - upToDate )}}); + } }); \ No newline at end of file diff --git a/server/methods.js b/server/methods.js index e9f9271..d695cf1 100644 --- a/server/methods.js +++ b/server/methods.js @@ -1,6 +1,7 @@ import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { check } from 'meteor/check'; +import { TaskItems } from '../imports/api/tasks'; Meteor.methods({ 'addToRole' (role) { @@ -57,5 +58,5 @@ Meteor.methods({ check(role, String); return Roles.setUserRoles(userId, role); - } + }, }); \ No newline at end of file