package shanghu

import (
	"duoduo/apis/shanghu/models"
	"duoduo/models/shanghu"
	"duoduo/tools/app"
	"errors"
	"github.com/gin-gonic/gin"
)

// 充值
func MerchantRecharge(c *gin.Context) {
	var inData models.MerchantRechargeRequest
	var merchantRecharge shanghu.MerchantRecharge
	var merchantClientTicket shanghu.MerchantClientTicket
	var clientOpenId shanghu.MerchantClientUser
	err := c.ShouldBindJSON(&inData)
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}

	// 查客户id
	clientOpenId.Code = inData.ClientCode
	clientInfo, err := clientOpenId.GetUserInfoByCode()
	if err != nil {
		if err.Error() == "record not found" {
			app.Error(c, 400, errors.New("请确认用户ID是否正确"), "请确认用户ID是否正确")
			return
		}

		app.Error(c, 400, err, err.Error())
		return
	}

	merchantRecharge.ID = inData.MerchantRechargeID

	merchantRechargeInfo, err := merchantRecharge.GetMerchantRecharge()
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}

	//json
	err = merchantClientTicket.Recharge(merchantRechargeInfo, clientInfo.ClientOpenID, inData.MerchantOpenID)
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}

	app.OK(c, nil, app.Success)

}

func GetMerchantRechargeList(c *gin.Context) {
	var inData models.MerchantRechargeTicketListRequest
	var sqlData shanghu.MerchantClientTicket
	var outDataList []models.MerchantRechargeTicketListReply

	//var merchantClientTicket shanghu.MerchantClientTicket

	err := c.ShouldBindJSON(&inData)
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}

	var pageSize = 10
	var pageIndex = 1

	if inData.PageSize != 0 {
		pageSize = inData.PageSize
	}
	if inData.PageIndex != 0 {
		pageIndex = inData.PageIndex
	}

	sqlData.ClientOpenID = inData.ClientOpenId
	sqlData.MerchantOpenID = inData.MerchantOpenId
	cashOutList, count, err := sqlData.MerchantRechargeTicketList(pageSize, pageIndex)
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}

	for _, v := range cashOutList {
		var merchant shanghu.Merchant
		var outData models.MerchantRechargeTicketListReply
		merchant.OpenId = v.MerchantOpenID
		merchantData, err := merchant.GetMerchant()
		if err != nil {
			app.Error(c, 500, err, err.Error())
			return
		}
		outData.MerchantOpenName = merchantData.MerchantName
		outData.MerchantOpenID = v.MerchantOpenID
		outData.ClientOpenID = v.ClientOpenID
		outData.RechargeProjectQuantity = v.RechargeProjectQuantity
		outData.RechargeProjectName = v.RechargeProjectName
		outData.TicketId = v.ID
		outDataList = append(outDataList, outData)
	}

	app.PageOK(c, outDataList, count, pageIndex, pageSize, app.Success)

}