package chart_theme

import (
	"eta/eta_mobile/models/data_manage"
	"eta/eta_mobile/utils"
	"github.com/beego/beego/v2/client/orm"
	"time"
)

// ChartThemeDefaultData
// @Description: 图表默认数据
type ChartThemeDefaultData struct {
	EdbDataId     int       `description:"指标数据ID" orm:"column(edb_data_id);pk"`
	EdbInfoId     int       `description:"指标ID"`
	EdbCode       string    `description:"指标编码"`
	DataTime      string    //`json:"-" description:"数据日期"`
	DataTimestamp int64     `description:"数据日期"`
	Value         float64   `description:"数据值"`
	ModifyTime    time.Time `description:"修改时间"`
	CreateTime    time.Time `description:"创建时间"`
}

// GetChartThemeDefaultDataList
// @Description: 获取指标的数据（日期正序返回）
// @author: Roc
// @datetime 2023-12-13 16:40:14
// @param endInfoId int
// @return list []*ChartThemeDefaultData
// @return err error
func GetChartThemeDefaultDataList(endInfoId int) (list []*ChartThemeDefaultData, err error) {
	sql := `SELECT * FROM chart_theme_default_data WHERE edb_info_id=? `

	sql += ` ORDER BY data_time ASC `
	o := orm.NewOrmUsingDB("data")
	_, err = o.Raw(sql, endInfoId).QueryRows(&list)
	return
}

// Update
// @Description: 更新
// @author: Roc
// @receiver m
// @datetime 2023-12-13 16:40:04
// @param cols []string
// @return err error
func (m *ChartThemeDefaultData) Update(cols []string) (err error) {
	o := orm.NewOrmUsingDB("data")
	_, err = o.Update(m, cols...)

	return
}

// GetChartThemeDefaultDataItemList
// @Description: 获取指标的数据（日期正序返回）
// @author: Roc
// @datetime 2023-12-13 16:40:22
// @param endInfoId int
// @return list []*ChartThemeDefaultDataItem
// @return err error
func GetChartThemeDefaultDataItemList(endInfoId int, startDate string) (list []*data_manage.EdbDataList, err error) {
	sql := `SELECT edb_data_id,edb_info_id,data_time,value,data_timestamp FROM chart_theme_default_data WHERE edb_info_id=? `
	var pars []interface{}
	if startDate != "" {
		sql += ` AND data_time>=? `
		pars = append(pars, startDate)
	}

	sql += ` ORDER BY data_time ASC `
	o := orm.NewOrmUsingDB("data")
	_, err = o.Raw(sql, endInfoId, pars).QueryRows(&list)
	return
}

// GetChartEdbMappingListByEdbInfoId
// @Description: 返回模拟的mapping假数据
// @author: Roc
// @datetime 2023-12-14 10:03:20
// @param edbInfoIdList []int
// @return list []*data_manage.ChartEdbInfoMapping
// @return err error
func GetChartEdbMappingListByEdbInfoId(edbInfoIdList []int) (list []*data_manage.ChartEdbInfoMapping, err error) {
	num := len(edbInfoIdList)
	if num <= 0 {
		return
	}
	o := orm.NewOrmUsingDB("data")
	sql := ` SELECT * FROM chart_theme_default_edb_info WHERE edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
              `
	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&list)

	return
}
