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 }