package models

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

type CygxApplyRecord struct {
	ApplyRecordId       int       `orm:"column(apply_record_id);pk" description:"申请试用id"`
	UserId              int       `description:"用户ID"`
	BusinessCardUrl     string    `description:"名片地址"`
	RealName            string    `description:"姓名"`
	CompanyName         string    `description:"公司名称"`
	CompanyIdPay        int       `description:"已付费客户公司id"`
	CompanyIdType       int       `description:"用户状态，1：潜在客户 、2：现有客户 、3：FICC客户 、4：现有客户（正式，无对应权限） 、5：现有客户（试用，无对应权限）  、6：现有客户（试用暂停） 、7：现有客户（冻结） 、8：现有客户（流失） "`
	CompanyNamePay      string    `description:"公司名称"`
	Mobile              string    `description:"手机号"`
	CreateTime          time.Time `description:"创建时间"`
	ApplyMethod         int       `description:"1:已付费客户申请试用，2:非客户申请试用"`
	RegisterPlatform    int       `description:"来源 1小程序，2：网页"`
	InviteCompanySource int       `description:"来源 1小程序，2：网页"`
	SourceId            int       `description:"资源ID"`
	Source              string    `description:"资源类型 报告 ：article 、图表 ：newchart、微路演 ：roadshow、活动 ：activity、活动视频：activityvideo、活动音频：activityvoice、专项调研活动：activityspecial"`
	Title               string    `description:"标题"`
}

type CygxApplyRecordResp struct {
	ApplyRecordId       int       `orm:"column(apply_record_id);pk" description:"申请试用id"`
	UserId              int       `description:"用户ID"`
	BusinessCardUrl     string    `description:"名片地址"`
	RealName            string    `description:"姓名"`
	CompanyName         string    `description:"公司名称"`
	CompanyIdPay        int       `description:"已付费客户公司id"`
	CompanyIdType       int       `description:"用户状态，1：潜在客户 、2：现有客户 、3：FICC客户 、4：现有客户（正式，无对应权限） 、5：现有客户（试用，无对应权限）  、6：现有客户（试用暂停） 、7：现有客户（冻结） 、8：现有客户（流失） "`
	CompanyNamePay      string    `description:"公司名称"`
	Mobile              string    `description:"手机号"`
	CreateTime          time.Time `description:"创建时间"`
	ApplyMethod         int       `description:"1:已付费客户申请试用，2:非客户申请试用"`
	RegisterPlatform    int       `description:"来源 1小程序，2：网页"`
	InviteCompanySource int       `description:"三方来源 ，1：弘则本身，2:络町"`
	ApplicationSource   string    `description:"申请来源"`
}

func AddApplyRecord(item *CygxApplyRecord) (err error) {
	o, err := orm.NewOrm().Begin()
	if err != nil {
		return
	}
	defer func() {
		if err != nil {
			o.Rollback()
		} else {
			o.Commit()
		}
	}()
	_, err = o.Insert(item)
	if err != nil {
		return
	}

	ow := orm.NewOrmUsingDB("weekly_report")
	msql := `UPDATE  wx_user
		SET
		  note = ?,
		  is_note = 1,
		  apply_method = ?,
          real_name=?,
		  mobile=?
		WHERE user_id = ? `
	_, err = ow.Raw(msql, item.CompanyName, item.ApplyMethod, item.RealName, item.Mobile, item.UserId).Exec()
	return
}

func GetApplyRecordCount(userId int) (count int, err error) {
	o := orm.NewOrm()
	sql := `SELECT COUNT(1) AS count FROM cygx_apply_record WHERE user_id=? AND status=0 `
	err = o.Raw(sql, userId).QueryRow(&count)
	return
}

// 通过手机号获取详情
func GetCygxApplyRecordByMobile(mobile string) (item *CygxApplyRecord, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM cygx_apply_record   WHERE mobile=? AND status=0   ORDER BY apply_record_id DESC   LIMIT 1 `
	err = o.Raw(sql, mobile).QueryRow(&item)
	return
}

// 通过ID获取详情
func GetCygxApplyRecordById(applyRecordId int) (item *CygxApplyRecordResp, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM cygx_apply_record  WHERE apply_record_id=?  `
	err = o.Raw(sql, applyRecordId).QueryRow(&item)
	return
}

type CygxApplyRecordDetialResp struct {
	Detail *CygxApplyRecordResp
}
