Upstream sync
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"time"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"regexp"
|
||||
|
||||
"bitbucket.org/nemt/nemt-portal-api/application/viewmodel"
|
||||
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
|
||||
@@ -12,11 +13,11 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
tripTypeFromVisit = "From Visit"
|
||||
tripTypeToVisit = "To Visit"
|
||||
tripTypeFromVisitWillCall = "From Visit / Will Call"
|
||||
tripTypeRoundTrip = "Round Trip"
|
||||
tripTypeRountTripWillCall = "Round Trip / Will Call"
|
||||
tripTypeFromVisit = "from_visit"
|
||||
tripTypeToVisit = "to_visit"
|
||||
tripTypeFromVisitWillCall = "from_visit_call"
|
||||
tripTypeRoundTrip = "roundtrip"
|
||||
tripTypeRountTripWillCall = "roundtrip_call"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -34,14 +35,15 @@ const (
|
||||
|
||||
func ValidateRide(requestRide *viewmodel.RideRequest, user *viewmodel.User) []errors.ValidationError {
|
||||
var result []errors.ValidationError
|
||||
var validUUIDregex = regexp.MustCompile(`^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$`)
|
||||
|
||||
//Step #1 validation
|
||||
|
||||
if userID, err := strconv.Atoi(user.ID) ; err != nil || userID <= 0 {
|
||||
if !validUUIDregex.MatchString(user.ID){
|
||||
result = append(result, errors.ValidationError{Field : "user_uuid", Message : "Step #1 - Choose a Member" })
|
||||
}
|
||||
|
||||
if originID, err := strconv.Atoi(requestRide.Origin.ID) ; err != nil || originID <= 0 {
|
||||
if !validUUIDregex.MatchString(requestRide.Origin.ID) {
|
||||
result = append (result, errors.ValidationError{Field : "origin.id", Message : "Step #1 - Choose a Pickup Address"})
|
||||
}
|
||||
|
||||
@@ -50,7 +52,7 @@ func ValidateRide(requestRide *viewmodel.RideRequest, user *viewmodel.User) []er
|
||||
}
|
||||
|
||||
//Step #2 validation
|
||||
|
||||
|
||||
if destinationID, err := strconv.Atoi(requestRide.Destination.ID) ; err!= nil || destinationID <= 0 {
|
||||
result = append (result, errors.ValidationError{Field : "destination.id", Message : "Step #2 - Choose a Provider"})
|
||||
}
|
||||
@@ -84,14 +86,14 @@ func ValidateRide(requestRide *viewmodel.RideRequest, user *viewmodel.User) []er
|
||||
|
||||
//Step #4 validation
|
||||
|
||||
if requestRide.TripType.Value == "" {
|
||||
result = append (result, errors.ValidationError{Field : "trip_type.value", Message : "Step #4 - Choose a Trip Type"})
|
||||
}
|
||||
|
||||
timeWithDurationAndLoadingTime := requestRide.VisitTime.Add(-time.Duration(requestRide.Duration)*time.Second).Add(-loadingTime*time.Minute)
|
||||
after10Minutes := time.Now().Add(time.Minute*time10Minutes)
|
||||
|
||||
switch requestRide.TripType.Value {
|
||||
isTripTypeValid := true
|
||||
|
||||
fmt.Println("\n\n",requestRide.PickupTime,"\n\n")
|
||||
|
||||
switch requestRide.TripType.Key {
|
||||
case tripTypeToVisit:
|
||||
if requestRide.PickupTime == nil {
|
||||
result = append (result, errors.ValidationError{Field : "pickup_time", Message : "Step #4 - Choose a Pickup Time"})
|
||||
@@ -178,6 +180,15 @@ func ValidateRide(requestRide *viewmodel.RideRequest, user *viewmodel.User) []er
|
||||
result = append (result, errors.ValidationError{Field : "pickup_time", Message : "Step #4 - Visit cannot occur in the past "})
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
isTripTypeValid = false
|
||||
}
|
||||
|
||||
if !isTripTypeValid {
|
||||
result = append (result, errors.ValidationError{Field : "trip_type.key", Message : "Step #4 - Choose a Trip Type"})
|
||||
}
|
||||
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -1,12 +1,10 @@
|
||||
package validation
|
||||
|
||||
import (
|
||||
|
||||
"strings"
|
||||
|
||||
"bitbucket.org/nemt/nemt-portal-api/application/viewmodel"
|
||||
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
|
||||
|
||||
)
|
||||
|
||||
func characterIsUpperCase(character rune) bool {
|
||||
@@ -25,29 +23,29 @@ func ValidatePassword(user *viewmodel.User) []errors.ValidationError {
|
||||
var result []errors.ValidationError
|
||||
|
||||
userOrganizationName := ""
|
||||
if len(user.Organizations) > 0{
|
||||
if len(user.Organizations) > 0 {
|
||||
userOrganizationName = user.Organizations[0].Name
|
||||
}
|
||||
|
||||
if (len(user.Pass) < 8) {
|
||||
result = append(result, errors.ValidationError{Field : "password", Message : "Password must be at least 8 characters."})
|
||||
if len(user.Pass) < 8 {
|
||||
result = append(result, errors.ValidationError{Field: "password", Message: "Password must be at least 8 characters."})
|
||||
}
|
||||
|
||||
if (strings.Contains(user.Pass, user.First)){
|
||||
result = append(result, errors.ValidationError{Field : "password", Message : "Password cannot include your First Name."})
|
||||
if strings.Contains(user.Pass, user.First) {
|
||||
result = append(result, errors.ValidationError{Field: "password", Message: "Password cannot include your First Name."})
|
||||
}
|
||||
|
||||
if (strings.Contains(user.Pass, user.Last)){
|
||||
result = append(result, errors.ValidationError{Field : "password", Message : "Password cannot include your Last Name."})
|
||||
if strings.Contains(user.Pass, user.Last) {
|
||||
result = append(result, errors.ValidationError{Field: "password", Message: "Password cannot include your Last Name."})
|
||||
}
|
||||
|
||||
if (strings.Contains(user.Pass, userOrganizationName)){
|
||||
result = append(result, errors.ValidationError{Field : "password", Message : "Password cannot include your Organization Name."})
|
||||
if strings.Contains(user.Pass, userOrganizationName) {
|
||||
result = append(result, errors.ValidationError{Field: "password", Message: "Password cannot include your Organization Name."})
|
||||
}
|
||||
|
||||
containsUpperCaseLetter := false;
|
||||
containsLowerCaseLetter := false;
|
||||
containsNumber := false;
|
||||
containsUpperCaseLetter := false
|
||||
containsLowerCaseLetter := false
|
||||
containsNumber := false
|
||||
|
||||
for _, character := range user.Pass {
|
||||
containsUpperCaseLetter = containsUpperCaseLetter || characterIsUpperCase(character)
|
||||
@@ -56,12 +54,11 @@ func ValidatePassword(user *viewmodel.User) []errors.ValidationError {
|
||||
}
|
||||
|
||||
if !containsUpperCaseLetter || !containsLowerCaseLetter || !containsNumber {
|
||||
result = append(result, errors.ValidationError{Field : "password", Message : "Password must contain one of EACH :"})
|
||||
result = append(result, errors.ValidationError{Field : "password-tab", Message : "an uppercase letter"})
|
||||
result = append(result, errors.ValidationError{Field : "password-tab", Message : "a lowercase letter"})
|
||||
result = append(result, errors.ValidationError{Field : "password-tab", Message : "a number"})
|
||||
result = append(result, errors.ValidationError{Field: "password", Message: "Password must contain one of EACH :"})
|
||||
result = append(result, errors.ValidationError{Field: "password-tab", Message: "an uppercase letter"})
|
||||
result = append(result, errors.ValidationError{Field: "password-tab", Message: "a lowercase letter"})
|
||||
result = append(result, errors.ValidationError{Field: "password-tab", Message: "a number"})
|
||||
}
|
||||
|
||||
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
36
server/validation/visit.go
Normal file
36
server/validation/visit.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package validation
|
||||
|
||||
import (
|
||||
"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"})
|
||||
}
|
||||
|
||||
if len(visit.User.Last) == 0 {
|
||||
result = append(result, errors.ValidationError{Field: "last", Message: "Step #1 - Last Name is mandatory"})
|
||||
}
|
||||
|
||||
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"})
|
||||
}
|
||||
|
||||
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"})
|
||||
}
|
||||
|
||||
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"})
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user