From fe703a9b1cbfb3344c9654af79b5a830b014ec0c Mon Sep 17 00:00:00 2001 From: bronku Date: Fri, 28 Mar 2025 23:26:46 +0100 Subject: [PATCH] Add order total calculation and update template display --- internal/models/data.go | 8 ++++++++ internal/server/get.go | 2 +- internal/server/http.go | 9 +++++++++ internal/server/server.go | 3 ++- internal/server/templates/index.html | 4 ++-- 5 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 internal/server/http.go diff --git a/internal/models/data.go b/internal/models/data.go index 73968f7..9b400c7 100644 --- a/internal/models/data.go +++ b/internal/models/data.go @@ -23,3 +23,11 @@ type Order struct { Paid int // increments of 0.01 Cakes []Cake } + +func (o *Order) Total() int { + out := o.Paid * (-1) + for _, e := range o.Cakes { + out += e.Price * e.Amount + } + return out +} diff --git a/internal/server/get.go b/internal/server/get.go index f4d82b7..0f27bea 100644 --- a/internal/server/get.go +++ b/internal/server/get.go @@ -8,7 +8,7 @@ import ( "github.com/Bronku/iroon/internal/models" ) -func (h *Server) index(r *http.Request) (any, int, error) { +func (h *Server) orders(r *http.Request) (any, int, error) { data, err := h.s.GetOrders() return data, http.StatusOK, err } diff --git a/internal/server/http.go b/internal/server/http.go new file mode 100644 index 0000000..365d675 --- /dev/null +++ b/internal/server/http.go @@ -0,0 +1,9 @@ +package server + +import "net/http" + +func (s *Server) redirect(path string, code int) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + http.Redirect(w, r, path, code) + } +} diff --git a/internal/server/server.go b/internal/server/server.go index ae3a1e3..5b26fde 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -20,7 +20,8 @@ func (h *Server) loadHandler() { mux := http.NewServeMux() mux.HandleFunc("GET /order/", h.render(h.order, "order.html")) - mux.HandleFunc("GET /", h.render(h.index, "index.html")) + mux.HandleFunc("GET /", h.redirect("/orders", http.StatusSeeOther)) + mux.HandleFunc("GET /orders", h.render(h.orders, "index.html")) mux.HandleFunc("POST /order/", h.render(h.postOrder, "confirmation.html")) mux.HandleFunc("GET /cakes", h.render(h.cakes, "cakes.html")) mux.HandleFunc("GET /cake/", h.render(h.cake, "cake.html")) diff --git a/internal/server/templates/index.html b/internal/server/templates/index.html index 42e434c..d67173e 100644 --- a/internal/server/templates/index.html +++ b/internal/server/templates/index.html @@ -16,7 +16,7 @@ Date Accepted Status - Paid + Total {{range .}} @@ -28,7 +28,7 @@ {{.Date.Format "2006-01-02"}} {{.Accepted.Format "2006-01-02"}} {{.Status}} - {{.Paid}} + {{.Total}} {{end}}