package controllers import ( "math" "strconv" "github.com/gofiber/fiber/v2" "github.com/sujit-baniya/fiber-boilerplate/pkg/models" ) func ServiciosView(c *fiber.Ctx) error { return c.Render("renovaciones/servicios", fiber.Map{ "user": c.Locals("user"), "modules": c.Locals("userModules"), }, "layouts/main") } func GetServicios(c *fiber.Ctx) error { page, _ := strconv.Atoi(c.Query("page", "1")) limit, _ := strconv.Atoi(c.Query("limit", "10")) if page < 1 { page = 1 } offset := (page - 1) * limit records, total, err := models.GetAllServicios(limit, offset, c.Query("search")) if err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } return c.JSON(fiber.Map{ "registros": records, "total": total, "totalPages": int(math.Ceil(float64(total) / float64(limit))), "page": page, "limit": limit, }) } func GetServiciosSelect(c *fiber.Ctx) error { records, err := models.GetAllServiciosSelect() if err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } return c.JSON(records) } func CreateServicio(c *fiber.Ctx) error { var m models.Servicio if err := c.BodyParser(&m); err != nil { return c.Status(400).JSON(fiber.Map{"error": err.Error()}) } m.Activo = true if err := models.CreateServicio(m); err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } return c.Status(201).JSON(fiber.Map{"message": "Servicio creado", "ok": true}) } func UpdateServicio(c *fiber.Ctx) error { id, err := strconv.ParseUint(c.Params("id"), 10, 32) if err != nil { return c.Status(400).JSON(fiber.Map{"error": "ID inválido"}) } var m models.Servicio if err := c.BodyParser(&m); err != nil { return c.Status(400).JSON(fiber.Map{"error": err.Error()}) } m.ID = uint(id) if err := models.UpdateServicio(m); err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } return c.JSON(fiber.Map{"message": "Actualizado", "ok": true}) } func DeleteServicio(c *fiber.Ctx) error { id, err := strconv.ParseUint(c.Params("id"), 10, 32) if err != nil { return c.Status(400).JSON(fiber.Map{"error": "ID inválido"}) } if err := models.DeleteServicio(uint(id)); err != nil { return c.Status(500).JSON(fiber.Map{"error": err.Error()}) } return c.JSON(fiber.Map{"message": "Eliminado", "ok": true}) }