package handler import ( "baron-sso-backend/internal/service" "log/slog" "github.com/gofiber/fiber/v2" ) type OrgChartHandler struct { Service service.OrgChartService } func NewOrgChartHandler(s service.OrgChartService) *OrgChartHandler { return &OrgChartHandler{Service: s} } func (h *OrgChartHandler) ImportCSV(c *fiber.Ctx) error { tenantID := c.Params("tenantId") if tenantID == "" { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "tenantId is required"}) } file, err := c.FormFile("file") if err != nil { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "failed to get file from form"}) } f, err := file.Open() if err != nil { return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "failed to open file"}) } defer f.Close() if err := h.Service.ImportCSV(c.Context(), tenantID, f); err != nil { slog.Error("Failed to import CSV", "error", err, "tenantID", tenantID) return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()}) } return c.JSON(fiber.Map{"message": "Import completed successfully"}) }