45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package domain
|
|
|
|
import "time"
|
|
|
|
// DayStatus é a situação de um usuário num dia (ARQUITETURA.md 9.12).
|
|
type DayStatus string
|
|
|
|
const (
|
|
DayAwaiting DayStatus = "awaiting"
|
|
DayNoPoints DayStatus = "no_points"
|
|
DayWorking DayStatus = "working"
|
|
DayNotWorking DayStatus = "not_working"
|
|
DayFinished DayStatus = "finished"
|
|
)
|
|
|
|
type ResumeSource string
|
|
|
|
const (
|
|
ResumeAtivarPonto ResumeSource = "ativarponto"
|
|
ResumeEntrada2 ResumeSource = "entrada2"
|
|
ResumeSaida2 ResumeSource = "saida2"
|
|
ResumeWeb ResumeSource = "web"
|
|
)
|
|
|
|
type UserDay struct {
|
|
UserID int64
|
|
Day string
|
|
Status DayStatus
|
|
ZeroPointChecks int
|
|
LastPointCount int
|
|
NextCheckAt *time.Time
|
|
ResumedBy *ResumeSource
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
// NewUserDay é a situação inicial de um dia ainda não consultado.
|
|
func NewUserDay(userID int64, day string) UserDay {
|
|
return UserDay{UserID: userID, Day: day, Status: DayAwaiting}
|
|
}
|
|
|
|
// IsClosedWithoutPoints indica um dia sem pontos (em reverificação ou encerrado).
|
|
func (d UserDay) IsClosedWithoutPoints() bool {
|
|
return d.Status == DayNoPoints || d.Status == DayNotWorking
|
|
}
|