From 1f6d5ecb726682898073089b54c7829f0be6a792 Mon Sep 17 00:00:00 2001 From: Daniel Goc Date: Mon, 13 Apr 2026 09:21:33 +0200 Subject: [PATCH] go routine and removing cart --- app/delivery/web/api/restricted/orders.go | 1 + app/repos/cartsRepo/cartsRepo.go | 9 +++++++++ app/service/cartsService/cartsService.go | 12 ++++++++++++ app/service/orderService/orderService.go | 16 +++++++++++++--- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/app/delivery/web/api/restricted/orders.go b/app/delivery/web/api/restricted/orders.go index 751d712..186599c 100644 --- a/app/delivery/web/api/restricted/orders.go +++ b/app/delivery/web/api/restricted/orders.go @@ -144,6 +144,7 @@ func (h *OrdersHandler) ChangeOrderAddress(c fiber.Ctx) error { } // we base permissions and user based on target user only. +// TODO: well, permissions and all that. func (h *OrdersHandler) ChangeOrderStatus(c fiber.Ctx) error { user, ok := localeExtractor.GetCustomer(c) if !ok { diff --git a/app/repos/cartsRepo/cartsRepo.go b/app/repos/cartsRepo/cartsRepo.go index dab8bee..4141dcb 100644 --- a/app/repos/cartsRepo/cartsRepo.go +++ b/app/repos/cartsRepo/cartsRepo.go @@ -9,6 +9,7 @@ import ( type UICartsRepo interface { CartsAmount(user_id uint) (uint, error) CreateNewCart(user_id uint) (model.CustomerCart, error) + RemoveCart(user_id uint, cart_id uint) error UserHasCart(user_id uint, cart_id uint) (bool, error) UpdateCartName(user_id uint, cart_id uint, new_name string) error RetrieveCartsInfo(user_id uint) ([]model.CustomerCart, error) @@ -49,6 +50,14 @@ func (repo *CartsRepo) CreateNewCart(user_id uint) (model.CustomerCart, error) { return cart, err } +func (repo *CartsRepo) RemoveCart(user_id uint, cart_id uint) error { + return db.DB. + Table("b2b_customer_carts"). + Where("cart_id = ? AND user_id = ?", cart_id, user_id). + Delete(nil). + Error +} + func (repo *CartsRepo) UserHasCart(user_id uint, cart_id uint) (bool, error) { var amt uint diff --git a/app/service/cartsService/cartsService.go b/app/service/cartsService/cartsService.go index 235c412..2ed4006 100644 --- a/app/service/cartsService/cartsService.go +++ b/app/service/cartsService/cartsService.go @@ -34,6 +34,18 @@ func (s *CartsService) CreateNewCart(user_id uint) (model.CustomerCart, error) { return cart, nil } +func (s *CartsService) RemoveCart(user_id uint, cart_id uint) error { + exists, err := s.repo.UserHasCart(user_id, cart_id) + if err != nil { + return err + } + if !exists { + return responseErrors.ErrUserHasNoSuchCart + } + + return s.repo.RemoveCart(user_id, cart_id) +} + func (s *CartsService) UpdateCartName(user_id uint, cart_id uint, new_name string) error { exists, err := s.repo.UserHasCart(user_id, cart_id) if err != nil { diff --git a/app/service/orderService/orderService.go b/app/service/orderService/orderService.go index eb0e2f2..da21785 100644 --- a/app/service/orderService/orderService.go +++ b/app/service/orderService/orderService.go @@ -87,14 +87,24 @@ func (s *OrderService) PlaceNewOrder(user_id uint, cart_id uint, name string, co if err != nil { return err } + // from this point onward we do not cancel this order. - // send email to admin - err = s.emailService.SendNewOrderPlacedNotification(user_id) + // if no error is returned, remove the cart. This should be smooth + err = s.cartsRepo.RemoveCart(user_id, cart_id) if err != nil { - // Log error but don't fail placing order??? + // Log error but don't fail placing order _ = err } + // send email to admin + go func(user_id uint) { + err := s.emailService.SendNewOrderPlacedNotification(user_id) + if err != nil { + // Log error but don't fail placing order + _ = err + } + }(user_id) + return nil }