refactor: remove dead code, DRY calendar navigation and helpers

- Fix Jalali calendar weekday offset in buildCalendarMonth
- Remove unused gregorianDateKey function and PairCount field
- Replace inline export month title with formatMonthTitle
- Extract navMonth helper for prev/next month navigation
- Extract sendOrEdit helper for send-vs-edit message pattern
- Extract monthGregorianRange helper to simplify editCalendar 3-way switch
- Replace export displayDate conversion with formatDateForCalendar
This commit is contained in:
2026-06-24 10:54:06 +03:30
parent 67eae5ffa3
commit 577aee91fb
4 changed files with 203 additions and 129 deletions

View File

@@ -76,17 +76,16 @@ func GenerateMonthlyReport(store *db.Store, userID int64, timezone, accent, cale
Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center"},
})
var monthName string
var jy, jm int
switch calendar {
case "jalali":
jy, jm, _ := gregorianToJalali(year, int(month), 1)
monthName = fmt.Sprintf("%s %d", jalaliMonthNames[jm-1], jy)
jy, jm, _ = gregorianToJalali(year, int(month), 1)
case "hijri":
hy, hm, _ := gregorianToHijri(year, int(month), 1)
monthName = fmt.Sprintf("%s %d", hijriMonthNames[hm-1], hy)
jy, jm, _ = gregorianToHijri(year, int(month), 1)
default:
monthName = time.Date(year, month, 1, 0, 0, 0, 0, time.UTC).Format("January 2006")
jy, jm = year, int(month)
}
monthName := formatMonthTitle(calendar, jy, jm)
f.SetCellValue(sheet, "A1", fmt.Sprintf("Work Time Report - %s", monthName))
f.MergeCell(sheet, "A1", "F1")
f.SetCellStyle(sheet, "A1", "F1", titleStyle)
@@ -130,16 +129,7 @@ func GenerateMonthlyReport(store *db.Store, userID int64, timezone, accent, cale
for d := firstDay; !d.After(lastDay); d = d.AddDate(0, 0, 1) {
dateStr := d.Format("2006-01-02")
displayDate := dateStr
if calendar == "jalali" {
gy, gm, gd := parseGregorianDateKey(dateStr)
jy, jm, jd := gregorianToJalali(gy, gm, gd)
displayDate = fmt.Sprintf("%04d-%02d-%02d", jy, jm, jd)
} else if calendar == "hijri" {
gy, gm, gd := parseGregorianDateKey(dateStr)
hy, hm, hd := gregorianToHijri(gy, gm, gd)
displayDate = fmt.Sprintf("%04d-%02d-%02d", hy, hm, hd)
}
displayDate := formatDateForCalendar(dateStr, calendar)
day, exists := dayMap[dateStr]
if !exists {