allow printing/editing orders

This commit is contained in:
2025-04-11 16:06:41 +02:00
parent adac366896
commit 1da5e3e8b4
5 changed files with 49 additions and 59 deletions

View File

@@ -515,47 +515,50 @@ func (rc *cartItemController) OrdersView(c *gin.Context) {
}
func (rc *cartItemController) OrdersHandler(c *gin.Context) {
confirmation := c.PostForm("confirm-order")
token := c.Param("token")
if confirmation == "" {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": "Something went wrong, try again later"})
if token == "" {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": "EmptyToken"})
return
}
if confirmation != "true" {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": "Order was not confirmed."})
return
action := c.PostForm("action")
if action == "update" {
order, err := repositories.Orders.GetByToken(token)
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": "No order with given token found"})
return
}
status := c.PostForm("order-status")
//TODO validate status
if status == "" {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": "Invalid Order Status"})
return
}
order.Status = models.OrderStatus(status)
_, err = repositories.Orders.Update(order)
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err})
return
}
}
sessionId := GetSessionId(c)
order, err := repositories.Orders.GetBySession(sessionId)
if action == "delete" {
fmt.Println("Deleting Order ", token)
err := repositories.Orders.DeleteByToken(token)
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": "Something went wrong, try again later"})
return
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err})
return
}
}
order.Status = models.AwaitingPayment
err = order.Validate()
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err})
return
}
for idx := range order.CartItems {
order.CartItems[idx].SessionId = "0"
repositories.CartItems.Update(order.CartItems[idx])
}
_, err = repositories.Orders.Update(order)
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err})
return
}
//TODO: cartItemRepository delete all by session - otherwise items stay in cart after completing order..
c.Redirect(http.StatusFound, fmt.Sprintf("/order/%s", order.Token))
c.Redirect(http.StatusFound, "/orders")
}