From b14deeb24fe471c5869ccac5cfb0c7d47822f390 Mon Sep 17 00:00:00 2001 From: kalipso Date: Fri, 11 Apr 2025 14:17:22 +0200 Subject: [PATCH] add order/:token/print --- controllers/printController.go | 28 ++++++++++++++++++++++++++++ main.go | 3 ++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/controllers/printController.go b/controllers/printController.go index e8fa36f..8e6e62d 100644 --- a/controllers/printController.go +++ b/controllers/printController.go @@ -13,6 +13,7 @@ import ( type PrintController interface { PrintVariantView(*gin.Context) PrintCartView(*gin.Context) + PrintOrderView(*gin.Context) PrintHandler(*gin.Context) } @@ -79,6 +80,33 @@ func (rc *printController) PrintCartView(c *gin.Context) { c.HTML(http.StatusOK, "printvariant.html", data) } +func (rc *printController) PrintOrderView(c *gin.Context) { + order, err := repositories.Orders.GetByToken(c.Param("token")) + + if err != nil { + c.HTML(http.StatusBadRequest, "error.html", gin.H{"data": gin.H{"error": err}}) + return + } + + cartItems := order.CartItems + + type ShopItemVariantPair struct { + ShopItem models.ShopItem + ItemVariant models.ItemVariant + } + + var items []ShopItemVariantPair + for _, cartItem := range cartItems { + items = append(items, ShopItemVariantPair{ShopItem: cartItem.ShopItem, ItemVariant: cartItem.ItemVariant}) + } + + data := CreateSessionData(c, gin.H{ + "itemVariants": items, + }) + + c.HTML(http.StatusOK, "printvariant.html", data) +} + func (rc *printController) PrintHandler(c *gin.Context) { variantIds := c.PostFormArray("variant-id[]") variantAmounts := c.PostFormArray("variant-amount[]") diff --git a/main.go b/main.go index 141a577..dc3e73b 100644 --- a/main.go +++ b/main.go @@ -95,8 +95,9 @@ func main() { viewRoutes.POST("/cart/edit", cartItemController.EditItemHandler) viewRoutes.GET("/checkout", cartItemController.CheckoutView) viewRoutes.POST("/checkout", cartItemController.CheckoutHandler) - viewRoutes.GET("/order/:token", cartItemController.OrderView) viewRoutes.POST("/order", cartItemController.OrderHandler) + viewRoutes.GET("/order/:token", cartItemController.OrderView) + viewRoutes.GET("/order/:token/print", authValidator.RequireAuth, printController.PrintOrderView) //write middleware that redirects to homescreen on register/login/reset for logged in users viewRoutes.GET("/login", userController.LoginView)