package api

import (
	"epur-pay/model"
	"epur-pay/pkg/dapi"
	"epur-pay/pkg/utils"
)

type GetPayChannelResponse struct {
	*dapi.ResponseCommon
	Data []model.PayChannel `json:"data"` //数据列表
}

func GetPayChannel(a *dapi.ApiBase) error {

	Response := GetPayChannelResponse{
		ResponseCommon: a.NewSuccessResponseCommon(),
	}

	query := a.Ts.Table(model.PayChannel{}.TableName())

	query.Count(&Response.Count)

	utils.Error(query.Limit(a.Limit).Offset(a.Offset).Scan(&Response.Data).Error)
	return a.ReturnSuccessCustomResponse(Response)
}

type AddPayChannelParams struct {
	Name   string `json:"name"`   // 渠道名称
	Logo   string `json:"logo"`   // 渠道Logo
	Status bool   `json:"status"` // 状态
}

func AddPayChannel(a *dapi.ApiBase, data *AddPayChannelParams) error {

	instance := model.PayChannel{
		Name:       data.Name,
		Logo:       data.Logo,
		Status:     data.Status,
		CreateTime: utils.Time2StampSecond(),
	}
	utils.Error(a.Ts.Create(&instance).Error)

	return a.ReturnSuccessResponse()
}

type EditPayChannelParams struct {
	Id      int64             `json:"id"`          // ID
	Request model.PayRequests `json:"payRequests"` // 接入
}

func EditPayChannel(a *dapi.ApiBase, data *EditPayChannelParams) error {

	instance := model.PayChannel{}
	utils.Error(a.Ts.Table(instance.TableName()).Where("id = ?", data.Id).Scan(&instance).Error)
	if instance.Id <= 0 {
		return a.ReturnPublicErrorResponse("不存在")
	}

	utils.DbErrSkipRecordNotFound(a.Ts.Table(instance.TableName()).
		Where("id", instance.Id).
		Updates(map[string]interface{}{"pay_requests": data.Request}).Error)

	return a.ReturnSuccessResponse()
}