forked from baron/baron-sso
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
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"})
|
|
}
|