Upstream sync
This commit is contained in:
@@ -1,35 +1,44 @@
|
||||
package validation
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"bitbucket.org/nemt/nemt-portal-api/application/viewmodel"
|
||||
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
|
||||
)
|
||||
|
||||
func ValidateVisit(visit *viewmodel.Visit, user *viewmodel.User) []errors.ValidationError {
|
||||
var result []errors.ValidationError
|
||||
|
||||
if len(visit.User.First) == 0 {
|
||||
result = append(result, errors.ValidationError{Field: "first", Message: "Step #1 - First Name is mandatory"})
|
||||
// Step #1
|
||||
if len(visit.Provider.ProviderUUID) == 0 {
|
||||
result = append(result, errors.ValidationError{Field: "provider.id", Message: "Step #1 - Provider is required"})
|
||||
}
|
||||
|
||||
if len(visit.User.Last) == 0 {
|
||||
result = append(result, errors.ValidationError{Field: "last", Message: "Step #1 - Last Name is mandatory"})
|
||||
// Step #2
|
||||
eligibilityResult := ValidateEligibility(&visit.User)
|
||||
if len(eligibilityResult) > 0 {
|
||||
result = append(result, eligibilityResult...)
|
||||
}
|
||||
|
||||
if visit.User.Gender == nil || (*visit.User.Gender != "M" && *visit.User.Gender != "F" && *visit.User.Gender != "U") {
|
||||
result = append(result, errors.ValidationError{Field: "gender", Message: "Step #1 - Gender is mandatory"})
|
||||
}
|
||||
//Step #3
|
||||
if visit.VisitDatetime.IsZero() {
|
||||
result = append(result, errors.ValidationError{Field: "visit_datetime", Message: "Step #3 - Choose a Date for the Visit"})
|
||||
} else {
|
||||
isVisitDayToday := visit.VisitDatetime.Day() == time.Now().Day() && visit.VisitDatetime.Month() == time.Now().Month() && visit.VisitDatetime.Year() == time.Now().Year()
|
||||
before8Hours := time.Now().Add(-time.Hour * time8Hours)
|
||||
dayBeforeToday := time.Now().Add(-time.Hour * hoursInDay)
|
||||
if visit.VisitDatetime.Before(dayBeforeToday) {
|
||||
result = append(result, errors.ValidationError{Field: "visit_datetime", Message: "Step #3 - Visit cannot occur more than one day before today"})
|
||||
}
|
||||
|
||||
if visit.User.Type == nil || (*visit.User.Type != "S" && *visit.User.Gender != "D" && *visit.User.Gender != "U") {
|
||||
result = append(result, errors.ValidationError{Field: "type", Message: "Step #1 - Member Type is mandatory"})
|
||||
}
|
||||
dayAfter180Days := time.Now().Add(time.Hour * hoursIn180Days)
|
||||
if visit.VisitDatetime.After(dayAfter180Days) {
|
||||
result = append(result, errors.ValidationError{Field: "visit_datetime", Message: "Step #3 - Visit cannot occur more than 180 days after today"})
|
||||
}
|
||||
|
||||
if visit.User.Member == nil || len(*visit.User.Member) == 0 {
|
||||
result = append(result, errors.ValidationError{Field: "member", Message: "Step #1 - Member # is mandatory"})
|
||||
}
|
||||
|
||||
if visit.User.BirthDate == nil || visit.User.BirthDate.IsZero() {
|
||||
result = append(result, errors.ValidationError{Field: "birthdate", Message: "Step #1 - Birth Date is mandatory"})
|
||||
if isVisitDayToday && visit.VisitDatetime.Before(before8Hours) {
|
||||
result = append(result, errors.ValidationError{Field: "visit_datetime", Message: "Step #3 - Visit is more than 8 hours in the past"})
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user