added feiertage to database + endpoint to insert every year
This commit is contained in:
@@ -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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user