2025-06-27 13:01:39 +07:00

44 lines
981 B
Go

package validator
import (
"enaklo-pos-be/internal/entity"
"github.com/pkg/errors"
"time"
)
type RequestValidator struct{}
func NewRequestValidator() *RequestValidator {
return &RequestValidator{}
}
func (v *RequestValidator) ValidateSearchRequest(req *entity.SearchRequest) error {
if req.Status != "" {
validStatuses := []string{"pending", "confirmed", "processing", "completed", "cancelled"}
if !v.isValidStatus(req.Status, validStatuses) {
return errors.New("invalid status value")
}
}
if !req.Start.IsZero() && !req.End.IsZero() {
if req.Start.After(req.End) {
return errors.New("start date cannot be after end date")
}
if req.End.Sub(req.Start) > 365*24*time.Hour {
return errors.New("date range cannot exceed 1 year")
}
}
return nil
}
func (v *RequestValidator) isValidStatus(status string, validStatuses []string) bool {
for _, validStatus := range validStatuses {
if status == validStatus {
return true
}
}
return false
}