diff --git a/helpers/auth.nim b/helpers/auth.nim
index 2998fac..1610b19 100644
--- a/helpers/auth.nim
+++ b/helpers/auth.nim
@@ -3,7 +3,7 @@ This file is part of Simple Site Manager.
Simple Site Manager is released under the GNU Affero General Public License 3.0.
See COPYING or for details.]#
-import std/[strutils, cgi, strtabs, cookies, sysrand, base64]
+import std/[cgi, strtabs, cookies, sysrand, base64]
import guildenstern/[httpserver], sqliteral
import "../models/session", "db", "global"
diff --git a/helpers/reminder.nim b/helpers/reminder.nim
index 9849322..a4eaaa2 100644
--- a/helpers/reminder.nim
+++ b/helpers/reminder.nim
@@ -1,4 +1,4 @@
-import std/[times, osproc, strutils], smtp
+import std/[times, osproc], smtp
import ../models/reminder, ../models/user, datetime
proc setFutureSendDate(reminderId: int) =
@@ -10,24 +10,33 @@ proc setFutureSendDate(reminderId: int) =
newSendDate = now() + 1.days
reminder.sendDate = $format(newSendDate, "yyyy-MM-dd")
updateReminderSendDate(reminder)
+ clearAllReminders()
of "week":
newSendDate = nextWeekday(reminder.weeklyOn)
reminder.sendDate = $format(newSendDate, "yyyy-MM-dd")
updateReminderSendDate(reminder)
+ clearAllReminders()
of "month":
if reminder.monthlyOnDay > 0:
#create DateTime with current month and year and reminder.monthlyOnDay
newSendDate = dateTime(year(now()), month(now()), reminder.monthlyOnDay)
+ echo newSendDate
#add 1 month only if monthlyOnDay hasn't occured in current month yet.
+ echo reminder.monthlyOnDay
+ echo monthDay(now())
if reminder.monthlyOnDay < monthDay(now()):
newSendDate = newSendDate + 1.months
+ echo newSendDate
reminder.sendDate = $format(newSendDate, "yyyy-MM-dd")
+ echo reminder.sendDate
updateReminderSendDate(reminder)
+ clearAllReminders()
else:
#monthly on week number and weekday. e.g. "third thursday of every month".
newSendDate = nextMonthlyOnWeekdayOfWeek($reminder.monthlyOnWeekday, $reminder.monthlyOnWeek)
reminder.sendDate = $format(newSendDate, "yyyy-MM-dd")
updateReminderSendDate(reminder)
+ clearAllReminders()
of "year":
#yearly on month and day.
#string zeros (db artifacts) have a length of 1...
@@ -35,14 +44,15 @@ proc setFutureSendDate(reminderId: int) =
newSendDate = nextYearlyDate(reminder.yearlyOnMonth, reminder.yearlyOnDay)
reminder.sendDate = $format(newSendDate, "yyyy-MM-dd")
updateReminderSendDate(reminder)
+ clearAllReminders()
#yearly on weekday of week of month. e.g. third thursday of november of each year.
else:
newSendDate = nextYearlyOnWeekdayOfWeekOfMonth($reminder.yearlyOnWeekday, $reminder.yearlyOnWeek, $reminder.yearlyOnMonth2)
reminder.sendDate = $format(newSendDate, "yyyy-MM-dd")
updateReminderSendDate(reminder)
+ clearAllReminders()
else:
- echo "Invalid value for reminder.repeatFreq in setFutureSendDate()"
- clearAllReminders()
+ echo "Invalid value for reminder.repeatFreq in setFutureSendDate()"
proc sendEmail(reminderMsg: string) =
let userEmailAddress = getEmailByUserId("1")
diff --git a/models/reminder.nim b/models/reminder.nim
index 3fe35e8..d786514 100644
--- a/models/reminder.nim
+++ b/models/reminder.nim
@@ -3,7 +3,8 @@ This file is part of Simple Site Manager.
Simple Site Manager is released under the GNU Affero General Public License 3.0.
See COPYING or for details.]#
-import sqliteral, "../helpers/db", "../helpers/global.nim", sequtils
+#import sqliteral, "../helpers/db", "../helpers/global.nim", sequtils, algorithm, times
+import sqliteral, "../helpers/db", algorithm, times
type
Reminder* = object
@@ -12,11 +13,24 @@ type
var allReminders: seq[Reminder]
+#proc myCmp(x, y: Reminder): int =
+# cmp(x.sendDate, y.sendDate)
+
+proc getReminderSendDatetime*(reminder: Reminder): DateTime =
+ let sendDateDTString = $reminder.sendDate & " " & $reminder.sendTimeHr & ":" & $reminder.sendTimeMin & ":" & $reminder.sendTimeAmPm
+ #single digits for minutes, as db send_time_min is integer and won't use "00", which results in runtime parse error.
+ let sendDateDT = parse(sendDateDTString, "yyyy-M-d h:m:tt")
+ return sendDateDT
+
+proc myCmp(x, y: Reminder): int =
+ cmp(getReminderSendDatetime(x), getReminderSendDatetime(y))
+
proc getAllReminders*(): seq[Reminder] =
{.gcsafe.}:
if allReminders.len == 0:
for row in db1.rows(SelectAllReminders):
allReminders.add(Reminder(id: row.getInt(0), title: row.getString(1), message: row.getString(2), notifyVia: row.getString(3), repeats: row.getInt(4), repeatFreq: row.getString(5), weeklyOn: row.getString(6), monthlyOnDay: row.getInt(7), monthlyOnWeekday: row.getString(8), monthlyOnWeek: row.getString(9), yearlyOnMonth: row.getString(10), yearlyOnDay: row.getInt(11), yearlyOnWeek: row.getString(12), yearlyOnWeekday: row.getString(13), yearlyOnMonth2: row.getString(14), sendDate: row.getString(15), sendTimeHr: row.getInt(16), sendTimeMin: row.getInt(17), sendTimeAmPm: row.getString(18)))
+ allReminders.sort(myCmp)
return allReminders
proc clearAllReminders*() =
diff --git a/post_handlers/reminder_post_handler.nim b/post_handlers/reminder_post_handler.nim
index 9e207ff..96b6b37 100644
--- a/post_handlers/reminder_post_handler.nim
+++ b/post_handlers/reminder_post_handler.nim
@@ -3,8 +3,8 @@ This file is part of Simple Site Manager.
Simple Site Manager is released under the GNU Affero General Public License 3.0.
See COPYING or for details.]#
-import guildenstern/httpserver, jsony
-import "../helpers/form", "../helpers/global", "../helpers/validation", "../helpers/auth"
+import guildenstern/httpserver
+import "../helpers/form", "../helpers/global", "../helpers/validation"
import "../models/reminder"
proc reminderCreatePostHandler*() =
diff --git a/templates/main_template_top.nimf b/templates/main_template_top.nimf
index 15035b7..31378c7 100644
--- a/templates/main_template_top.nimf
+++ b/templates/main_template_top.nimf
@@ -1,5 +1,5 @@
#? stdtmpl(subsChar = '$', metaChar = '#')
-#import "../helpers/global", "../models/reminder", "../helpers/auth"
+#import "../helpers/global", "../models/reminder"
#proc mainTemplateTop*(title, csrfToken: string): string =
#let sections = getAllReminders()
# result = ""
diff --git a/templates/reminder_create.nimf b/templates/reminder_create.nimf
index bc0aa3a..c4f93ea 100644
--- a/templates/reminder_create.nimf
+++ b/templates/reminder_create.nimf
@@ -1,5 +1,5 @@
#? stdtmpl(subsChar = '$', metaChar = '#')
-#import "../helpers/global", "../helpers/form", "../helpers/auth", "../models/reminder"
+#import "../helpers/global", "../helpers/form"
#import "main_template_top.nimf", "main_template_bottom.nimf"
#proc reminderCreateTemplate*(csrfToken: string, fr: FormResult): string =
#let pageTitle = "Create a Reminder"
@@ -12,7 +12,7 @@