aditya.siregar 3c80b710af Update Infra
2025-03-04 20:36:17 +07:00

65 lines
1.6 KiB
Go

package request
import (
"enaklo-pos-be/internal/common/mycontext"
"enaklo-pos-be/internal/constants/transaction"
"enaklo-pos-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,
}
}