package middleware

import (
	"strings"

	"github.com/gofiber/fiber/v2"
)

func BranchIsolationMiddleware() fiber.Handler {
	return func(c *fiber.Ctx) error {
		role, _ := c.Locals("role").(string)
		role = strings.ToLower(strings.TrimSpace(role))

		if role == "superadmin" {
			c.Locals("current_branch_id", uint(0))
			return c.Next()
		}

		branchID, ok := c.Locals("branch_id").(uint)
		if !ok {
			// If not authenticated or branch_id missing, default to 0
			branchID = 0
		}

		c.Locals("current_branch_id", branchID)
		return c.Next()
	}
}
