package models

import (
	"github.com/beego/beego/v2/client/orm"
	"time"
)

type CygxQuestionnaireVote struct {
	QuestionnaireVoteId  int `orm:"column(questionnaire_vote_id);pk"`
	QuestionnaireId      int `description:"问卷ID"`
	QuestionnaireThemeId int `description:"问卷主题ID"`
	UserId               int `description:"用户ID"`
	CreateTime           time.Time
	Mobile               string    `description:"手机号"`
	Email                string    `description:"邮箱"`
	CompanyId            int       `description:"公司id"`
	CompanyName          string    `description:"公司名称"`
	ModifyTime           time.Time `description:"修改时间"`
	RealName             string    `description:"用户实际名称"`
	SellerName           string    `description:"所属销售"`
	RegisterPlatform     int       `description:"来源 1小程序,2:网页"`
}

type CygxQuestionnaireVoteOtherTheme struct {
	QuestionnaireVoteOtherThemeId int `orm:"column(questionnaire_vote_other_theme_id);pk"`
	QuestionnaireId               int `description:"问卷ID"`
	UserId                        int `description:"用户ID"`
	CreateTime                    time.Time
	Mobile                        string    `description:"手机号"`
	Email                         string    `description:"邮箱"`
	CompanyId                     int       `description:"公司id"`
	CompanyName                   string    `description:"公司名称"`
	ModifyTime                    time.Time `description:"修改时间"`
	RealName                      string    `description:"用户实际名称"`
	SellerName                    string    `description:"所属销售"`
	Content                       string    `description:"内容"`
	RegisterPlatform              int       `description:"来源 1小程序,2:网页"`
}

// 获取数量
func GetCygxQuestionnaireVoteCount(condition string, pars []interface{}) (count int, err error) {
	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_questionnaire_vote as art WHERE 1= 1  `
	if condition != "" {
		sqlCount += condition
	}
	o := orm.NewOrm()
	err = o.Raw(sqlCount, pars).QueryRow(&count)
	return
}

type CygxQuestionnaireVoteReq struct {
	QuestionnaireId       int    `description:"问卷ID"`
	QuestionnaireThemeIds []int  `description:"问卷主题ID"`
	Content               string `description:"内容"`
}

// 添加
func AddCygxQuestionnaireVote(voteItems []*CygxQuestionnaireVote, otherItem *CygxQuestionnaireVoteOtherTheme) (err error) {
	o := orm.NewOrm()
	to, err := o.Begin()
	if err != nil {
		return
	}
	defer func() {
		if err != nil {
			_ = to.Rollback()
		} else {
			_ = to.Commit()
		}
	}()

	//其它主题类型提交需要写入的信息
	if otherItem.Content != "" {
		_, err = to.Insert(otherItem)
		if err != nil {
			return
		}

		//更新其他主题投票数量
		sql := ` UPDATE cygx_questionnaire SET other_theme_total =  other_theme_total +1 WHERE questionnaire_id = ?  `
		_, err = o.Raw(sql, otherItem.QuestionnaireId).Exec()
	}
	//主题ID提交问卷需要写入的信息
	for _, v := range voteItems {
		_, err = to.Insert(v)
		if err != nil {
			return
		}
	}
	return
}