package sandbox

import (
	sandboxModel "hongze/hongze_yb/models/tables/sandbox"
	"time"
)

// SandboxItem 沙盘图
type SandboxItem struct {
	SandboxID           uint32    `gorm:"primaryKey;column:sandbox_id;type:int(9) unsigned;not null" json:"sandbox_id"`                                                   // 沙盘id
	Name                string    `gorm:"index:idx_name;column:name;type:varchar(64);not null;default:''" json:"name"`                                                    // 沙盘名称
	ChartPermissionID   uint32    `gorm:"column:chart_permission_id;type:int(9) unsigned;not null;default:0" json:"chart_permission_id"`                                  // 品种id
	ChartPermissionName string    `gorm:"index:idx_chart_permission_name;column:chart_permission_name;type:varchar(32);not null;default:''" json:"chart_permission_name"` // 品种名称(冗余字段,避免列表页查询时再去关联表查询)
	CurrVersion         uint32    `gorm:"column:curr_version;type:int(9) unsigned;not null;default:0" json:"curr_version"`                                                // 当前版本
	Code                string    `gorm:"column:code;type:varchar(255);not null" json:"code"`                                                                             // 沙盘code
	PicURL              string    `gorm:"column:pic_url;type:varchar(255);not null;default:''" json:"pic_url"`                                                            // 沙盘图片
	OpUserName          string    `gorm:"index:idx_op_user_name;column:op_user_name;type:varchar(32);not null;default:''" json:"op_user_name"`                            // 最近一次编辑的用户名称(冗余字段,避免查表)
	ModifyTime          time.Time `gorm:"column:modify_time;type:timestamp;default:CURRENT_TIMESTAMP" json:"modify_time"`                                                 // 最近一次更新时间
}

// GetList 获取沙盘列表数据
func GetList(chartPermissionId int, companyPermissionIdList []int, keyword string, page, pageSize int) (total int64, list []SandboxItem, err error, errMsg string) {
	errMsg = `获取失败`
	var condition string
	var pars []interface{}

	condition = ` s.is_delete = ? `
	pars = append(pars, 0)

	// 客户拥有的品种权限
	if len(companyPermissionIdList) > 0 {
		condition += " AND c.chart_permission_id in (?) "
		pars = append(pars, companyPermissionIdList)
	}

	if chartPermissionId > 0 {
		condition += " AND c.chart_permission_id=? "
		pars = append(pars, chartPermissionId)
	}

	if keyword != "" {
		//condition += ` AND  ( name LIKE '%` + keyword + `%'  OR  chart_permission_name LIKE '%` + keyword + `%' )`
		condition += ` AND  ( s.name LIKE '%` + keyword + `%' )`
	}

	//获取指标信息
	tmpTotal, tmpList, tmpErr := sandboxModel.GetPageListByWhere(condition, pars, (page-1)*pageSize, pageSize)
	if tmpErr != nil {
		err = tmpErr
		return
	}

	total = tmpTotal

	for _, v := range tmpList {
		tmpSandBox := SandboxItem{
			SandboxID:           v.SandboxID,
			Name:                v.Name,
			ChartPermissionID:   v.ChartPermissionID,
			ChartPermissionName: v.ChartPermissionName,
			CurrVersion:         v.CurrVersion,
			Code:                v.Code,
			PicURL:              v.PicURL,
			OpUserName:          v.OpUserName,
			ModifyTime:          v.ModifyTime,
			//CreateTime:          time.Time{},
		}
		list = append(list, tmpSandBox)
	}
	return
}

// GetPermissionCountList 获取沙盘列表数据
func GetPermissionCountList(companyPermissionIdList []int) (list []*sandboxModel.PermissionSandboxCount, err error, errMsg string) {
	errMsg = `获取失败`
	var condition string
	var pars []interface{}

	condition = ` is_delete = ? `
	pars = append(pars, 0)

	// 客户拥有的品种权限
	if len(companyPermissionIdList) > 0 {
		condition += " AND chart_permission_id in (?) "
		pars = append(pars, companyPermissionIdList)
	}

	//获取指标信息
	list, err = sandboxModel.GetPermissionCountListByWhere(condition, pars)
	return
}