package api

import (
	"fmt"
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/tidbcloud/account/admin/forms"
)

// @Summary GetSystemSettings
// @tags System
// @Accept  json
// @Produce json
// @Success 200 {object} forms.SystemSettings
// @Router /system-settings [get]
func GetSystemSettings(c *gin.Context) {
	//userContext := GetUserContext(c)
	//settings, err := userContext.GetSystemSettings()
	//if err != nil {
	//	Fail(c, err, http.StatusInternalServerError)
	//	return
	//}

	result := forms.SystemSettings{
		EnableDevTier: forms.EnableDevTier{
			EnableOnAws: true,
			EnableOnGcp: false,
		},
	}
	//result := buildSystemSettings(settings)
	Success(c, result, http.StatusOK)
}

// @Summary UpdateSystemSettings
// @tags System
// @Accept  json
// @Produce json
// @Param settings body forms.SystemSettings true "update system settings"
// @Success 200 {object} forms.SystemSettings
// @Router /system-settings [put]
func UpdateSystemSettings(c *gin.Context) {
	// req := forms.SystemSettings{}
	// if err := c.ShouldBindJSON(&req); err != nil {
	// 	Fail(c, err, http.StatusBadRequest)
	// 	return
	// }

	// userContext := GetUserContext(c)
	// settings := buildInternalSystemSettings(req)
	// item, err := userContext.UpdateSystemSettings(settings)
	// if err != nil {
	// 	Fail(c, err, http.StatusInternalServerError)
	// 	return
	// }

	// Success(c, buildSystemSettings(item), http.StatusOK)
	Fail(c, fmt.Errorf("unsupported now"), http.StatusInternalServerError)
}

// @Summary GetDashboardStats
// @tags System
// @Accept  json
// @Produce json
// @Success 200 {object} forms.GetDashboardStatsResq
// @Router /dashboard/stats [get]
func GetDashboardStats(c *gin.Context) {
	// userContext := GetUserContext(c)
	// stats, err := userContext.GetDashboardStats()
	// if err != nil {
	// 	Fail(c, err, http.StatusInternalServerError)
	// 	return
	// }

	// result := buildDashboardStats(stats)
	result := forms.GetDashboardStatsResq{
		DevTier: forms.DevTierStats{
			AwsActiveClustersCount: 0,
			GcpActiveClustersCount: 0,
		},
	}
	Success(c, result, http.StatusOK)
}
