aditya.siregar 4f5950543e init
2025-07-18 20:10:29 +07:00

75 lines
1.6 KiB
Go

package validator
import (
"github.com/go-playground/validator/v10"
)
type OrderValidator interface {
Validate(interface{}) error
}
type OrderValidatorImpl struct {
validate *validator.Validate
}
func NewOrderValidator() OrderValidator {
v := validator.New()
return &OrderValidatorImpl{
validate: v,
}
}
func (v *OrderValidatorImpl) Validate(i interface{}) error {
return v.validate.Struct(i)
}
func (v *OrderValidatorImpl) validateOrderType(fl validator.FieldLevel) bool {
orderType := fl.Field().String()
switch orderType {
case "dine_in", "takeaway", "delivery":
return true
default:
return false
}
}
func (v *OrderValidatorImpl) validateOrderStatus(fl validator.FieldLevel) bool {
status := fl.Field().String()
switch status {
case "pending", "preparing", "ready", "completed", "cancelled":
return true
default:
return false
}
}
func (v *OrderValidatorImpl) validatePaymentStatus(fl validator.FieldLevel) bool {
status := fl.Field().String()
switch status {
case "pending", "partially_paid", "completed", "refunded":
return true
default:
return false
}
}
func (v *OrderValidatorImpl) validatePaymentTransactionStatus(fl validator.FieldLevel) bool {
status := fl.Field().String()
switch status {
case "pending", "completed", "failed", "refunded", "cancelled":
return true
default:
return false
}
}
func (v *OrderValidatorImpl) validateOrderItemStatus(fl validator.FieldLevel) bool {
status := fl.Field().String()
switch status {
case "pending", "preparing", "ready", "completed", "cancelled":
return true
default:
return false
}
}