42 lines
670 B
Go
42 lines
670 B
Go
package appointment
|
|
|
|
import (
|
|
"brainbuffer/pkg/brainbuffer/domain/scheduling"
|
|
"time"
|
|
)
|
|
|
|
type CompletionStatus int
|
|
|
|
const (
|
|
None CompletionStatus = iota
|
|
Missed
|
|
Completed
|
|
Skipped
|
|
)
|
|
|
|
type TimeStatus int
|
|
|
|
const (
|
|
Overdue TimeStatus = iota
|
|
Upcoming
|
|
)
|
|
|
|
type Appointment struct {
|
|
ID int64
|
|
TaskID int64
|
|
CompletionStatus CompletionStatus
|
|
SchedulingPattern scheduling.Pattern
|
|
PlannedTime time.Time
|
|
DurationOffset time.Duration
|
|
CreationTime time.Time
|
|
}
|
|
|
|
func (a *Appointment) TimeStatus() TimeStatus {
|
|
if a.PlannedTime.Before(time.Now()) {
|
|
return Overdue
|
|
} else {
|
|
return Upcoming
|
|
}
|
|
}
|
|
|
|
type Appointments []*Appointment
|