fix: count work hours in summary even on day-off days
buildMonthlySummary now includes hours for days marked as day-off, matching buildStatusText behavior. Shows "Xh worked (Day Off)" when a day-off day has events.
This commit is contained in:
@@ -63,25 +63,39 @@ func (h *Handler) buildMonthlySummary(user *db.User, calY, calM int, startStr, e
|
|||||||
dayDetails := []string{}
|
dayDetails := []string{}
|
||||||
|
|
||||||
for _, day := range days {
|
for _, day := range days {
|
||||||
|
dayLabel := formatDateForCalendar(day.Date, user.Calendar)
|
||||||
|
|
||||||
|
if day.IsDayOff {
|
||||||
|
dayOffCount++
|
||||||
|
}
|
||||||
|
|
||||||
events, err := h.DB.EventsForDayByDayID(day.ID)
|
events, err := h.DB.EventsForDayByDayID(day.ID)
|
||||||
if err != nil || len(events) == 0 {
|
if err != nil || len(events) == 0 {
|
||||||
|
if day.IsDayOff {
|
||||||
|
dayDetails = append(dayDetails, fmt.Sprintf(" %s - Day Off", dayLabel))
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
y, m, d := parseGregorianDateKey(day.Date)
|
y, m, d := parseGregorianDateKey(day.Date)
|
||||||
dayStart := time.Date(y, time.Month(m), d, 0, 0, 0, 0, loc).Unix()
|
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()
|
dayEnd := time.Date(y, time.Month(m), d, 23, 59, 59, 0, loc).Unix()
|
||||||
totals := ComputeDailyTotals(events, day.MinBreakThreshold, dayStart, dayEnd)
|
totals := ComputeDailyTotals(events, day.MinBreakThreshold, dayStart, dayEnd)
|
||||||
|
if totals.TotalSeconds == 0 {
|
||||||
dayLabel := formatDateForCalendar(day.Date, user.Calendar)
|
|
||||||
if day.IsDayOff {
|
if day.IsDayOff {
|
||||||
dayOffCount++
|
|
||||||
dayDetails = append(dayDetails, fmt.Sprintf(" %s - Day Off", dayLabel))
|
dayDetails = append(dayDetails, fmt.Sprintf(" %s - Day Off", dayLabel))
|
||||||
} else if totals.TotalSeconds > 0 {
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
workDayCount++
|
workDayCount++
|
||||||
totalWork += totals.TotalSeconds
|
totalWork += totals.TotalSeconds
|
||||||
totalBreak += totals.BreakSeconds
|
totalBreak += totals.BreakSeconds
|
||||||
dayDetails = append(dayDetails, fmt.Sprintf(" %s - %s worked", dayLabel, formatDuration(totals.TotalSeconds)))
|
label := fmt.Sprintf(" %s - %s worked", dayLabel, formatDuration(totals.TotalSeconds))
|
||||||
|
if day.IsDayOff {
|
||||||
|
label += " (Day Off)"
|
||||||
}
|
}
|
||||||
|
dayDetails = append(dayDetails, label)
|
||||||
}
|
}
|
||||||
|
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
|
|||||||
Reference in New Issue
Block a user