80 lines
3.0 KiB
Go
80 lines
3.0 KiB
Go
package routers
|
|
|
|
import (
|
|
"log/slog"
|
|
"slices"
|
|
|
|
"git.kocoder.xyz/kocoded/vt/utils"
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type Mandant struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Logo string `json:"logo"`
|
|
Plan string `json:"plan"`
|
|
Color string `json:"color"`
|
|
}
|
|
|
|
type mandantRouter struct {
|
|
logger *slog.Logger
|
|
mandanten []*Mandant
|
|
currentMandant *Mandant
|
|
}
|
|
|
|
func RegisterMandantRouter(group fiber.Router, appCtx *utils.Application) {
|
|
mandanten := []*Mandant{
|
|
{
|
|
ID: uuid.NewString(),
|
|
Name: "Acme Inc",
|
|
Logo: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNvbW1hbmQtaWNvbiBsdWNpZGUtY29tbWFuZCI+PHBhdGggZD0iTTE1IDZ2MTJhMyAzIDAgMSAwIDMtM0g2YTMgMyAwIDEgMCAzIDNWNmEzIDMgMCAxIDAtMyAzaDEyYTMgMyAwIDEgMC0zLTMiLz48L3N2Zz4=",
|
|
Plan: "Enterprise",
|
|
Color: "#ff2056",
|
|
},
|
|
{
|
|
ID: uuid.NewString(),
|
|
Name: "Acme Corp.",
|
|
Logo: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1leWUtY2xvc2VkLWljb24gbHVjaWRlLWV5ZS1jbG9zZWQiPjxwYXRoIGQ9Im0xNSAxOC0uNzIyLTMuMjUiLz48cGF0aCBkPSJNMiA4YTEwLjY0NSAxMC42NDUgMCAwIDAgMjAgMCIvPjxwYXRoIGQ9Im0yMCAxNS0xLjcyNi0yLjA1Ii8+PHBhdGggZD0ibTQgMTUgMS43MjYtMi4wNSIvPjxwYXRoIGQ9Im05IDE4IC43MjItMy4yNSIvPjwvc3ZnPg==",
|
|
Plan: "Startup",
|
|
Color: "#e12afb",
|
|
},
|
|
{
|
|
ID: uuid.NewString(),
|
|
Name: "Evil Corp.",
|
|
Logo: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNvbW1hbmQtaWNvbiBsdWNpZGUtY29tbWFuZCI+PHBhdGggZD0iTTE1IDZ2MTJhMyAzIDAgMSAwIDMtM0g2YTMgMyAwIDEgMCAzIDNWNmEzIDMgMCAxIDAtMyAzaDEyYTMgMyAwIDEgMC0zLTMiLz48L3N2Zz4=",
|
|
Plan: "Free",
|
|
Color: "#4f39f6",
|
|
},
|
|
}
|
|
|
|
router := &mandantRouter{logger: appCtx.Logger, mandanten: mandanten, currentMandant: mandanten[0]}
|
|
|
|
group.Get("/current", router.getCurrentMandant)
|
|
group.Put("/current", router.setCurrentMandant)
|
|
group.Get("/all", router.getAllMandant)
|
|
}
|
|
|
|
func (r *mandantRouter) getCurrentMandant(c *fiber.Ctx) error {
|
|
return c.JSON(r.currentMandant)
|
|
}
|
|
|
|
func (r *mandantRouter) getAllMandant(c *fiber.Ctx) error {
|
|
return c.JSON(r.mandanten)
|
|
}
|
|
|
|
func (r *mandantRouter) setCurrentMandant(c *fiber.Ctx) error {
|
|
mandant := &Mandant{}
|
|
|
|
if err := c.BodyParser(mandant); err != nil {
|
|
return err
|
|
}
|
|
|
|
mandantId := slices.IndexFunc(r.mandanten, func(m *Mandant) bool {
|
|
return m.ID == mandant.ID
|
|
})
|
|
|
|
r.currentMandant = r.mandanten[mandantId]
|
|
return c.JSON(r.currentMandant)
|
|
}
|