From 475d79f16ef28582f2a15d5d44c01dd164e00ced Mon Sep 17 00:00:00 2001 From: bronku Date: Fri, 7 Feb 2025 09:27:20 +0100 Subject: [PATCH] full form parsing --- handler.go | 33 +++++++++++++++++++++++++++------ index.html | 34 +++++++++++++++++++++++++++++----- main.go | 13 ++++++++----- middleware.go | 6 +++--- model.go | 1 + 5 files changed, 68 insertions(+), 19 deletions(-) diff --git a/handler.go b/handler.go index 2e9790e..60660cc 100644 --- a/handler.go +++ b/handler.go @@ -57,28 +57,49 @@ func (h *handler) addOrder(w http.ResponseWriter, r *http.Request) { fmt.Println("can't parse order id: ", err) return } - n.Name = r.FormValue("name") - n.Surname = r.FormValue("surname") - n.Phone = r.FormValue("phone") - n.Location = r.FormValue("location") + + n.Name = strings.TrimSpace(r.FormValue("name")) + + n.Surname = strings.TrimSpace(r.FormValue("surname")) + + n.Phone = strings.TrimSpace(r.FormValue("phone")) + + n.Location = strings.TrimSpace(r.FormValue("location")) + n.Date, err = time.Parse("2006-01-02", r.FormValue("date")) if err != nil { w.WriteHeader(http.StatusBadRequest) fmt.Println("can't parse order date: ", err) return } + n.Paid, err = strconv.Atoi(r.FormValue("paid")) if err != nil { w.WriteHeader(http.StatusBadRequest) fmt.Println("can't parse order paid: ", err) return } - n.Cakes = make([]cake, 0) - h.s.saveOrder(n) + n.Accepted = time.Now() + + n.Cakes = make([]cake, 0) + for _, e := range h.s.getCakes() { + value := r.FormValue(fmt.Sprintf("cake[%d]", e.ID)) + if value == "" { + continue + } + amount, err := strconv.Atoi(value) + e.Amount = amount + if err != nil { + continue + } + n.Cakes = append(n.Cakes, e) + } fmt.Println("parsed order: ", n) + h.s.saveOrder(n) + w.Header().Set("content-type", "text/html") w.WriteHeader(http.StatusAccepted) w.Write([]byte("accepted back")) diff --git a/index.html b/index.html index 82634b4..d47cabb 100644 --- a/index.html +++ b/index.html @@ -5,11 +5,35 @@ New
-
\ No newline at end of file diff --git a/main.go b/main.go index 2d30540..3aebaf2 100644 --- a/main.go +++ b/main.go @@ -18,12 +18,15 @@ func main() { h.tmpl = templates h.s = NewStore() - h.s.saveCake(cake{"Sernik", -1, 120, 0}) - h.s.saveCake(cake{"Malinowa chmurka", -1, 120, 0}) + h.s.saveCake(cake{"Sernik ulubiony", -1, 65, 0}) + h.s.saveCake(cake{"Malinowa chmurka", -1, 150, 0}) + h.s.saveCake(cake{"Mako sernik", -1, 150, 0}) + h.s.saveCake(cake{"Rolada makowa", -1, 80, 0}) + h.s.saveCake(cake{"Wieniec bezowy", -1, 120, 0}) - h.s.saveOrder(order{-1, "Albert", "Camus", "123456789", "Kartuzy", time.Now().AddDate(0, 0, 7), 0, nil}) - h.s.saveOrder(order{-1, "George", "Orwell", "", "Kartuzy", time.Now().AddDate(0, 1, 0), 0, nil}) - h.s.saveOrder(order{-1, "Karl", "Marx", "0700", "Somonino", time.Now(), 0, nil}) + h.s.saveOrder(order{-1, "Albert", "Camus", "123456789", "Kartuzy", time.Now().AddDate(0, 0, 7), time.Now(), 0, nil}) + h.s.saveOrder(order{-1, "George", "Orwell", "", "Kartuzy", time.Now().AddDate(0, 1, 0), time.Now(), 0, nil}) + h.s.saveOrder(order{-1, "Karl", "Marx", "0700", "Somonino", time.Now(), time.Now(), 0, nil}) http.HandleFunc("GET /order/", logger(h.form)) http.HandleFunc("GET /", logger(h.index)) diff --git a/middleware.go b/middleware.go index 0fcd6cf..97c16bc 100644 --- a/middleware.go +++ b/middleware.go @@ -9,9 +9,9 @@ import ( func logger(in http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { start := time.Now() - log := fmt.Sprint(r.Method, " ", r.URL.String()) + //log := fmt.Sprint(r.Method, " ", r.URL.String()) + fmt.Println(r.Method, r.URL.String()) in(w, r) - log += fmt.Sprint(" ", time.Since(start)) - fmt.Println(log) + fmt.Println(r.Method, "finished in", time.Since(start)) } } diff --git a/model.go b/model.go index 58cc687..92d911c 100644 --- a/model.go +++ b/model.go @@ -16,6 +16,7 @@ type order struct { Phone string Location string Date time.Time + Accepted time.Time Paid int // increments of 0.01 Cakes []cake }