upodate system
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user