65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package request
|
|
|
|
import (
|
|
"furtuna-be/internal/common/mycontext"
|
|
"furtuna-be/internal/constants/transaction"
|
|
"furtuna-be/internal/entity"
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
type Transaction struct {
|
|
PaymentMethod transaction.PaymentMethod
|
|
}
|
|
|
|
type TransactionSearch struct {
|
|
Id string `form:"id" json:"id" example:"1"`
|
|
Date string `form:"date" json:"date" example:"1"`
|
|
Limit int `form:"limit,default=10"`
|
|
Offset int `form:"offset,default=0"`
|
|
Status string `form:"status,default="`
|
|
Type string `form:"type,default="`
|
|
}
|
|
|
|
type ApprovalRequest struct {
|
|
Status string `json:"status" validate:"required,approvalStatus"`
|
|
TransactionID string `json:"transaction_id" validate:"required"`
|
|
}
|
|
|
|
func (a *ApprovalRequest) ToEntity() *entity.TransactionApproval {
|
|
return &entity.TransactionApproval{
|
|
Status: a.Status,
|
|
TransactionID: a.TransactionID,
|
|
}
|
|
}
|
|
|
|
func approvalStatus(fl validator.FieldLevel) bool {
|
|
status := fl.Field().String()
|
|
return status == "APPROVE" || status == "REJECT"
|
|
}
|
|
|
|
func (a *ApprovalRequest) Validate() error {
|
|
validate := validator.New()
|
|
err := validate.RegisterValidation("approvalStatus", approvalStatus)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := validate.Struct(a); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (t *TransactionSearch) ToEntity(ctx mycontext.Context) entity.TransactionSearch {
|
|
return entity.TransactionSearch{
|
|
PartnerID: ctx.GetPartnerID(),
|
|
SiteID: ctx.GetSiteID(),
|
|
Type: t.Type,
|
|
Status: t.Status,
|
|
Limit: t.Limit,
|
|
Offset: t.Offset,
|
|
Date: t.Date,
|
|
}
|
|
}
|