added feiertage to database + endpoint to insert every year

This commit is contained in:
2025-12-23 12:21:03 +01:00
parent f562ef2a33
commit 3439fff841
11 changed files with 245 additions and 88 deletions

View File

@@ -1,6 +1,8 @@
package endpoints
import (
"arbeitszeitmessung/helper/paramParser"
"arbeitszeitmessung/models"
"log/slog"
"net/http"
"time"
@@ -9,6 +11,33 @@ import (
)
func FeiertagsHandler(w http.ResponseWriter, r *http.Request) {
feiertage := feiertage.Sachsen(time.Now().Year(), true)
slog.Info("Hier sind die Feiertage", "Feiertage", feiertage)
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))
}
}
}