package routes

import (
	"github.com/gofiber/fiber/v2"

	"github.com/break/junhong_cmp_fiber/internal/handler/admin"
	"github.com/break/junhong_cmp_fiber/internal/model/dto"
	"github.com/break/junhong_cmp_fiber/pkg/openapi"
)

func registerEnterpriseRoutes(router fiber.Router, handler *admin.EnterpriseHandler, doc *openapi.Generator, basePath string) {
	enterprises := router.Group("/enterprises")
	groupPath := basePath + "/enterprises"

	Register(enterprises, doc, groupPath, "POST", "", handler.Create, RouteSpec{
		Summary: "新增企业客户",
		Tags:    []string{"企业客户管理"},
		Input:   new(dto.CreateEnterpriseReq),
		Output:  new(dto.CreateEnterpriseResp),
		Auth:    true,
	})

	Register(enterprises, doc, groupPath, "GET", "", handler.List, RouteSpec{
		Summary: "查询企业客户列表",
		Tags:    []string{"企业客户管理"},
		Input:   new(dto.EnterpriseListReq),
		Output:  new(dto.EnterprisePageResult),
		Auth:    true,
	})

	Register(enterprises, doc, groupPath, "PUT", "/:id", handler.Update, RouteSpec{
		Summary: "编辑企业信息",
		Tags:    []string{"企业客户管理"},
		Input:   new(dto.UpdateEnterpriseReq),
		Output:  new(dto.EnterpriseItem),
		Auth:    true,
	})

	Register(enterprises, doc, groupPath, "PUT", "/:id/status", handler.UpdateStatus, RouteSpec{
		Summary: "启用/禁用企业",
		Tags:    []string{"企业客户管理"},
		Input:   new(dto.UpdateEnterpriseStatusReq),
		Output:  nil,
		Auth:    true,
	})

	Register(enterprises, doc, groupPath, "PUT", "/:id/password", handler.UpdatePassword, RouteSpec{
		Summary: "修改企业账号密码",
		Tags:    []string{"企业客户管理"},
		Input:   new(dto.UpdateEnterprisePasswordReq),
		Output:  nil,
		Auth:    true,
	})
}
