Skip to content

Commit

Permalink
Some refactoring in controllers
Browse files Browse the repository at this point in the history
  • Loading branch information
isakgranqvist2021 committed Mar 29, 2022
1 parent 9d4b4f2 commit 07d8648
Show file tree
Hide file tree
Showing 8 changed files with 81 additions and 59 deletions.
1 change: 0 additions & 1 deletion src/config/sessions.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
var Store *session.Store

func NewStore() *session.Store {

Store = session.New()

Store.RegisterType([]models.CartItem{})
Expand Down
24 changes: 2 additions & 22 deletions src/controllers/cart/add-to-cart.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"strconv"

"github.com/gofiber/fiber/v2"
"github.com/isakgranqvist2021/dropstore/src/config"
"github.com/isakgranqvist2021/dropstore/src/helpers/cart"
"github.com/isakgranqvist2021/dropstore/src/models"
)

Expand All @@ -23,27 +23,7 @@ func AddToCart(c *fiber.Ctx) error {

newItem.ID = int(productId)

sess, err := config.GetStore().Get(c)

if err != nil {
return c.Redirect("/error")
}

cartInventory := sess.Get("CART_INVENTORY")

if err != nil {
return c.Redirect("/error")
}

if cartInventory != nil {
cartInventory = append(cartInventory.([]models.CartItem), newItem)
} else {
cartInventory = []models.CartItem{newItem}
}

sess.Set("CART_INVENTORY", cartInventory)

if err := sess.Save(); err != nil {
if err := cart.AddToCartAndUpdateSession(c, newItem); err != nil {
return c.Redirect("/error")
}

Expand Down
32 changes: 2 additions & 30 deletions src/controllers/cart/change-qty.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import (
"strconv"

"github.com/gofiber/fiber/v2"
"github.com/isakgranqvist2021/dropstore/src/config"
"github.com/isakgranqvist2021/dropstore/src/models"
"github.com/isakgranqvist2021/dropstore/src/helpers/cart"
)

func ChangeQuantity(c *fiber.Ctx) error {
Expand All @@ -17,38 +16,11 @@ func ChangeQuantity(c *fiber.Ctx) error {
return c.Redirect("/error")
}

sess, err := config.GetStore().Get(c)
err = cart.ChangeQtyAndUpdateSession(c, int(productId), action)

if err != nil {
return c.Redirect("/error")
}

cartInventory := sess.Get("CART_INVENTORY").([]models.CartItem)

for i, v := range cartInventory {
if productId == int64(v.ID) {
product := &cartInventory[i]

switch action {
case "increment":
product.Quantity += 1
case "decrement":
product.Quantity -= 1
default:
return c.Redirect("/error")
}

if product.Quantity == 0 {
cartInventory = append(cartInventory[:i], cartInventory[i+1:]...)
}
}
}

sess.Set("CART_INVENTORY", cartInventory)

if err := sess.Save(); err != nil {
return c.Redirect("/error")
}

return c.Redirect("/checkout")
}
6 changes: 0 additions & 6 deletions src/controllers/checkout/checkout.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,6 @@ func Checkout(c *fiber.Ctx) error {

products := utils.JoinCart(cartInventory)

sess.Set("GO_BACK_HREF", "/checkout")

if err := sess.Save(); err != nil {
return c.Redirect("/error")
}

return c.Render("pages/checkout", fiber.Map{
"Products": products,
})
Expand Down
1 change: 1 addition & 0 deletions src/helpers/alert/get-alert.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package alert
1 change: 1 addition & 0 deletions src/helpers/alert/set-alert.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package alert
31 changes: 31 additions & 0 deletions src/helpers/cart/add-to-cart.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package cart

import (
"github.com/gofiber/fiber/v2"
"github.com/isakgranqvist2021/dropstore/src/config"
"github.com/isakgranqvist2021/dropstore/src/models"
)

func AddToCartAndUpdateSession(c *fiber.Ctx, newItem models.CartItem) error {
sess, err := config.GetStore().Get(c)

if err != nil {
return err
}

cartInventory := sess.Get("CART_INVENTORY")

if cartInventory != nil {
cartInventory = append(cartInventory.([]models.CartItem), newItem)
} else {
cartInventory = []models.CartItem{newItem}
}

sess.Set("CART_INVENTORY", cartInventory)

if err := sess.Save(); err != nil {
return err
}

return nil
}
44 changes: 44 additions & 0 deletions src/helpers/cart/change-qty.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package cart

import (
"github.com/gofiber/fiber/v2"
"github.com/isakgranqvist2021/dropstore/src/config"
"github.com/isakgranqvist2021/dropstore/src/models"
)

func ChangeQtyAndUpdateSession(c *fiber.Ctx, productId int, action string) error {
sess, err := config.GetStore().Get(c)

if err != nil {
return err
}

cartInventory := sess.Get("CART_INVENTORY").([]models.CartItem)

for i, v := range cartInventory {
if productId == v.ID {
product := &cartInventory[i]

switch action {
case "increment":
product.Quantity += 1
case "decrement":
product.Quantity -= 1
default:
return err
}

if product.Quantity == 0 {
cartInventory = append(cartInventory[:i], cartInventory[i+1:]...)
}
}
}

sess.Set("CART_INVENTORY", cartInventory)

if err := sess.Save(); err != nil {
return err
}

return nil
}

0 comments on commit 07d8648

Please sign in to comment.