protected Validation ValidateFieldWithPossibleValues(UniverseField field, List <String> possibleValues) { var validation = new Validation(); validation.Field = field; validation.IsValid = true; var v = ValidateFieldLength(field); if (!v.IsValid) { validation = v; } else if (!possibleValues.Exists (v => v.ToUpper().Equals(field.Value.ToUpper()))) { validation.IsValid = false; validation.Message = String.Format("Invalid Value. Valid values are {0}", string.Join(",", possibleValues)); } else if (!field.IgnoreCase && !field.Value.ToUpper().Equals(field.Value.ToUpper())) { validation.Field.Value = field.Value.ToUpper(); validation.Field.WasFieldCorrected = true; validation.Field.FieldAutoCorrectedMessage = "Value was converted to Upper Case"; } return(validation); }
public UniverseField(UniverseField field) { Name = field.Name; FieldOrder = field.FieldOrder; MaxFieldLength = field.MaxFieldLength; FieldType = field.FieldType; IgnoreCase = field.IgnoreCase; DefaultPossibleValues = field.DefaultPossibleValues; }
protected void ValidateField(string fieldName, List <string> values, Validations validations, Func <UniverseField, Validation> func) { var field = Fields[fieldName]; if (field != null) { var newField = new UniverseField(field); newField.Value = values[field.FieldOrder - 1]; validations.Add(func(newField)); } }
protected Validation ValidateDate(UniverseField field) { var validation = new Validation(); validation.Field = field; validation.IsValid = true; double d; DateTime date; if (string.IsNullOrWhiteSpace(field.Value)) { validation.IsValid = false; validation.Message = "This field is required"; } else if (field.DefaultPossibleValues != null && field.DefaultPossibleValues.Count() > 0 && field.DefaultPossibleValues.Contains(field.Value.Trim().ToUpper())) { if (!field.DefaultPossibleValues.Contains(field.Value)) { field.OriginalValue = field.Value; field.Value = field.Value.Trim().ToUpper(); field.WasFieldCorrected = true; } } else if (Double.TryParse(field.Value, out d)) { date = DateTime.FromOADate(d); validation.Field.Value = date.ToString("yyyy/MM/dd"); validation.Field.DateValue = date; } else if (DateTime.TryParse(field.Value, out date)) { validation.Field.Value = date.ToString("yyyy/MM/dd"); validation.Field.DateValue = date; } else { validation.Message = "This is not a valid Date"; validation.IsValid = false; } return(validation); }
protected Validation ValidateFieldLength(UniverseField field) { var validation = new Validation(); validation.Field = field; validation.IsValid = true; if (string.IsNullOrWhiteSpace(field.Value)) { validation.IsValid = false; validation.Message = "This field is required"; } else if (field.Value.Length > field.MaxFieldLength && field.FieldType != typeof(DateTime)) { validation.IsValid = false; validation.Message = String.Format("Field value cannot be longer than {0} characters", field.MaxFieldLength); } return(validation); }
protected Validation ValidateTime(UniverseField field) { var validation = new Validation(); validation.Field = field; validation.IsValid = true; CultureInfo enUS = new CultureInfo("en-US"); DateTime date; if (string.IsNullOrWhiteSpace(field.Value)) { validation.IsValid = false; validation.Message = "This field is required"; } else if (DateTime.TryParseExact(field.Value.Trim(), "HH:mm:ss", enUS, DateTimeStyles.None, out date)) { validation.IsValid = true; validation.Field.DateValue = date; } else if (DateTime.TryParse(field.Value.Trim(), out date)) { validation.Field.OriginalValue = field.Value; validation.Field.Value = date.ToString("HH:mm:ss"); validation.Field.WasFieldCorrected = true; validation.Field.DateValue = date; } else { validation.IsValid = false; validation.Message = "Field is not a valid time field (HH:mm:ss)"; } return(validation); }
/// <summary> // /// </summary> /// <param name="values"></param> /// <returns></returns> public override Validations ValidateFields(List <string> values) { var v = new Validations(); UniverseField field = null; ValidateOrgDeterminationFields(v, values); ValidateField(UniverseFieldNames.PersonMakingRequest, values, v, ValidateFieldWithPossibleValues, personWhoMadeRequestPossibleValues); ValidateField(UniverseFieldNames.ExpeditedOrStandardTimeFrame, values, v, ValidateFieldWithPossibleValues, yesNo); ValidateField(UniverseFieldNames.RequestExpedited, values, v, ValidateFieldWithPossibleValues, requestExpeditedTimeFrame); //Logical Errors //If this is BR then column X should have a date that is not more than a year from column I var tmpValidation = v.Find(f => f.Field.Name == UniverseFieldNames.PersonMakingRequest); if (tmpValidation.IsValid && field.Value.Equals("BR")) { var tmprequestReceivedValidation = v.Find(f => f.Field.Name == UniverseFieldNames.RequestReceivedDate); var tmprequestAORValidation = v.Find(f => f.Field.Name == UniverseFieldNames.AORReceiptDate); if (tmprequestReceivedValidation.IsValid && tmprequestAORValidation.IsValid) { DateTime requesteReceived = Convert.ToDateTime(tmprequestReceivedValidation.Field.Value); DateTime AORRequest = Convert.ToDateTime(tmprequestAORValidation.Field.Value); if (AORRequest.Subtract(requesteReceived).TotalDays > 365) { var tmpV = new Validation(); tmpV.Field = tmpValidation.Field; tmpV.IsValid = false; tmpV.AdditionalFields.Add(tmprequestReceivedValidation.Field); tmpV.AdditionalFields.Add(tmprequestAORValidation.Field); tmpV.Message = String.Format("Fields {0} and {1} have to be 1 year apart", tmprequestAORValidation.Field.Name, tmprequestReceivedValidation.Field.Name); tmpV.ValidationType = ValidationType.Field; v.Add(tmpV); } } } DateTime tmpDate; //Request for Expedited time frame //If value is BR then AORDate should be a date. tmpValidation = v.Find(f => f.Field.Name == UniverseFieldNames.RequestExpedited); if (tmpValidation.IsValid && tmpValidation.Field.Value.Equals("BR")) { var tmprequestAORValidation = v.Find(f => f.Field.Name == UniverseFieldNames.AORReceiptDate); if (!DateTime.TryParse(tmprequestAORValidation.Field.Value, out tmpDate)) { var tmpV = new Validation(); tmpV.Field = tmpValidation.Field; tmpV.IsValid = false; tmpV.AdditionalFields.Add(tmprequestAORValidation.Field); tmpV.Message = string.Format("{0} needs to be a valid date", tmprequestAORValidation.Field.Name); v.Add(tmpV); } } //If column O is Y then this cannot be NA. tmpValidation = v.Find(UniverseFieldNames.TimeframeExtensionTaken); if (tmpValidation.IsValid && tmpValidation.Field.Value.Equals("Y")) { var tmprequestSponsorNotificationDelay = v.Find(UniverseFieldNames.SponsorNotificationDelay); if (!DateTime.TryParse(tmprequestSponsorNotificationDelay.Field.Value, out tmpDate)) { var tmpV = new Validation(); tmpV.Field = tmpValidation.Field; tmpV.IsValid = false; tmpV.AdditionalFields.Add(tmprequestSponsorNotificationDelay.Field); tmpV.Message = string.Format("{0} needs to be a valid date", tmprequestSponsorNotificationDelay.Field.Name); v.Add(tmpV); } } //if request disposition is approved //request denied for lack of necessity should be NA //review completed for denial should be NA tmpValidation = v.Find(UniverseFieldNames.RequestDisposition); var tmpRequestDenied = v.Find(UniverseFieldNames.RequestDeniedNecessity); var tmpRequestReviewed = v.Find(UniverseFieldNames.RequestDeniedReviewd); if (tmpValidation.IsValid && tmpValidation.Field.Value.ToLower().Equals("approved")) { if (!tmpRequestDenied.Field.Value.ToUpper().Equals("NA") || !tmpRequestReviewed.Field.Value.ToUpper().Equals("NA")) { var tmpV = new Validation(); tmpV.Field = tmpValidation.Field; tmpV.IsValid = false; tmpV.AdditionalFields.Add(tmpRequestDenied.Field); tmpV.AdditionalFields.Add(tmpRequestReviewed.Field); tmpV.Message = string.Format("{0} and {1} fields both need to be NA", tmpRequestDenied.Field.Name, tmpRequestReviewed.Field.Name); v.Add(tmpV); } } if (tmpRequestReviewed.IsValid && (tmpRequestReviewed.Field.Value.Equals("Y") || tmpRequestReviewed.Field.Value.Equals("N")) && tmpRequestDenied.IsValid && tmpRequestDenied.Field.Value.Equals("NA")) { var tmpV = new Validation(); tmpV.Field = tmpRequestDenied.Field; tmpV.IsValid = false; tmpV.AdditionalFields.Add(tmpRequestReviewed.Field); tmpV.Message = string.Format("{0} cannot be NA", tmpRequestDenied.Field.Name); v.Add(tmpV); } if (tmpRequestReviewed.IsValid && tmpRequestReviewed.Field.Value.Equals("NA") && tmpRequestDenied.IsValid && tmpRequestDenied.Field.Value.Equals("Y")) { var tmpV = new Validation(); tmpV.Field = tmpRequestReviewed.Field; tmpV.IsValid = false; tmpV.AdditionalFields.Add(tmpRequestDenied.Field); tmpV.Message = string.Format("{0} cannot be NA", tmpRequestReviewed.Field.Name); v.Add(tmpV); } var tmpOralNotification = v.Find(UniverseFieldNames.OralNotificationDate); var tmpWrittenNotfication = v.Find(UniverseFieldNames.EnrolleeWrittenNotificationDate); if (tmpOralNotification.IsValid && tmpWrittenNotfication.IsValid) { DateTime dateOralNotification; DateTime dateWrittenNotification; if (DateTime.TryParse(tmpOralNotification.Field.Value, out dateOralNotification)) { if (DateTime.TryParse(tmpWrittenNotfication.Field.Value, out dateWrittenNotification)) { var timeSpan = dateWrittenNotification.Subtract(dateOralNotification); if (timeSpan.TotalHours > 72) { var tmpV = new Validation(); tmpV.Field = tmpOralNotification.Field; String.Format("{0} field must be within 72 hours of {1}", tmpOralNotification.Field.Name, tmpWrittenNotfication.Field.Name); tmpV.IsValid = false; v.Add(tmpV); } } else { var tmpV = new Validation(); tmpV.Field = tmpOralNotification.Field; tmpV.AdditionalFields.Add(tmpWrittenNotfication.Field); tmpV.IsValid = false; tmpV.Message = string.Format("{0} field must be a valid date", tmpOralNotification.Field.Value); v.Add(tmpV); } } } var tmpAORReceiptDate = v.Find(UniverseFieldNames.AORReceiptDate); var tmpPersonMadeRequest = v.Find(UniverseFieldNames.PersonMakingRequest); var tmpRequestExpedited = v.Find(UniverseFieldNames.RequestExpedited); if (tmpAORReceiptDate.IsValid && tmpPersonMadeRequest.IsValid && tmpRequestExpedited.IsValid) { if (tmpAORReceiptDate.Field.Value.Equals("NA") && (tmpPersonMadeRequest.Field.Value.Equals("BR") || tmpRequestExpedited.Field.Value.Equals("BR") )) { var tmpV = new Validation(); tmpV.Field = tmpAORReceiptDate.Field; tmpV.AdditionalFields.Add(tmpPersonMadeRequest.Field); tmpV.AdditionalFields.Add(tmpRequestExpedited.Field); tmpV.IsValid = false; tmpV.Message = string.Format("{0} cannot be NA and needs to be a valid date", tmpAORReceiptDate.Field.Name); v.Add(tmpV); } } return(v); }
public Validation(bool isValid, string message, UniverseField field) { this.IsValid = IsValid; this.Message = message; this.Field = field; }