package user

import (
	"duoduo/models/mysql"
	"duoduo/models/user"
	"duoduo/tools/app"
	"fmt"

	"github.com/gin-gonic/gin"
	"github.com/shopspring/decimal"
)

func OrderGet(c *gin.Context) {
	var inData user.OrderGetRequest
	var outData user.OrderGetResponse
	var orderOpneId mysql.Order

	var pageSize = 10
	var pageIndex = 1

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

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

	orderOpneId.OpenId = inData.OpenId
	orderVal, count, err := orderOpneId.GetOrderOpenIdList(pageSize, pageIndex, inData.UserStatus)
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}

	fmt.Print(orderVal)

	for i := 0; i < len(orderVal); i++ {
		var orderInfo user.OrderInfo
		orderInfo.Order = orderVal[i]
		if inData.UserStatus == 0 {
			orderInfo.Amount = orderVal[i].Amount
		} else if inData.UserStatus == 1 {
			orderInfo.Amount = orderVal[i].Amount1
		} else if inData.UserStatus == 2 {
			orderInfo.Amount = orderVal[i].Amount2
		} else if inData.UserStatus == 3 {
			orderInfo.Amount = decimal.NewFromInt(orderVal[i].PromotionAmount).Mul(decimal.NewFromFloat(0.0015)).Round(2)
			if orderVal[i].OpenId == inData.OpenId { //管理员价格 一级代理
				orderInfo.Amount = orderInfo.Order.Amount.Add(orderInfo.Amount)
			} else if orderVal[i].OpenId1 == inData.OpenId {
				orderInfo.Amount = orderInfo.Order.Amount1.Add(orderInfo.Amount)
			} else if orderVal[i].OpenId2 == inData.OpenId {
				orderInfo.Amount = orderInfo.Order.Amount2.Add(orderInfo.Amount)
			}
		} else {
			app.Error(c, 500, err, "UserStatus error")
			return
		}

		outData.OrderInfo = append(outData.OrderInfo, orderInfo)

	}

	app.PageOK(c, outData, count, pageIndex, pageSize, app.Success)
}