package yb

import (
	"hongze/hz_crm_api/models/yb"
)

// GetAllActivityType 获取全部的活动分类
func GetAllActivityType() (list []*yb.ActivityTypeList, err error) {
	list, err = yb.GetActivityTypeListByActivityTypePId(0)
	if err != nil {
		return
	}

	for _, v := range list {
		tmpList, tmpErr := yb.GetActivityTypeListByActivityTypePId(v.ActivityTypeId)
		if tmpErr != nil {
			err = tmpErr
			return
		}
		v.ChildList = tmpList
	}
	return
}

// UpdateTeleconferenceActivityType 更新电话会活动分类(目前仅双周报)
//func UpdateTeleconferenceActivityType(classifyId int) (err error) {
//	defer func() {
//		if err != nil {
//			go alarm_msg.SendAlarmMsg("更新FICC电话会活动分类失败, ErrMsg: "+err.Error(), 3)
//		}
//	}()
//
//	parentName := "双周报"
//	// 查询分类信息
//	classify, e := models.GetClassifyById(classifyId)
//	if e != nil {
//		err = errors.New("获取分类信息失败, Err: " + e.Error())
//		return
//	}
//	if classify.ParentId <= 0 || classify.HasTeleconference != 1 {
//		return
//	}
//	parent, e := models.GetClassifyById(classify.ParentId)
//	if e != nil {
//		err = errors.New("获取一级分类信息失败, Err: " + e.Error())
//		return
//	}
//	if parent.ClassifyName != parentName {
//		return
//	}
//
//	// 查询分类关联的权限
//	permissionIds := ""
//	permissions, e := models.GetPermission(classify.ClassifyName)
//	if e != nil {
//		err = errors.New("二级分类查询权限失败, Err: " + e.Error())
//		return
//	}
//	permissionIdArr := make([]string, 0)
//	for i := range permissions {
//		permissionIdArr = append(permissionIdArr, strconv.Itoa(permissions[i].ChartPermissionId))
//	}
//	permissionIds = strings.Join(permissionIdArr, ",")
//
//	// 根据分类名称查询活动类型
//	activityType, e := yb.GetActivityTypeByName(classify.ClassifyName)
//	if e != nil && e.Error() != utils.ErrNoRow() {
//		err = errors.New("获取活动类型失败, Err: " + e.Error())
//		return
//	}
//	// 不存在则新增活动类型
//	if activityType == nil {
//		// 新增
//		item := &yb.ActivityType{
//			ActivityTypeName:  classify.ClassifyName,
//			Pid:               1, // 分析师电话会
//			ChartPermissionId: permissionIds,
//			FrontIsShow:       1,
//			CreateTime:        time.Now().Local(),
//		}
//		if e = yb.AddActivityType(item); e != nil {
//			err = errors.New("新增FICC电话会活动分类失败, Err: " + e.Error())
//			return
//		}
//	} else {
//		updateCols := []string{"ChartPermissionId"}
//		activityType.ChartPermissionId = permissionIds
//		if e = activityType.Update(updateCols); e != nil {
//			err = errors.New("更新FICC电话会活动分类权限失败, Err: " + e.Error())
//			return
//		}
//	}
//
//	return
//}

// SyncClassifyAndFiccActivityType 同步关联报告电话会的分类
//func SyncClassifyAndFiccActivityType() (err error) {
//	defer func() {
//		if err != nil {
//			fmt.Println(err.Error())
//			alarm_msg.SendAlarmMsg("同步关联电话会的报告分类失败, ErrMsg: "+err.Error(), 3)
//		}
//	}()
//
//	// 获取关联了电话会的二级分类及权限
//	cond := ` AND parent_id > 0 AND relate_tel = 1`
//	classifies, e := models.GetClassifyByCondition(cond, "", make([]interface{}, 0))
//	if e != nil {
//		err = fmt.Errorf("获取关联电话会二级分类失败, Err: %s", e.Error())
//		return
//	}
//	classifyNames := make([]string, 0)
//	for _, c := range classifies {
//		classifyNames = append(classifyNames, c.ClassifyName)
//	}
//	permissions, e := models.GetSecondaryClassifyChartPermissions(classifyNames)
//	if e != nil {
//		err = fmt.Errorf("获取二级分类权限失败, Err: %s", e.Error())
//		return
//	}
//	permissionMap := make(map[string]string)
//	for _, p := range permissions {
//		permissionMap[p.ClassifyName] = p.ChartPermissionIds
//	}
//
//	classifyList := make([]*models.RelateTelSecClassifyWithPermissions, 0)
//	classifyMap := make(map[string]*models.RelateTelSecClassifyWithPermissions)
//	for _, c := range classifies {
//		t := new(models.RelateTelSecClassifyWithPermissions)
//		t.Id = c.Id
//		t.ClassifyName = c.ClassifyName
//		t.ChartPermissionIds = permissionMap[c.ClassifyName]
//		classifyList = append(classifyList, t)
//		classifyMap[c.ClassifyName] = t
//	}
//
//	// 获取所有分析师电话会活动分类
//	typeCond := ` AND pid = 1`
//	typePars := make([]interface{}, 0)
//	typeList, e := yb.GetActivityTypeByCondition(typeCond, typePars)
//	if e != nil {
//		err = fmt.Errorf("获取分析师电话会下的活动分类失败, Err: %s", e.Error())
//		return
//	}
//	typeNameArr := make([]string, 0)
//	for _, t := range typeList {
//		typeNameArr = append(typeNameArr, t.ActivityTypeName)
//	}
//
//	// 遍历活动分类, 匹配不到相应的报告分类名一律隐藏
//	updateCols := []string{"FrontIsShow", "ChartPermissionId"}
//	for _, t := range typeList {
//		c := classifyMap[t.ActivityTypeName]
//		t.FrontIsShow = 0
//		if c != nil {
//			t.FrontIsShow = 1
//			t.ChartPermissionId = c.ChartPermissionIds
//		}
//		if e = t.Update(updateCols); e != nil {
//			err = fmt.Errorf("更新FICC活动分类失败, Err: %s", e.Error())
//			return
//		}
//	}
//
//	// 新增未同步的报告分类
//	addClassify := make([]*models.RelateTelSecClassifyWithPermissions, 0)
//	for _, c := range classifyList {
//		if !utils.InArrayByStr(typeNameArr, c.ClassifyName) {
//			addClassify = append(addClassify, c)
//		}
//	}
//	if len(addClassify) > 0 {
//		for _, c := range addClassify {
//			t := &yb.ActivityType{
//				ActivityTypeName:  c.ClassifyName,
//				Pid:               1, // 分析师电话会
//				ChartPermissionId: c.ChartPermissionIds,
//				FrontIsShow:       1,
//				CreateTime:        time.Now().Local(),
//			}
//			if e = yb.AddActivityType(t); e != nil {
//				err = fmt.Errorf("新增FICC活动分类失败, Err: " + e.Error())
//				return
//			}
//		}
//	}
//	return
//}
