package overseas_custom

import (
	"encoding/json"
	"hongze/hz_crm_api/controllers"
	"hongze/hz_crm_api/models"
	"hongze/hz_crm_api/models/overseas_custom"
	"hongze/hz_crm_api/utils"
	"time"
)

// 海外客户

type OverseasCustomController struct {
	controllers.BaseAuthController
}

// @Title 保存销售
// @Description 保存销售
// @Param	request  body  overseas_custom.OverseasCustomerSaleSaveReq  true  "type json string"
// @Success Ret=200 操作成功
// @router /sale/save [post]
func (this *OverseasCustomController) SaleSave() {
	br := new(models.BaseResponse).Init()
	defer func() {
		this.Data["json"] = br
		this.ServeJSON()
	}()

	sysUser := this.SysUser
	if sysUser == nil {
		br.Msg = "请登录"
		br.ErrMsg = "请登录,SysUser Is Empty"
		br.Ret = 408
		return
	}

	var req overseas_custom.OverseasCustomerSaleSaveReq
	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
	if err != nil {
		br.Msg = "参数解析异常!"
		br.ErrMsg = "参数解析失败,Err:" + err.Error()
		return
	}

	if len(req.AddSellerIdArr) <= 0 && len(req.DelSellerIdArr) <= 0 {
		br.Msg = "参数错误!"
		return
	}
	obj := new(overseas_custom.OverseasCustomerSale)
	list, err := obj.GetOverseasCustomerSaleAll()
	if err != nil && err.Error() != utils.ErrNoRow() {
		br.Msg = "保存失败!"
		br.ErrMsg = "保存失败,GetOverseasCustomerSaleAll,Err:" + err.Error()
		return
	}

	existMap := make(map[int]string)
	for _, v := range list {
		existMap[v.SellerId] = v.RealName
	}
	if len(req.AddSellerIdArr) > 0 {
		for _, v := range req.AddSellerIdArr {
			if _, ok := existMap[v]; !ok {
				item := new(overseas_custom.OverseasCustomerSale)
				item.SellerId = v
				item.CreateTime = time.Now()
				err = item.Create()
				if err != nil {
					br.Msg = "保存失败!"
					br.ErrMsg = "保存失败,Err:" + err.Error()
					return
				}
				err = obj.HandelOverseasCustomerSale(v, 1)
				if err != nil {
					br.Msg = "保存失败!"
					br.ErrMsg = "保存失败,处理特定销售客户信息失败,Err:" + err.Error()
					return
				}
				//修改客户状态
				err = obj.HandelCompanyStatus(v)
				if err != nil {
					br.Msg = "保存失败!"
					br.ErrMsg = "保存失败,同步客户状态失败,Err:" + err.Error()
					return
				}
			}
		}
	}

	if len(req.DelSellerIdArr) > 0 {
		for _, id := range req.DelSellerIdArr {
			obj.SellerId = id
			err = obj.Delete()
			if err != nil {
				br.Msg = "保存失败!"
				br.ErrMsg = "删除销售失败,Err:" + err.Error()
				return
			}
			err = obj.HandelOverseasCustomerSale(id, 1)
			if err != nil {
				br.Msg = "保存失败!"
				br.ErrMsg = "保存失败,处理特定销售客户信息失败,Err:" + err.Error()
				return
			}
			////修改客户状态
			//err = obj.HandelCompanyStatus(id)
			//if err != nil {
			//	br.Msg = "保存失败!"
			//	br.ErrMsg = "保存失败,同步客户状态失败,Err:" + err.Error()
			//	return
			//}
		}
	}

	br.Ret = 200
	br.Success = true
	br.Msg = "保存成功"
}

// @Title 获取已保存销售列表
// @Description 获取已保存销售列表
// @Success 200 {object} overseas_custom.OverseasCustomerSaleView
// @router /sale/list [get]
func (this *OverseasCustomController) SaleList() {
	br := new(models.BaseResponse).Init()
	defer func() {
		this.Data["json"] = br
		this.ServeJSON()
	}()

	sysUser := this.SysUser
	if sysUser == nil {
		br.Msg = "请登录"
		br.ErrMsg = "请登录,SysUser Is Empty"
		br.Ret = 408
		return
	}

	obj := new(overseas_custom.OverseasCustomerSale)
	list, err := obj.GetOverseasCustomerSaleAll()
	if err != nil && err.Error() != utils.ErrNoRow() {
		br.Msg = "获取失败!"
		br.ErrMsg = "获取失败,GetOverseasCustomerSaleAll,Err:" + err.Error()
		return
	}

	br.Ret = 200
	br.Success = true
	br.Msg = "获取成功"
	br.Data = list
}