more time zone corrections and removing the loop in the notifier script as it now runs via a cron schedule
Security / security (push) Successful in 1m1s

This commit is contained in:
2026-05-31 19:52:09 -05:00
parent d3d22892d2
commit 1e01db0889
2 changed files with 37 additions and 72 deletions
+40 -74
View File
@@ -3,7 +3,6 @@
[string] $dtAPIKey = $ENV:DONETICKAPIKEY [string] $dtAPIKey = $ENV:DONETICKAPIKEY
[string] $appriseWebhookURL = $ENV:APPRISEWEBHOOKURL [string] $appriseWebhookURL = $ENV:APPRISEWEBHOOKURL
[string] $appriseWebhookTag = $ENV:APPRISEWEBHOOKTAG [string] $appriseWebhookTag = $ENV:APPRISEWEBHOOKTAG
[int[]] $notificationTimes = $ENV:NOTIFICATIONTIMES -split ","
function Send-Notification function Send-Notification
@@ -51,87 +50,54 @@ function Get-Chores
} }
} }
if (-not $notificationTimes) { $notificationTimes = @(8) } $today = (Get-Date "23:59:59")
else { $notificationTimes = $notificationTimes | Sort-Object } $chores = Get-Chores
Write-Host "Notification times: $notificationTimes"
while ($true) { $overdueTasks = @()
$today = (Get-Date "23:59:59") $todaysTasks = @()
$chores = Get-Chores
$overdueTasks = @() foreach($chore in $chores)
$todaysTasks = @() {
if ($chore.nextDueDate)
foreach($chore in $chores)
{ {
if ($chore.nextDueDate) $dueDate = (Get-Date $chore.nextDueDate).ToLocalTime()
if (($dueDate - $today).Days -lt 0) #OVERDUE
{ {
$dueDate = (Get-Date $chore.nextDueDate).ToLocalTime() write-host "$($chore.name) $dueDate is overdue!"
if (($dueDate - $today).Days -lt 0) #OVERDUE $overdueTasks += $chore
{
write-host "$($chore.name) $dueDate is overdue!"
$overdueTasks += $chore
}
elseif (($dueDate - $today) -lt 1) #due today
{
write-host "$($chore.name) $dueDate is due today!"
$todaysTasks += $chore
# Send-Notification -title "TASK DUE TODAY" -content "$($chore.Name) is due today!"
}
else
{
write-host "$($chore.name) $dueDate is due in the future"
}
} }
elseif (($dueDate - $today) -lt 1) #due today
}
if ($overdueTasks.Count -ne 0)
{
Write-Host "Sending a notification for $($overdueTasks.Count) overdue tasks"
$content = "The following tasks are overdue!`n"
foreach($overdueTask in $overdueTasks)
{ {
$content += "$($overdueTask.Name) was due $(Get-Date $overdueTask.nextDueDate -Format "MM/dd/yyyy HH:mm")`n" write-host "$($chore.name) $dueDate is due today!"
$todaysTasks += $chore
# Send-Notification -title "TASK DUE TODAY" -content "$($chore.Name) is due today!"
} }
Send-Notification -title "OVERDUE TASKS" -content $content else
}
if ($todaysTasks.Count -ne 0)
{
Write-Host "Sending a notification for $($todaysTasks.Count) tasks due today"
$content = "The following tasks are due today!`n"
foreach($task in $todaysTasks)
{ {
$content += "$($task.Name) is due $(Get-Date $task.nextDueDate -Format "MM/dd/yyyy HH:mm")`n" write-host "$($chore.name) $dueDate is due in the future"
}
Send-Notification -title "TODAY'S TASKS" -content $content
}
Write-Host "Finding next notification time..."
Write-Host "Current time: $(Get-Date)"
$nextNotificationTomorrow = $true
foreach($time in $notificationTimes)
{
$now = Get-Date
$diff = $now.Hour - $time
if ($diff -lt 0) # next notification time
{
$nextNotificationTomorrow = $false
Write-Host "Next notification time is $time`:00"
$sleepTime = ($diff * -1) * 60 * 60 # hours * mins * seconds
Write-Host "Sleeping for $sleepTime seconds"
Start-Sleep -Seconds $sleepTime
continue # leave loop
} }
} }
if ($nextNotificationTomorrow)
{ }
$time = $notificationTimes[0]
Write-Host "Next notification time is $time`:00" if ($overdueTasks.Count -ne 0)
$diff = 24 - $now.Hour + $time {
$sleepTime = $diff * 60 * 60 # hours * mins * seconds Write-Host "Sending a notification for $($overdueTasks.Count) overdue tasks"
Write-Host "Sleeping for $sleepTime seconds" $content = "The following tasks are overdue!`n"
Start-Sleep -Seconds $sleepTime foreach($overdueTask in $overdueTasks)
} {
$content += "$($overdueTask.Name) was due $((Get-Date $overdueTask.nextDueDate -Format "MM/dd/yyyy HH:mm").ToLocalTime())`n"
}
Send-Notification -title "OVERDUE TASKS" -content $content
}
if ($todaysTasks.Count -ne 0)
{
Write-Host "Sending a notification for $($todaysTasks.Count) tasks due today"
$content = "The following tasks are due today!`n"
foreach($task in $todaysTasks)
{
$content += "$($task.Name) is due $((Get-Date $task.nextDueDate -Format "MM/dd/yyyy HH:mm").ToLocalTime())`n"
}
Send-Notification -title "TODAY'S TASKS" -content $content
} }
+1 -2
View File
@@ -12,6 +12,5 @@ services:
- DONETICKAPIKEY=adminpass # donetick API key - DONETICKAPIKEY=adminpass # donetick API key
- APPRISEWEBHOOKURL=https://apprisehost/notify/config # apprise notification url - APPRISEWEBHOOKURL=https://apprisehost/notify/config # apprise notification url
- APPRISEWEBHOOKTAG=all # apprise notification tag - APPRISEWEBHOOKTAG=all # apprise notification tag
- NOTIFICATIONTIMES=8,12,17 # hours when notifications will be sent
- TZ=America/Chicago # set timezone from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List - TZ=America/Chicago # set timezone from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
- JOB_SCHEDULE=0 * * * * - JOB_SCHEDULE=0 8,17 * * * # when to notify about overdue tasks or tasks due today