Files
bot-pontos/backend/internal/domain/day.go
2026-10-23 22:31:02 -03:00

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
}