package company

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

// CompanyProductUpdateLog 客户产品变更日志表
type CompanyProductUpdateLog struct {
	Id          int       `orm:"column(id);pk"`
	CompanyId   int       `description:"客户id"`
	ProductId   int       `description:"产品id"`
	Status      string    `description:"变更后的状态"`
	SellerId    int       `description:"销售id"`
	SellerName  string    `description:"销售名称"`
	Source      string    `description:"来源"`
	IsFormal    int       `description:"是否已经转正式,0是没有转正式,1是已经转过正式"`
	StartDate   time.Time `description:"开始日期"`
	EndDate     time.Time `description:"结束日期"`
	RealEndDate time.Time `description:"实际结束日期"`
	CreateTime  time.Time `description:"创建时间"`
}

// AddCompanyProductUpdateLog 新增客户产品变更日志
func AddCompanyProductUpdateLog(item *CompanyProductUpdateLog) (lastId int64, err error) {
	o := orm.NewOrm()
	lastId, err = o.Insert(item)
	if err != nil {
		return
	}
	item.Id = int(lastId)
	return
}

type CompanyReportRecordGroup struct {
	AdminId int `description:"所属销售id"`
	//AdminName string `description:"所属销售名称"`
	Num        int    `description:"汇总次数"`
	CompanyIds string `description:"客户id字符串"`
}

// GetGroupCompanyReportRecordGroupList 获取销售分组数据
func GetGroupCompanyReportRecordGroupList(condition string, pars []interface{}) (list []*CompanyReportRecordGroup, err error) {
	o := orm.NewOrm()
	sql := ` SELECT seller_id as admin_id,count(DISTINCT(company_id)) num,GROUP_CONCAT(DISTINCT company_id SEPARATOR ',') AS company_ids
				FROM  company_product_update_log 
				WHERE 1=1  
 `
	if condition != "" {
		sql += condition
	}
	sql += ` GROUP BY seller_id`
	_, err = o.Raw(sql, pars).QueryRows(&list)

	return
}

// GetCompanyProductUpdateLogList 获取客户变更试用的数据
func GetCompanyProductUpdateLogList() (list []*CompanyProductUpdateLog, err error) {
	o := orm.NewOrm()
	//add
	//receive
	//thaw
	//apply_receive
	//delay
	sql := ` select * from company_product_update_log where source in("add","receive","thaw","apply_receive");`
	_, err = o.Raw(sql).QueryRows(&list)
	return
}

// GetCompanyProductLogItem 获取客户变更试用的数据
func GetCompanyProductLogItem(companyId, productId int, createTime time.Time) (item *CompanyProductUpdateLog, err error) {
	o := orm.NewOrm()
	sql := ` select * from company_product_log where company_id=? and product_id=? and create_time >= ? and create_time <=?`
	err = o.Raw(sql, companyId, productId, createTime.Add(-2*60*time.Second), createTime.Add(2*60*time.Second)).QueryRow(&item)
	return
}