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))) }