Files
donetick-notifier/Start-DoneTickNotifier.ps1
T
2026-05-06 22:50:23 -05:00

76 lines
2.0 KiB
PowerShell

[string] $dtHost = $ENV:DONETICKHOST
[string] $dtPort = $ENV:DONETICKPORT
[string] $dtAPIKey = $ENV:DONETICKAPIKEY
[string] $appriseWebhookURL = $ENV:APPRISEWEBHOOKURL
[string] $appriseWebhookTag = $ENV:APPRISEWEBHOOKTAG
function Send-Notification
{
param(
# Title of the notification
[Parameter(Mandatory=$true)]
[string]
$title,
# Content of the notification
[Parameter(Mandatory=$true)]
[string]
$content
)
$headers = @{
"Content-Type"="application/json"
}
$body = @{
title=$title
body=$content
tags="$appriseWebhookTag"
}
$json = $body | ConvertTo-Json
try {
Invoke-WebRequest -URI $appriseWebhookURL -Method post -Body $json -Headers $headers
}
catch {
Write-Host "Notification Error Encountered: $($global:Error[0])"
}
}
function Get-Chores
{
try {
$headers = @{
secretkey = $dtAPIKey
}
$results = Invoke-WebRequest -Uri "https://$dtHost`:$dtPort/eapi/v1/chore" -Method Get -Headers $headers
return ($results.Content | ConvertFrom-Json)
}
catch {
Write-Error "Error fetching chores: $($global:Error[0])"
}
}
$today = (Get-Date "23:59:59")
$chores = Get-Chores
foreach($chore in $chores)
{
if ($chore.nextDueDate)
{
$dueDate = Get-Date $chore.nextDueDate
if (($dueDate - $today).Days -lt 0) #OVERDUE
{
write-host "$($chore.name) $dueDate is overdue!"
Send-Notification -title "OVERDUE TASK" -content "$($chore.Name) is overdue! Due date is $($chore.nextDueDate)"
}
elseif (($dueDate - $today) -lt 1) #due today
{
write-host "$($chore.name) $dueDate is due today!"
Send-Notification -title "TASK DUE TODAY" -content "$($chore.Name) is due today!"
}
else
{
write-host "$($chore.name) $dueDate is due in the future"
}
}
}