| 85 | } |
| 86 | |
| 87 | func applyStatusTransitionDates(req *taskfile.UpdateRequest, task *model.Task) { |
| 88 | if req.Status == nil { |
| 89 | return |
| 90 | } |
| 91 | today := time.Now().Format("2006-01-02") |
| 92 | newStatus := model.Status(*req.Status) |
| 93 | wasTerminal := task.Status.IsResolved() |
| 94 | switch { |
| 95 | case newStatus == model.StatusCompleted: |
| 96 | req.Completed = &today |
| 97 | req.RemoveFields = append(req.RemoveFields, "cancelled_at") |
| 98 | case newStatus == model.StatusCancelled: |
| 99 | req.CancelledAt = &today |
| 100 | req.RemoveFields = append(req.RemoveFields, "completed_at") |
| 101 | case wasTerminal: |
| 102 | req.RemoveFields = append(req.RemoveFields, "completed_at", "cancelled_at") |
| 103 | } |
| 104 | } |
| 105 | |
| 106 | func buildUpdateRequest(input SetInput) taskfile.UpdateRequest { |
| 107 | var req taskfile.UpdateRequest |