package handler import ( "BE-MiniERP/database" "BE-MiniERP/modules/inventory/models" "BE-MiniERP/modules/inventory/repository" "strconv" "github.com/gofiber/fiber/v2" ) type WarehouseHandler struct { Repo *repository.WarehouseRepository } func NewWarehouseHandler() *WarehouseHandler { return &WarehouseHandler{ Repo: repository.NewWarehouseRepository(database.DB), } } func (h *WarehouseHandler) GetAll(c *fiber.Ctx) error { page := c.QueryInt("page", 1) limit := c.QueryInt("limit", 10) // default 10 offset := (page - 1) * limit search := c.Query("search", "") warehouses, err := h.Repo.FindAll(page, limit, offset, search) if err != nil { return c.Status(500).JSON(fiber.Map{"error": "Failed to fetch warehouses"}) } return c.JSON(warehouses) } func (h *WarehouseHandler) Create(c *fiber.Ctx) error { var input models.Warehouse if err := c.BodyParser(&input); err != nil { return c.Status(400).JSON(fiber.Map{"error": "Invalid input"}) } if err := h.Repo.Create(&input); err != nil { return c.Status(500).JSON(fiber.Map{"error": "Failed to create warehouse"}) } return c.JSON(input) } func (h *WarehouseHandler) Update(c *fiber.Ctx) error { id, _ := strconv.Atoi(c.Params("id")) var input models.Warehouse if err := c.BodyParser(&input); err != nil { return c.Status(400).JSON(fiber.Map{"error": "Invalid input"}) } if err := h.Repo.Update(uint(id), &input); err != nil { return c.Status(500).JSON(fiber.Map{"error": "Failed to update warehouse"}) } return c.JSON(fiber.Map{"message": "Warehouse updated"}) } func (h *WarehouseHandler) Delete(c *fiber.Ctx) error { id, _ := strconv.Atoi(c.Params("id")) if err := h.Repo.Delete(uint(id)); err != nil { return c.Status(500).JSON(fiber.Map{"error": "Failed to delete warehouse"}) } return c.JSON(fiber.Map{"message": "Warehouse deleted"}) }