feat: add validation for relative reminders
continuous-integration/drone/pr Build is passing Details

This commit is contained in:
cernst 2023-03-26 19:31:45 +02:00
parent 06548195ce
commit a3cb694323
2 changed files with 4 additions and 6 deletions

View File

@ -90,6 +90,7 @@ This document describes the different errors Vikunja can return.
| 4019 | 400 | Invalid task filter value. |
| 4020 | 400 | The provided attachment does not belong to that task. |
| 4021 | 400 | This user is already assigned to that task. |
| 4022 | 400 | The task has a relative reminder which does not specify relative to what. |
## Namespace

View File

@ -1513,24 +1513,21 @@ func (t *Task) overwriteRemindersWithReminderDates(reminderDates []time.Time) {
func updateRelativeReminderDates(task *Task) (err error) {
for _, reminder := range task.Reminders {
relativeDuration := time.Duration(reminder.RelativePeriod) * time.Second
if reminder.RelativeTo != "" {
reminder.Reminder = time.Time{}
}
switch reminder.RelativeTo {
case ReminderRelationDueDate:
if !task.DueDate.IsZero() {
reminder.Reminder = task.DueDate.Add(relativeDuration)
} else {
reminder.Reminder = time.Time{}
}
case ReminderRelationStartDate:
if !task.StartDate.IsZero() {
reminder.Reminder = task.StartDate.Add(relativeDuration)
} else {
reminder.Reminder = time.Time{}
}
case ReminderRelationEndDate:
if !task.EndDate.IsZero() {
reminder.Reminder = task.EndDate.Add(relativeDuration)
} else {
reminder.Reminder = time.Time{}
}
default:
if reminder.RelativePeriod != 0 {