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, } }