86 lines
2.6 KiB
Go
86 lines
2.6 KiB
Go
package restricted
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"git.ma-al.com/goc_daniel/b2b/app/model"
|
|
"git.ma-al.com/goc_daniel/b2b/app/service/productEditingService"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/i18n"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/logger"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/nullable"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/response"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/responseErrors"
|
|
"github.com/gofiber/fiber/v3"
|
|
)
|
|
|
|
type ProductEditingHandler struct {
|
|
productEditingService *productEditingService.ProductEditingService
|
|
}
|
|
|
|
func NewProductEditingHandler() *ProductEditingHandler {
|
|
productEditingService := productEditingService.New()
|
|
return &ProductEditingHandler{
|
|
productEditingService: productEditingService,
|
|
}
|
|
}
|
|
|
|
func ProductEditingHandlerRoutes(r fiber.Router) fiber.Router {
|
|
handler := NewProductEditingHandler()
|
|
|
|
r.Get("/:id", handler.GetProduct)
|
|
r.Post("/:id", handler.SaveProduct)
|
|
|
|
return r
|
|
}
|
|
|
|
func (h *ProductEditingHandler) GetProduct(c fiber.Ctx) error {
|
|
idStr := c.Params("id")
|
|
|
|
p_id_product, err := strconv.Atoi(idStr)
|
|
if err != nil {
|
|
return c.Status(responseErrors.GetErrorStatus(err)).
|
|
JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, err)))
|
|
}
|
|
|
|
product, err := h.productEditingService.GetProduct(uint(p_id_product))
|
|
if err != nil {
|
|
logger.Error("failed to load editable product",
|
|
"product_id", p_id_product,
|
|
"error", err.Error(),
|
|
)
|
|
return c.Status(responseErrors.GetErrorStatus(err)).
|
|
JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, err)))
|
|
}
|
|
|
|
return c.JSON(response.Make(product, 1, i18n.T_(c, response.Message_OK)))
|
|
}
|
|
|
|
func (h *ProductEditingHandler) SaveProduct(c fiber.Ctx) error {
|
|
idStr := c.Params("id")
|
|
|
|
p_id_product, err := strconv.Atoi(idStr)
|
|
if err != nil {
|
|
return c.Status(responseErrors.GetErrorStatus(err)).
|
|
JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, err)))
|
|
}
|
|
|
|
var product model.ProductEditing
|
|
err = c.Bind().Body(&product)
|
|
if err != nil {
|
|
return c.Status(responseErrors.GetErrorStatus(responseErrors.ErrJSONBody)).
|
|
JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, responseErrors.ErrJSONBody)))
|
|
}
|
|
|
|
err = h.productEditingService.SaveProduct(uint(p_id_product), &product)
|
|
if err != nil {
|
|
logger.Error("failed to save editable product",
|
|
"product_id", p_id_product,
|
|
"error", err.Error(),
|
|
)
|
|
return c.Status(responseErrors.GetErrorStatus(err)).
|
|
JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, err)))
|
|
}
|
|
|
|
return c.JSON(response.Make(nullable.GetNil(""), 0, i18n.T_(c, response.Message_OK)))
|
|
}
|