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 }