diff --git a/server/post.go b/server/post.go
index b75f279..0000392 100644
--- a/server/post.go
+++ b/server/post.go
@@ -10,73 +10,47 @@ import (
"github.com/Bronku/iroon/store"
)
-func (h *Server) postOrder(w http.ResponseWriter, r *http.Request) {
- err := r.ParseForm()
+func (h *Server) postOrder(r *http.Request) (any, int, error) {
+ cakes, err := h.s.GetCakes()
if err != nil {
- fmt.Println("can't parse the form")
- w.WriteHeader(http.StatusBadRequest)
- return
+ return nil, http.StatusInternalServerError, err
+ }
+
+ err = r.ParseForm()
+ if err != nil {
+ return nil, http.StatusBadRequest, err
}
- fmt.Println("received form: ", r.Form)
var n store.Order
n.ID, err = strconv.Atoi(r.FormValue("id"))
if err != nil {
- w.WriteHeader(http.StatusBadRequest)
- fmt.Println("can't parse order id: ", err)
- return
+ return nil, http.StatusBadRequest, err
}
-
- 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.Status = strings.TrimSpace(r.FormValue("status"))
-
n.Paid, err = strconv.Atoi(r.FormValue("paid"))
if err != nil {
- w.WriteHeader(http.StatusBadRequest)
- fmt.Println("can't parse order paid: ", err)
- return
+ return nil, http.StatusBadRequest, err
+ }
+ n.Date, err = time.Parse("2006-01-02", r.FormValue("date"))
+ if err != nil {
+ return nil, http.StatusBadRequest, err
}
-
- n.Accepted = time.Now()
n.Cakes = make([]store.Cake, 0)
- cakes, err := h.s.GetCakes()
- if err != nil {
- fmt.Fprint(w, "server side error getting available cakes: ", err)
- return
- }
for _, e := range cakes {
- value := r.FormValue(fmt.Sprintf("cake[%d]", e.ID))
- if value == "" {
- continue
- }
- amount, err := strconv.Atoi(value)
- e.Amount = amount
+ e.Amount, err = strconv.Atoi(r.FormValue(fmt.Sprintf("cake[%d]", e.ID)))
if err != nil {
continue
}
n.Cakes = append(n.Cakes, e)
}
- fmt.Println("parsed order: ", n)
+ n.Accepted = time.Now()
+ 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.Status = strings.TrimSpace(r.FormValue("status"))
- h.s.SaveOrder(n)
-
- w.Header().Set("content-type", "text/html")
- w.WriteHeader(http.StatusAccepted)
- w.Write([]byte("accepted back"))
+ n.ID, err = h.s.SaveOrder(n)
+ return n, http.StatusAccepted, err
}
diff --git a/server/server.go b/server/server.go
index dc1a5ed..fa3a318 100644
--- a/server/server.go
+++ b/server/server.go
@@ -33,7 +33,7 @@ func (h *Server) loadHandler() {
mux.HandleFunc("GET /order/", h.render(h.getOrder, "order.html"))
mux.HandleFunc("GET /", h.render(h.index, "index.html"))
- mux.HandleFunc("POST /order/", h.postOrder)
+ mux.HandleFunc("POST /order/", h.render(h.postOrder, "confirmation.html"))
h.Handler = mux
}
diff --git a/server/templates/confirmation.html b/server/templates/confirmation.html
new file mode 100644
index 0000000..18232b2
--- /dev/null
+++ b/server/templates/confirmation.html
@@ -0,0 +1,9 @@
+
+
+
+ Order {{.ID}} for {{.Name}} {{.Surname}} confirmed
+
diff --git a/server/templates/order.html b/server/templates/order.html
index b41cacf..4c63bd2 100644
--- a/server/templates/order.html
+++ b/server/templates/order.html
@@ -18,15 +18,15 @@
-