package controllers

import (
	"context"

	beego "github.com/beego/beego/v2/server/web"
)

// DetailsController is the controller in chrage of solr
type DetailsController struct {
	beego.Controller
}

// @Title GetDetails
// @Description Return details of a resource
// @Success 200 {string} Cool
// @router /data/:id [post]
// @router /computing/:id [post]
// @router /storage/:id [post]
// @router /datacenter/:id [post]
func (c *DetailsController) SubmitToWorkspace(id string) {
	rType := c.Ctx.Input.Params()["1"]

	var err error

	switch rType {
	case "data":
	case "computing":
	case "datacenter":
	case "storage":
		_, err = OCCatalogAPI.WorkspaceApi.WorkspaceControllerAddModelToWorkspace(context.Background(), id, rType)
	default:
		return
	}

	if err != nil {
		return
	}

}

// @Title GetDetails
// @Description Return details of a resource
// @Success 200 {string} Cool
// @router /data/:id [get]
// @router /computing/:id [get]
// @router /storage/:id [get]
// @router /datacenter/:id [get]
func (c *DetailsController) GetElementInfo(id string) {
	rType := c.Ctx.Input.Params()["1"]

	var res interface{}
	var err error

	switch rType {
	case "data":
		res, _, err = OCCatalogAPI.DataApi.DataControllerGetDataByID(context.Background(), id)
	case "computing":
		res, _, err = OCCatalogAPI.ComputingApi.ComputingControllerGetComputingByID(context.Background(), id)
	case "datacenter":
		res, _, err = OCCatalogAPI.DatacenterApi.DatacenterControllerGetOneDatacenter(context.Background(), id)
	case "storage":
		res, _, err = OCCatalogAPI.StorageApi.StorageControllerGet(context.Background(), id)
	default:
		return
	}

	if err != nil {
		return
	}

	c.Data["data"] = res
	c.TplName = "details.tpl"
}
