package shanghu

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

func CreateMerchantCardProject(c *gin.Context) {
	var inData models.CreateMerchantCardProjectRequest
	var sqlData shanghu.MerchantCardProject

	err := c.ShouldBindJSON(&inData)
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}
	sqlData.CreatedAt = time.Now()
	sqlData.UpdatedAt = time.Now()
	sqlData.ProjectName = inData.ProjectName
	sqlData.ProjectUnit = inData.ProjectUnit
	sqlData.ProjectUnitPrice = inData.ProjectUnitPrice
	sqlData.ProjectUrl = inData.ProjectUrl
	sqlData.MerchantOpenID = inData.MerchantOpenID
	sqlData.UpdatedAt = time.Now()
	sqlData.CreatedAt = time.Now()

	_, err = sqlData.Create()
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}

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

}

func GetMerchantCardProject(c *gin.Context) {
	var inData models.GetMerchantCardProjectRequest
	var sqlData shanghu.MerchantCardProject

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

	merchantCardProject, err := sqlData.GetMerchantCardProject()
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}

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

}

func MerchantCardProjectList(c *gin.Context) {
	var inData models.MerchantCardProjectListRequest
	var sqlData shanghu.MerchantCardProject
	var outData []models.MerchantCardProjectListReply

	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.MerchantOpenID = inData.OpenId

	merchantCard, count, err := sqlData.GetOpenIdList(pageSize, pageIndex)
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}

	for _, v := range merchantCard {
		var reply models.MerchantCardProjectListReply
		reply.MerchantOpenID = v.MerchantOpenID
		reply.ProjectUnitPrice = v.ProjectUnitPrice
		reply.ProjectUnit = v.ProjectUnit
		reply.ProjectName = v.ProjectName
		reply.Filled = false
		reply.ID = v.ID
		outData = append(outData, reply)
	}

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

}

func UpdateMerchantCardProject(c *gin.Context) {
	var inData models.UpdateMerchantCardProjectRequest
	var sqlData shanghu.MerchantCardProject

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

	sqlData.ID = inData.ID
	sqlData.ProjectUrl = inData.ProjectUrl
	sqlData.ProjectUnitPrice = inData.ProjectUnitPrice
	sqlData.ProjectUnit = inData.ProjectUnit
	sqlData.ProjectName = inData.ProjectName
	sqlData.UpdatedAt = time.Now()
	err = sqlData.UpdateMerchantCardProject()
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}

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