package cygx

import (
	"errors"
	"fmt"
	"hongze/hz_crm_api/models"
	"hongze/hz_crm_api/models/company"
	"hongze/hz_crm_api/models/cygx"
	"hongze/hz_crm_api/services"
	"hongze/hz_crm_api/services/alarm_msg"
	"hongze/hz_crm_api/utils"
	"strconv"
)

//func init() {
//	SendWxMsgCygxQuestionnaire(2)
//}

// 投票发布时,给所有开通买方研选正式试用的客户
func SendWxMsgCygxQuestionnaire(questionnaireId int) (err error) {
	defer func() {
		if err != nil {
			fmt.Println(err)
			go alarm_msg.SendAlarmMsg(fmt.Sprint("投票发布时,给所有开通买方研选正式试用的客户,questionnaireId:", questionnaireId, err.Error()), 2)
		}
	}()

	//获取问卷详情
	detail, e := cygx.GetCygxQuestionnaireDetail(questionnaireId)
	if e != nil {
		err = errors.New("GetCygxQuestionnaireDetail, Err: " + e.Error())
		return
	}

	var keyword1 string
	var keyword2 string
	var keyword3 string
	var keyword4 string
	var companyIds []int

	var condition string
	var pars []interface{}
	condition = "  AND  chart_permission_id = 31 AND `status` IN ('正式','试用')  "
	//获取所有开通买方研选正式试用的客户列表
	listCompany, e := company.GetCompanyReportPermissionList(condition, pars, 0, 0)
	if e != nil && e.Error() != utils.ErrNoRow() {
		err = errors.New("GetCygxQuestionnaireDetail, Err: " + e.Error())
		return
	}
	for _, v := range listCompany {
		companyIds = append(companyIds, v.CompanyId)
	}

	//获取相关的用户
	userList, e := models.GetWxUserByCompanyIds(companyIds)
	if e != nil && e.Error() != utils.ErrNoRow() {
		err = errors.New("GetWxUserByCompanyIds, Err: " + e.Error())
		return
	}
	mobile := make([]string, 0)
	for _, v := range userList {
		mobile = append(mobile, v.Mobile)
	}

	//获取用户对应的Openid
	openIdList, e := cygx.GetUserRecordListByMobileArr(mobile)
	if e != nil {
		err = errors.New("GetSellerByAdminId, Err: " + e.Error())
		return
	}

	if len(openIdList) == 0 {
		return
	}
	keyword1 = "买方研选【" + detail.ActivityTypeName + "】主题投票"
	keyword2 = "请选择您感兴趣的主题"

	openIdArr := make([]string, 0)
	for _, v := range openIdList {
		openIdArr = append(openIdArr, v.OpenId)
	}
	redirectUrl := ""
	if utils.RunMode == "release" {
		redirectUrl = utils.WX_MSG_PATH_QUESTIONNAIRE_DETAIL + strconv.Itoa(questionnaireId)
	}
	sendInfo := new(services.SendWxTemplate)
	sendInfo.Keyword1 = keyword1
	sendInfo.Keyword2 = keyword2
	sendInfo.Keyword3 = keyword3
	sendInfo.Keyword4 = keyword4
	sendInfo.TemplateId = utils.WxMsgTemplateIdActivityChangeApplyXzs
	sendInfo.RedirectUrl = redirectUrl
	sendInfo.RedirectTarget = 3
	sendInfo.Resource = strconv.Itoa(questionnaireId)
	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
	sendInfo.OpenIdArr = openIdArr
	e = services.SendTemplateMsg(sendInfo)
	if e != nil {
		err = errors.New("SendTemplateMsg, Err: " + e.Error())
		return
	}
	return
}