From fa561c921ddb595f59ff88482d2270572feb4c0a Mon Sep 17 00:00:00 2001 From: kalipso Date: Sun, 13 Apr 2025 15:43:32 +0200 Subject: [PATCH] fix #7 Order is empty bug --- controllers/cartItemController.go | 42 +++++++++++++++++++------------ 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/controllers/cartItemController.go b/controllers/cartItemController.go index e8e634e..2f6eadf 100644 --- a/controllers/cartItemController.go +++ b/controllers/cartItemController.go @@ -170,7 +170,7 @@ func (rc *cartItemController) NewOrderFromForm(ctx *gin.Context) (models.Order, return models.Order{}, err } - cartItem := models.Order{ + order := models.Order{ SessionId: sessionId, Status: status, Token: token, @@ -186,7 +186,7 @@ func (rc *cartItemController) NewOrderFromForm(ctx *gin.Context) (models.Order, CartItems: cartItems, } - return cartItem, nil + return order, nil } func (rc *cartItemController) Create(c *gin.Context) { @@ -360,21 +360,31 @@ func (rc *cartItemController) CheckoutHandler(c *gin.Context) { existingOrder, err := repositories.Orders.GetBySession(order.SessionId) if errors.Is(err, gorm.ErrRecordNotFound) { - _, err = repositories.Orders.Create(order) + fmt.Println("Creating Order") + createdOrder, err := repositories.Orders.Create(order) + + if err != nil { + data := CreateSessionData(c, gin.H{ + "error": err, + "success": "", + }) + + c.HTML(http.StatusOK, "error.html", data) + return + } + + for _, cartItem := range order.CartItems { + cartItem.OrderID = createdOrder.ID + repositories.CartItems.Update(cartItem) + } } else if err == nil { + fmt.Println("Updating Order") order.ID = existingOrder.ID order.CreatedAt = existingOrder.CreatedAt - repositories.Orders.Update(order) - } - - if err != nil { - data := CreateSessionData(c, gin.H{ - "error": err, - "success": "", - }) - - c.HTML(http.StatusOK, "cart.html", data) - return + _, err := repositories.Orders.Update(order) + if err != nil { + fmt.Println(err) + } } shipping, err := models.GetShippingMethod(order.Shipping) @@ -384,7 +394,7 @@ func (rc *cartItemController) CheckoutHandler(c *gin.Context) { "success": "", }) - c.HTML(http.StatusOK, "cart.html", data) + c.HTML(http.StatusOK, "error.html", data) return } @@ -395,7 +405,7 @@ func (rc *cartItemController) CheckoutHandler(c *gin.Context) { "success": "", }) - c.HTML(http.StatusOK, "cart.html", data) + c.HTML(http.StatusOK, "error.html", data) return }