package eta_training_video

import (
	"fmt"
	"hongze/hz_crm_api/models/eta_training_video"
	"hongze/hz_crm_api/utils"
	"strconv"
	"strings"
)

// FormatVideosToVideoItems 格式化视频列表
func FormatVideosToVideoItems(list []*eta_training_video.EtaTrainingVideo) (items []*eta_training_video.EtaTrainingVideoItem, err error) {
	items = make([]*eta_training_video.EtaTrainingVideoItem, 0)
	if len(list) == 0 {
		return
	}

	// 获取分类
	classifyMap := make(map[int]*eta_training_video.EtaTrainingVideoClassify)
	{
		classifyOB := new(eta_training_video.EtaTrainingVideoClassify)
		classifies, e := classifyOB.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取分类列表失败, Err: %s", e.Error())
			return
		}
		for _, v := range classifies {
			classifyMap[v.EtaTrainingVideoClassifyId] = v
		}
	}

	// 获取标签
	tagMap := make(map[int]*eta_training_video.EtaTrainingVideoTag)
	{
		tagOB := new(eta_training_video.EtaTrainingVideoTag)
		tags, e := tagOB.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
		if e != nil {
			err = fmt.Errorf("获取标签列表失败, Err: %s", e.Error())
			return
		}
		for _, v := range tags {
			tagMap[v.EtaTrainingVideoTagId] = v
		}
	}

	for _, v := range list {
		b := new(eta_training_video.EtaTrainingVideoItem)
		b.VideoId = v.EtaTrainingVideoId
		b.VideoCode = v.VideoCode
		b.Title = v.Title
		b.Introduce = v.Introduce
		b.CoverImg = v.CoverImg
		b.VideoUrl = v.VideoUrl
		b.PublishState = v.PublishState
		b.PublishTime = utils.TimeTransferString(utils.FormatDateTime, v.PublishTime)
		b.ViewTotal = v.ViewTotal
		b.CreateTime = utils.TimeTransferString(utils.FormatDateTime, v.CreateTime)
		b.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, v.ModifyTime)

		// 分类
		if v.ClassifyIds != "" {
			strClassifyIdArr := strings.Split(v.ClassifyIds, ",")
			if len(strClassifyIdArr) > 0 {
				arr := make([]*eta_training_video.EtaTrainingVideoClassifyItem, 0)
				for _, s := range strClassifyIdArr {
					id, _ := strconv.Atoi(s)
					c := classifyMap[id]
					if c != nil {
						arr = append(arr, &eta_training_video.EtaTrainingVideoClassifyItem{
							ClassifyId:   c.EtaTrainingVideoClassifyId,
							ClassifyName: c.ClassifyName,
							ParentId:     c.ParentId,
							Sort:         c.Sort,
						})
					}
				}
				tree := GetClassifyTreeRecursive(arr, 0)
				if len(tree) > 0 {
					b.Classify = tree[0]
				}
			}
		}

		// 标签
		if v.TagIds != "" {
			strTagIdArr := strings.Split(v.TagIds, ",")
			if len(strTagIdArr) > 0 {
				b.Tags = make([]*eta_training_video.EtaTrainingVideoTagItem, 0)
				for _, s := range strTagIdArr {
					id, _ := strconv.Atoi(s)
					t := tagMap[id]
					if t != nil {
						b.Tags = append(b.Tags, &eta_training_video.EtaTrainingVideoTagItem{
							TagId:      t.EtaTrainingVideoTagId,
							TagName:    t.TagName,
							VideoTotal: t.VideoTotal,
							CreateTime: utils.TimeTransferString(utils.FormatDateTime, t.CreateTime),
							ModifyTime: utils.TimeTransferString(utils.FormatDateTime, t.ModifyTime),
						})
					}
				}
			}
		}

		items = append(items, b)
	}
	return
}