package userbehavior

import (
	ctrl "github.com/tidbcloud/devops/pkg/controller"
	ubsvc "github.com/tidbcloud/devops/pkg/service/userbehavior"

	"go.uber.org/dig"
)

type ControllerParam struct {
	dig.In

	UserBehaviorService ubsvc.UserBehaviorServiceAPI
}

type UserBehaviorController struct {
	ubsvc ubsvc.UserBehaviorServiceAPI
}

func (c *UserBehaviorController) Name() string {
	return "UserBehaviorController"
}

func NewUserBehaviorController(p ControllerParam) ctrl.Controller {
	return &UserBehaviorController{
		ubsvc: p.UserBehaviorService,
	}
}

func (c *UserBehaviorController) RegisterAPI(suite *ctrl.Suite) error {
	r := suite.Router
	group := r.Group("/userbehavior")
	{
		group.GET("/subscriptions", c.ListSubscriptions)
		group.POST("/subscriptions", c.CreateSubscription)
		group.GET("/subscriptions/:subscription_id", c.GetSubscription)
		group.PUT("/subscriptions/:subscription_id", c.EditSubscription)
		group.POST("/subscriptions/:subscription_id/cancel", c.CancelSubscription)
		group.POST("/subscriptions/:subscription_id/mock", c.SendMockEventToSubscription)
		group.GET("/subscriptions/larkchat_options", c.GetLarkChatOptions)
		group.POST("/subscriptions/add_chat", c.AddExternalLarkChat)
		group.POST("/gtm/emails/suppress", c.SuppressGTMEmail)
	}

	return nil
}
