package chart_info

import (
	"hongze/hongze_yb/global"
	"time"
)

type ChartInfoView struct {
	ChartInfoId       int    `orm:"column(chart_info_id);pk"`
	ChartName         string `description:"来源名称"`
	ChartClassifyId   int    `description:"图表分类id"`
	ChartClassifyName string `description:"图表名称"`
	SysUserId         int
	SysUserRealName   string
	UniqueCode        string `description:"图表唯一编码"`
	CreateTime        time.Time
	ModifyTime        time.Time
	DateType          int    `description:"日期类型:1:00年至今,2:10年至今,3:15年至今，4：年初至今，5:自定义时间"`
	StartDate         string `description:"自定义开始日期"`
	EndDate           string `description:"自定义结束日期"`
	IsSetName         int    `description:"设置名称"`
	EdbInfoIds        string `description:"指标id"`
	ChartType         int    `description:"生成样式:1:曲线图,2:季节性图"`
	Calendar          string `description:"公历/农历"`
	SeasonStartDate   string `description:"季节性图开始日期"`
	SeasonEndDate     string `description:"季节性图开始日期"`
	ChartImage        string `description:"图表图片"`
	Sort              int    `description:"排序字段，数字越小越排前面"`
	IsAdd             bool   `description:"true:已加入我的图库,false:未加入我的图库"`
	MyChartId         int
	MyChartClassifyId string `description:"我的图表分类，多个用逗号隔开"`
	EdbEndDate        string `description:"指标最新更新日期"`
	LeftMin           string `description:"图表左侧最小值"`
	LeftMax           string `description:"图表左侧最大值"`
	RightMin          string `description:"图表右侧最小值"`
	RightMax          string `description:"图表右侧最大值"`
	//ChartClassify     []*chart_classify.ChartClassifyView
}

type SaveChartInfoReq struct {
	ChartEdbInfoList []*ChartSaveItem `description:"指标及配置信息"`
	ChartInfoId      int              `description:"图表id,新增时传0"`
	DateType         int              `description:"日期类型:1:00年至今,2:10年至今,3:15年至今，4：年初至今，5:自定义时间,6:起始日期至今"`
	StartDate        string           `description:"自定义开始日期"`
	EndDate          string           `description:"自定义结束日期"`
	Calendar         string           `description:"公历/农历"`
	SeasonStartDate  string           `description:"季节性图开始日期"`
	SeasonEndDate    string           `description:"季节性图开始日期"`
	LeftMin          string           `description:"图表左侧最小值"`
	LeftMax          string           `description:"图表左侧最大值"`
	RightMin         string           `description:"图表右侧最小值"`
	RightMax         string           `description:"图表右侧最大值"`
}

type ChartSaveItem struct {
	EdbInfoId   int     `description:"指标id"`
	MaxData     float64 `description:"上限"`
	MinData     float64 `description:"下限"`
	IsOrder     bool    `description:"true:正序,false:逆序"`
	IsAxis      int     `description:"1:左轴,0:右轴"`
	EdbInfoType int     `description:"1:标准指标,0:领先指标"`
	LeadValue   int     `description:"领先值"`
	LeadUnit    string  `description:"领先单位"`
	ChartStyle  string  `description:"图表类型"`
	ChartColor  string  `description:"颜色"`
	ChartWidth  float64 `description:"线条大小"`
}

// GetChartInfoViewById 通过Id获取图表展示信息
func GetChartInfoViewById(chartInfoId int) (item *ChartInfoView, err error) {
	sql := `SELECT * FROM chart_info WHERE chart_info_id = ? `
	err = global.MYSQL["data"].Raw(sql, chartInfoId).First(&item).Error
	//err = global.MYSQL["data"].Model(ChartInfo{}).Where("chart_info_id = ?", chartInfoId).First(&item).Error
	return
}

// GetChartInfoViewById 通过ID获取图表数据库信息
func GetChartInfoById(chartInfoId int) (item *ChartInfo, err error) {
	err = global.MYSQL["data"].Model(ChartInfo{}).Where("chart_info_id = ?", chartInfoId).First(&item).Error
	return
}