package cases

import (
	"spaceofcheng/services/models/cases"
	"spaceofcheng/services/models/model"
	"spaceofcheng/services/service"
	"spaceofcheng/services/utils"

	"github.com/astaxie/beego"
)

// GetTagList 获取tag列表
func (s *CaseServ) GetTagList(caseid, caseids string, page, pageSize int) (map[string]interface{}, error) {
	if pageSize == 0 {
		pageSize = service.PAGENUM
	}
	if page == 0 {
		page = 1
	}
	tags, err := s.dao.GetTagList(caseid, caseids, page, pageSize)
	if err != nil {
		beego.Error(err)
		return nil, err
	}
	total, err := s.dao.GetTagCount(caseid, caseids)
	if err != nil {
		beego.Error(err)
		return nil, err
	}

	return map[string]interface{}{
		"list":     tags,
		"pagesize": pageSize,
		"pagenum":  total,
		"page":     page,
	}, err
}

// GetTagByID 根据ID获取标签
func (s *CaseServ) GetTagByID(tagid string) (*cases.Tag, error) {
	tag, err := s.dao.GetTagByID(tagid)
	if err != nil {
		beego.Error(err)
		return nil, err
	}
	if tag != nil {
		tagcases, err := s.dao.GetTagCaseByTagID(tagid)
		if err != nil {
			beego.Error(err)
			return nil, err
		}
		tag.TagCases = tagcases
	}
	return tag, err
}

// SaveTag 保存标签
func (s *CaseServ) SaveTag(tag model.SysTag, caseids string) (*model.SysTag, error) {
	var newInfo *model.SysTag
	var err error
	if tag.TagName == "" {
		return nil, utils.LogError("标签名称不能为空！")
	}
	if caseids == "" {
		return nil, utils.LogError("案场不能为空！")
	}
	if tag.TagId == "" {
		newInfo, err = s.dao.AddTag(tag)
	} else {
		err = s.dao.UpdateTag(tag)
		newInfo = &tag
	}
	if err != nil {
		beego.Error(err)
		return nil, err
	}
	err = s.dao.DelTagCase(newInfo.TagId)
	if err != nil {
		beego.Error(err)
		return nil, err
	}
	err = s.dao.SaveTagCase(newInfo.TagId, caseids)
	if err != nil {
		beego.Error(err)
		return nil, err
	}
	return newInfo, err
}

// DelTag 删除标签
func (s *CaseServ) DelTag(tagid string) error {
	err := s.dao.DeleteTag(tagid)
	return err
}
