/*
 * @description:
 * @Author: CP
 * @Date: 2021-06-01 14:54:57
 * @FilePath: \construction_management\web\backstage\group_bs.go
 */
package backstage

import (
	"fmt"

	"github.com/kataras/iris/v12"
	"go.mod/services"
	"go.mod/web/utils"
	"go.mod/web/viewmodels"
)

type GroupBs struct {
	//框架-web应用上下文环境
	Ctx iris.Context
	// 需要用的service
	GroupService services.GroupService
}

// 获得管理组列表
func (c *GroupBs) GetList() {
	item, total := c.GroupService.GetAll()
	dataList := map[string]interface{}{
		"items": item,
		"total": total,
	}
	c.Ctx.JSON(iris.Map{
		"code": 0,
		"msg":  "",
		"data": dataList,
	})
}

// 新增管理员组
func (c *GroupBs) PostAdd() {
	// 1.获得数据
	data := viewmodels.Group{}
	if err := c.Ctx.ReadJSON(&data); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	// 2.验证数据
	if err := data.ValidateAdd(); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	if err := c.GroupService.Add(data); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	c.Ctx.JSON(iris.Map{"code": 0, "msg": "新增成功"})
}

// 更新管理员组
func (c *GroupBs) PostUpdate() {
	// 1.获得数据
	data := viewmodels.Group{}
	if err := c.Ctx.ReadJSON(&data); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	// 2.验证数据
	if err := data.ValidateAdd(); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	id, err := utils.GetDecryptId(data.Id)
	if err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	if err := c.GroupService.Update(data, id); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	c.Ctx.JSON(iris.Map{"code": 0, "msg": "编辑成功"})
}

// 新增管理员组
func (c *GroupBs) DeleteDelete() {
	// 1.获得数据
	data := viewmodels.Group{}
	if err := c.Ctx.ReadJSON(&data); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg2": err})
		return
	}

	// 2.验证数据
	if err := data.ValidateDelete(); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	id, err := utils.GetDecryptId(data.Id)
	if err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	if err := c.GroupService.Delete(id); err != nil {
		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
		return
	}

	c.Ctx.JSON(iris.Map{"code": 0, "msg": "删除成功"})
}
