build uppon paramParser

This commit is contained in:
2025-10-28 22:59:09 +01:00
parent a634b7a69e
commit 4bc5594dc5
4 changed files with 101 additions and 54 deletions

View File

@@ -2,13 +2,13 @@ package endpoints
import (
"arbeitszeitmessung/helper"
"arbeitszeitmessung/helper/paramParser"
"arbeitszeitmessung/models"
"arbeitszeitmessung/templates"
"context"
"errors"
"log"
"net/http"
"strconv"
"time"
)
@@ -30,17 +30,17 @@ func submitReport(w http.ResponseWriter, r *http.Request) {
log.Println("Error parsing form", err)
return
}
userPN, _ := strconv.Atoi(r.FormValue("user"))
_weekTs := r.FormValue("week")
weekTs, err := time.Parse(time.DateOnly, _weekTs)
pp := paramParser.New(r.Form)
userPN, err := pp.ParseInt("user")
weekTs := pp.ParseTimestampFallback("week", time.DateOnly, time.Now())
user, err := models.GetUserByPersonalNr(userPN)
workWeek := models.NewWorkWeek(user, weekTs, true)
if err != nil {
log.Println("Could not get user!")
return
}
workWeek := models.NewWorkWeek(user, weekTs, true)
switch r.FormValue("method") {
case "send":
err = workWeek.SendWeek()
@@ -62,14 +62,11 @@ func showWeeks(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/user/login", http.StatusSeeOther)
return
}
submissionDate := r.URL.Query().Get("submission_date")
lastSub := user.GetLastWorkWeekSubmission()
if submissionDate != "" {
submissionDate, err := time.Parse(time.DateOnly, submissionDate)
if err == nil {
lastSub = helper.GetMonday(submissionDate)
}
}
pp := paramParser.New(r.URL.Query())
submissionDate := pp.ParseTimestampFallback("submission_date", time.DateOnly, user.GetLastWorkWeekSubmission())
lastSub := helper.GetMonday(submissionDate)
userWeek := models.NewWorkWeek(user, lastSub, true)
var workWeeks []models.WorkWeek

View File

@@ -2,14 +2,15 @@ package endpoints
import (
"arbeitszeitmessung/helper"
"arbeitszeitmessung/helper/paramParser"
"arbeitszeitmessung/models"
"arbeitszeitmessung/templates"
"context"
"database/sql"
"encoding/json"
"log"
"log/slog"
"net/http"
"sort"
"strconv"
"time"
)
@@ -67,26 +68,15 @@ func getBookings(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/user/login", http.StatusSeeOther)
return
}
pp := paramParser.New(r.URL.Query())
// TODO add config for timeoffset
tsFrom, err := parseTimestamp(r, "time_from", time.Now().AddDate(0, -1, 0).Format(time.DateOnly))
if err != nil {
log.Println("Error parsing 'from' time", err)
http.Error(w, "Timestamp 'from' cannot be parsed!", http.StatusBadRequest)
return
}
tsTo, err := parseTimestamp(r, "time_to", time.Now().Format(time.DateOnly))
if err != nil {
log.Println("Error parsing 'to' time", err)
http.Error(w, "Timestamp 'to' cannot be parsed!", http.StatusBadRequest)
return
}
tsFrom := pp.ParseTimestampFallback("time_from", time.DateOnly, time.Now().AddDate(0, -1, 0))
tsTo := pp.ParseTimestampFallback("time_to", time.DateOnly, time.Now())
tsTo = tsTo.AddDate(0, 0, 1) // so that today is inside
days := models.GetDays(user, tsFrom, tsTo, true)
sort.Slice(days, func(i, j int) bool {
return days[i].Date().After(days[j].Date())
})
lastSub := user.GetLastWorkWeekSubmission()
var aggregatedOvertime time.Duration
@@ -116,6 +106,7 @@ func getBookings(w http.ResponseWriter, r *http.Request) {
func updateBooking(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
pp := paramParser.New(r.Form)
var loc *time.Location
loc, err := time.LoadLocation(helper.GetEnv("TZ", "Europe/Berlin"))
if err != nil {
@@ -136,10 +127,9 @@ func updateBooking(w http.ResponseWriter, r *http.Request) {
return
}
var check_in_out int
check_in_out, err = strconv.Atoi(r.FormValue("check_in_out"))
check_in_out, err := pp.ParseInt("check_in_out")
if err != nil {
log.Println("Error parsing check_in_out", err)
slog.Warn("Error parsing check_in_out")
return
}