package controller

import (
	"net/http"

	"github.com/go-chi/chi"
	"github.com/goodrain/rainbond/api/handler"
	httputil "github.com/goodrain/rainbond/util/http"
)

type ResourceCenterController struct{}

func (c *ResourceCenterController) GetWorkloadDetail(w http.ResponseWriter, r *http.Request) {
	tenantName := chi.URLParam(r, "tenant_name")
	resource := chi.URLParam(r, "resource")
	name := chi.URLParam(r, "name")
	group := r.URL.Query().Get("group")
	version := r.URL.Query().Get("version")
	bean, err := handler.GetResourceCenterHandler().GetWorkloadDetail(tenantName, group, version, resource, name)
	if err != nil {
		httputil.ReturnBcodeError(r, w, err)
		return
	}
	httputil.ReturnSuccess(r, w, bean)
}

func (c *ResourceCenterController) GetPodDetail(w http.ResponseWriter, r *http.Request) {
	tenantName := chi.URLParam(r, "tenant_name")
	podName := chi.URLParam(r, "pod_name")
	bean, err := handler.GetResourceCenterHandler().GetPodDetail(tenantName, podName)
	if err != nil {
		httputil.ReturnBcodeError(r, w, err)
		return
	}
	httputil.ReturnSuccess(r, w, bean)
}

func (c *ResourceCenterController) ListEvents(w http.ResponseWriter, r *http.Request) {
	tenantName := chi.URLParam(r, "tenant_name")
	namespace := r.URL.Query().Get("namespace")
	kind := r.URL.Query().Get("kind")
	name := r.URL.Query().Get("name")
	bean, err := handler.GetResourceCenterHandler().ListEvents(tenantName, namespace, kind, name)
	if err != nil {
		httputil.ReturnBcodeError(r, w, err)
		return
	}
	httputil.ReturnSuccess(r, w, map[string]interface{}{
		"list":  bean,
		"total": len(bean),
	})
}

func GetResourceCenterController() *ResourceCenterController {
	return &ResourceCenterController{}
}