/*
 * @description: 版本更新信息
 * @Author: CP
 * @Date: 2021-06-24 10:06:50
 * @FilePath: \construction_management\web\backstage\version_bs.go
 */
package backstage

import (
	"fmt"
	"log"

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

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

// 获得版本信息列表
func (c *VersionBs) PostList() {

	var (
		err error
	)

	pageData := viewmodels.Version{}
	if err = c.Ctx.ReadJSON(&pageData); err != nil {
		log.Println("folder-ValidRule-ReadForm转换异常, error=", err)
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	if err = pageData.ValidatePage(); err != nil {
		log.Println("参数验证错误, error=", err)
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	// 获得项目信息
	dataList, total := c.VersionService.GetListBs(pageData)
	data := map[string]interface{}{
		"items": dataList,
		"total": total,
	}
	c.Ctx.JSON(iris.Map{
		"code": 0,
		"msg":  "",
		"data": data,
	})
}

// 新增版本信息
func (c *VersionBs) PostAdd() {

	inputData := viewmodels.Version{}
	if err := c.Ctx.ReadJSON(&inputData); err != nil {
		log.Println("folder-ValidRule-ReadForm转换异常, error=", err)
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	if err := inputData.ValidateAdd(); err != nil {
		log.Println("参数验证错误, error=", err)
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

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

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

// 新增版本信息
func (c *VersionBs) PostUpdate() {

	inputData := viewmodels.Version{}
	if err := c.Ctx.ReadJSON(&inputData); err != nil {
		log.Println("folder-ValidRule-ReadForm转换异常, error=", err)
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	if err := inputData.ValidateAdd(); err != nil {
		log.Println("参数验证错误, error=", err)
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

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

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

// 删除版本信息
func (c *VersionBs) DeleteDelete() {
	inputData := viewmodels.Version{}
	if err := c.Ctx.ReadJSON(&inputData); err != nil {
		log.Println("folder-ValidRule-ReadForm转换异常, error=", err)
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

	if err := inputData.ValidateDel(); err != nil {
		log.Println("参数验证错误, error=", err)
		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
		return
	}

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

	if err := c.VersionService.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": "删除成功"})
}
