package services

import (
	"fmt"
	"hongze/hz_crm_api/models/eta_trial"
	"hongze/hz_crm_api/services/alarm_msg"
)

// UpdateOldTrialUsersManualAuth 更新原试用客户手工录入权限(一次性)
func UpdateOldTrialUsersManualAuth() (err error) {
	// 从ETA试用平台的edb库中读取手工数据分类
	classifyList, e := eta_trial.GetETATrialManualClassify()
	if e != nil {
		fmt.Println(e.Error())
		return
	}
	classifyIds := make([]int, 0)
	for i := range classifyList {
		classifyIds = append(classifyIds, classifyList[i].ClassifyId)
	}

	// 查询未分配手工权限的试用客户Ids
	userList, e := eta_trial.GetNoAuthTrialUserIds()
	if e != nil {
		fmt.Println(e.Error())
		return
	}
	if len(userList) == 0 {
		fmt.Println("无客户需要更新手工权限")
		return
	}
	fmt.Println("classifyIds", classifyIds)

	// 遍历试用客户, ETA试用平台data库新增manual_user用户关联、manual_user_classify权限关联
	for i := range userList {
		fmt.Printf("用户%d-%s正在更新\n", userList[i].AdminId, userList[i].RealName)
		e = eta_trial.InsertTrialUserManualAuth(userList[i].AdminId, userList[i].RealName, classifyIds)
		if e != nil {
			fmt.Println(e.Error())
			return
		}
		fmt.Println("更新成功")
		//break // 试一个先
	}
	return
}

// CreateTrialUserManualAuth 新增试用客户手工录入权限
// 鉴于DB注册时即使不同库也不能同名的情况, 以下均使用原生SQL
func CreateTrialUserManualAuth(adminId int, adminRealName string) (err error) {
	defer func() {
		if err != nil {
			alarm_msg.SendAlarmMsg(fmt.Sprintf("新增试用客户手工录入权限失败, ErrMsg: %s", err.Error()), 3)
		}
	}()

	// 从ETA试用平台的edb库中读取手工数据分类
	classifyList, e := eta_trial.GetETATrialManualClassify()
	if e != nil {
		err = fmt.Errorf("获取手工数据分类失败, Err: %s", e.Error())
		return
	}
	classifyIds := make([]int, 0)
	for i := range classifyList {
		classifyIds = append(classifyIds, classifyList[i].ClassifyId)
	}

	// 新增用户及权限
	e = eta_trial.InsertTrialUserManualAuth(adminId, adminRealName, classifyIds)
	if e != nil {
		err = fmt.Errorf("新增手工数据权限失败, Err: %s", e.Error())
		return
	}
	return
}
