diff --git a/internal/bot/summary.go b/internal/bot/summary.go index 3330669..3f440e7 100644 --- a/internal/bot/summary.go +++ b/internal/bot/summary.go @@ -63,25 +63,39 @@ func (h *Handler) buildMonthlySummary(user *db.User, calY, calM int, startStr, e dayDetails := []string{} for _, day := range days { + dayLabel := formatDateForCalendar(day.Date, user.Calendar) + + if day.IsDayOff { + dayOffCount++ + } + events, err := h.DB.EventsForDayByDayID(day.ID) if err != nil || len(events) == 0 { + if day.IsDayOff { + dayDetails = append(dayDetails, fmt.Sprintf(" %s - Day Off", dayLabel)) + } continue } + y, m, d := parseGregorianDateKey(day.Date) dayStart := time.Date(y, time.Month(m), d, 0, 0, 0, 0, loc).Unix() dayEnd := time.Date(y, time.Month(m), d, 23, 59, 59, 0, loc).Unix() totals := ComputeDailyTotals(events, day.MinBreakThreshold, dayStart, dayEnd) - - dayLabel := formatDateForCalendar(day.Date, user.Calendar) - if day.IsDayOff { - dayOffCount++ - dayDetails = append(dayDetails, fmt.Sprintf(" %s - Day Off", dayLabel)) - } else if totals.TotalSeconds > 0 { - workDayCount++ - totalWork += totals.TotalSeconds - totalBreak += totals.BreakSeconds - dayDetails = append(dayDetails, fmt.Sprintf(" %s - %s worked", dayLabel, formatDuration(totals.TotalSeconds))) + if totals.TotalSeconds == 0 { + if day.IsDayOff { + dayDetails = append(dayDetails, fmt.Sprintf(" %s - Day Off", dayLabel)) + } + continue } + + workDayCount++ + totalWork += totals.TotalSeconds + totalBreak += totals.BreakSeconds + label := fmt.Sprintf(" %s - %s worked", dayLabel, formatDuration(totals.TotalSeconds)) + if day.IsDayOff { + label += " (Day Off)" + } + dayDetails = append(dayDetails, label) } var b strings.Builder