Esempio n. 1
0
        public static UIData<string> Validate(this UIData<string> item, StringFormat format = StringFormat.Plain, string requiredMessage = "", int maxLength = 0, bool trim = true, int roundingDecimals = 0)
        {
            if (item == null) { item = new UIData<string>("", Types.String); }

            item.Value = item.Value ?? "";

            bool isRequired = (requiredMessage.Length != 0);
            item.SubmittedValue = item.Value;

            if (item.TrueType == Types.Date)
                if (format != StringFormat.Date) { format = StringFormat.Date; }

            if (item.TrueType == Types.DateTime)
                if (format != StringFormat.DateTime) { format = StringFormat.DateTime; }

            if (format == StringFormat.TrueTypeDecimalPlain || format == StringFormat.TrueTypeDecimalMoney)
                item.TrueType = Types.Decimal;

            if (format == StringFormat.TrueTypeDouble)
                item.TrueType = Types.Double;

            if (format == StringFormat.TrueTypeInteger)
                item.TrueType = Types.Integer;

            switch (item.TrueType)
            {
                case Types.Integer:
                    item.Value = item.Value.Replace("$", "");
                    if (item.Value.Length == 0) { item.Value = "0"; }
                    if (IsNumeric(item.Value))
                    {
                        UIData<int> intData = new UIData<int>(Conversion.ToInt32(item.Value), Types.Integer);
                        intData.Validate(requiredMessage);
                        intData.CopyValuesTo(item);
                    }
                    else
                    {
                        item.IsValid = Constants.NO;
                        item.Message = (requiredMessage.Length == 0 ? "Invalid number" : requiredMessage);
                    }
                    break;
                case Types.Double:
                    item.Value = item.Value.Replace("$", "");
                    if (item.Value.Length == 0) { item.Value = "0"; }
                    if (IsNumeric(item.Value))
                    {
                        UIData<double> doubleData = new UIData<double>(Conversion.ToDouble(item.Value), Types.Double);
                        doubleData.Validate(requiredMessage);
                        doubleData.CopyValuesTo(item);
                    }
                    else
                    {
                        item.IsValid = Constants.NO;
                        item.Message = (requiredMessage.Length == 0 ? "Invalid number" : requiredMessage);
                    }
                    break;
                case Types.Decimal:
                    item.Value = item.Value.Replace("$", "");
                    if (item.Value.Length == 0) { item.Value = "0"; }
                    if (IsNumeric(item.Value))
                    {
                        UIData<decimal> decData = new UIData<decimal>(Conversion.ToDecimal(item.Value, roundingDecimals), Types.Decimal);
                        if (format == StringFormat.TrueTypeDecimalMoney)
                        {
                            decData.Validate(DecimalFormat.Money, requiredMessage);
                            decData.CopyValuesTo(item);
                            item.Value = decData.Value.ToString();
                        }
                        else
                        {
                            decData.Validate(DecimalFormat.Plain, requiredMessage);
                            decData.CopyValuesTo(item);
                        }
                    }
                    else
                    {
                        item.IsValid = Constants.NO;
                        item.Message = (requiredMessage.Length == 0 ? "Invalid number" : requiredMessage);
                    }
                    break;
                case Types.Boolean:
                    try
                    {
                        if (Convert.ToBoolean(item.Value) == true | Convert.ToBoolean(item.Value) == false)
                        {
                            UIData<bool> boolData = new UIData<bool>(Convert.ToBoolean(item.Value), Types.Decimal);
                            boolData.Validate();
                            boolData.CopyValuesTo(item);
                        }
                        else
                        {
                            item.IsValid = Constants.NO;
                            item.Message = (requiredMessage.Length == 0 ? "Invalid boolean value" : requiredMessage);
                        }
                    }
                    catch
                    {
                        item.IsValid = Constants.NO;
                        item.Message = (requiredMessage.Length == 0 ? "Invalid boolean value" : requiredMessage);
                    }
                    break;
                default:
                    if (trim) item.Value = item.Value.Trim();
                    ValidatedData result = new ValidatedData();

                    switch (format)
                    {
                        case StringFormat.Plain:
                            result = ValidatePlain(item, maxLength, requiredMessage);
                            break;
                        case StringFormat.TitleCase:
                            result = ValidateTitleCase(item, maxLength, requiredMessage);
                            break;
                        case StringFormat.Email:
                            result = ValidateEmail(item, maxLength, requiredMessage);
                            break;
                        case StringFormat.PhoneNumber:
                            result = ValidatePhoneNumber(item, requiredMessage);
                            break;
                        case StringFormat.SSN:
                            result = ValidateSSN(item, requiredMessage);
                            break;
                        case StringFormat.Date:
                            result = ValidateDate(item, requiredMessage);
                            break;
                        case StringFormat.DateTime:
                            result = ValidateDateTime(item, requiredMessage);
                            break;
                        case StringFormat.ZipCode:
                            result = ValidateZipcode(item, requiredMessage);
                            break;
                    }

                    item.IsValid = result.IsGood;
                    item.Message = result.Message;
                    item.Value = result.NewValue;
                    break;
            }

            return item;
        }