package endpoints import ( "arbeitszeitmessung/helper/paramParser" "arbeitszeitmessung/models" "log/slog" "net/http" "time" "github.com/wlbr/feiertage" ) func FeiertagsHandler(w http.ResponseWriter, r *http.Request) { pp := paramParser.New(r.URL.Query()) slog.Debug("Generating Holidays") from := pp.ParseTimestampFallback("from", "2006", time.Now().AddDate(-1, 0, -time.Now().YearDay())) to := pp.ParseTimestampFallback("to", "2006", time.Now().AddDate(0, 0, -time.Now().YearDay()+1)) var publicHolidays map[string]models.PublicHoliday = make(map[string]models.PublicHoliday) yearDelta := to.Year() - from.Year() var holidays = feiertage.Sachsen(to.Year(), true) for _, f := range holidays.Feiertage { publicHolidays[f.Time.Format(time.DateOnly)] = models.NewHolidayFromFeiertag(f) } repeatingHolidays, err := models.GetRepeatingHolidays(from, to.AddDate(0, 0, -1)) if err != nil { slog.Warn("Error getting holidays", slog.Any("Error", err)) } slog.Debug("Found repeating Holidays", "num", len(repeatingHolidays), "from", from, "to", to, "yeardelta", yearDelta) for _, day := range repeatingHolidays { day.Time = day.Time.AddDate(yearDelta, 0, 0) publicHolidays[day.Date().Format(time.DateOnly)] = day } slog.Debug("Added repeating holidays", "num", len(holidays.Feiertage)) for _, feiertag := range publicHolidays { slog.Debug("Found holiday", "holiday", feiertag) if err := feiertag.Insert(); err != nil { slog.Warn("Error inserting Feiertag", slog.Any("Error", err)) } } }