Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public UniverseField(UniverseField field)
 {
     Name                  = field.Name;
     FieldOrder            = field.FieldOrder;
     MaxFieldLength        = field.MaxFieldLength;
     FieldType             = field.FieldType;
     IgnoreCase            = field.IgnoreCase;
     DefaultPossibleValues = field.DefaultPossibleValues;
 }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
 public Validation(bool isValid, string message, UniverseField field)
 {
     this.IsValid = IsValid;
     this.Message = message;
     this.Field   = field;
 }