From c2db0278904882220a1014f415088f8a0280ae65 Mon Sep 17 00:00:00 2001 From: nic Date: Fri, 3 Jan 2025 20:45:03 -0500 Subject: [PATCH] chore: basic convertDatesToUnix function added; needs work to not re-write every possible date param --- internal/handlers/web/jobs.go | 40 ++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/internal/handlers/web/jobs.go b/internal/handlers/web/jobs.go index 6003a5d..d00996c 100644 --- a/internal/handlers/web/jobs.go +++ b/internal/handlers/web/jobs.go @@ -7,6 +7,7 @@ import ( "marmic/servicetrade-toolbox/internal/api" "net/http" "net/url" + "time" ) func JobsHandler(w http.ResponseWriter, r *http.Request) { @@ -59,20 +60,43 @@ func JobsHandler(w http.ResponseWriter, r *http.Request) { http.Error(w, "Not Found", http.StatusNotFound) } } - -func handleJobSearch(r *http.Request, session *api.Session) ([]api.Job, error) { - queryParams := r.URL.Query() +func convertDatesToUnix(params url.Values) url.Values { cleanedParams := url.Values{} - log.Printf("Searching jobs with filters: %v", queryParams) - for key, values := range queryParams { - for _, value := range values { - if value != "" { - cleanedParams.Add(key, value) + const layout = "2006-01-02" + + if beginDate := params.Get("dueByBegin"); beginDate != "" { + if t, err := time.Parse(layout, beginDate); err == nil { + cleanedParams.Add("dueByBegin", fmt.Sprintf("%d", t.Unix())) + } else { + fmt.Printf("Error parsing dueByBegin: %v\n", err) + } + } + + if endDate := params.Get("dueByEnd"); endDate != "" { + if t, err := time.Parse(layout, endDate); err == nil { + cleanedParams.Add("dueByEnd", fmt.Sprintf("%d", t.Unix())) + } else { + fmt.Printf("Error parsing dueByEnd: %v\n", err) + } + } + + for key, values := range params { + if key != "dueByBegin" && key != "dueByEnd" { + for _, value := range values { + if value != "" { + cleanedParams.Add(key, value) + } } } } + return cleanedParams +} +func handleJobSearch(r *http.Request, session *api.Session) ([]api.Job, error) { + queryParams := r.URL.Query() + cleanedParams := convertDatesToUnix(queryParams) + jobs, err := session.SearchJobs(cleanedParams) if err != nil { return nil, fmt.Errorf("error fetching jobs: %w", err)