示例#1
0
        private static bool IsCorrectDataType(this FFParameterTypes parameterType, object value)
        {
            //если пустое значение, считаем, что правильно
            if (value == null || (String.IsNullOrWhiteSpace(value.ToString())))
            {
                return(true);
            }

            var val = value.ToString();

            switch (parameterType)
            {
            case FFParameterTypes.Boolean:
                bool b;
                var  coll = val.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                return(coll.Length <= 0 || Boolean.TryParse(coll[0], out b));

            case FFParameterTypes.Numeric:
            case FFParameterTypes.NumericPositive:
                double d;
                return(Double.TryParse(val, out d));

            case FFParameterTypes.NumericNatural:
            case FFParameterTypes.NumericInteger:
                int i;
                var res = Int32.TryParse(val, out i);
                if (res && (parameterType == FFParameterTypes.NumericNatural))
                {
                    res = i >= 0;                                                                //нули тоже можно
                }
                return(res);

            case FFParameterTypes.String:
                return(true);

            case FFParameterTypes.Date:
            case FFParameterTypes.DateTime:
                DateTime dt;
                return(DateTime.TryParse(val, out dt));
            }
            return(false);
        }
示例#2
0
        public static object ConvertToRealDataType(this FFParameterTypes parameterType, FFParameterEditors parameterEditor, object value)
        {
            //инициализационное значение присваивается новому параметру, чтобы его можно было редактировать
            var isInitValue = value == DBNull.Value;

            if (!isInitValue && (value == null || String.IsNullOrWhiteSpace(value.ToString())))
            {
                return(value);
            }

            object realvalue;

            switch (parameterType)
            {
            case FFParameterTypes.Boolean:
                if (isInitValue)
                {
                    return(false);
                }
                //в вебе из чекбокса приходит "true,false" или "false"
                var str = value.ToString().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                if (str.Length > 0)
                {
                    switch (str[0])
                    {
                    case "1":
                        str[0] = "true";
                        break;

                    case "0":
                        str[0] = "false";
                        break;
                    }
                    realvalue = (str.Length > 0) && Convert.ToBoolean(str[0]);
                }
                else
                {
                    realvalue = false;
                }

                break;

            case FFParameterTypes.Numeric:
            case FFParameterTypes.NumericPositive:
                if (isInitValue)
                {
                    return(0);
                }
                double d;
                realvalue = Double.TryParse(value.ToString(), out d) ? d : 0;
                break;

            case FFParameterTypes.NumericNatural:
            case FFParameterTypes.NumericInteger:
                if (isInitValue)
                {
                    return(0);
                }
                int i;
                realvalue = Int32.TryParse(value.ToString(), out i) ? i : 0;
                break;

            case FFParameterTypes.String:
                if (parameterEditor.Equals(FFParameterEditors.ComboBox))
                {
                    if (isInitValue)
                    {
                        return(0);
                    }
                    long l;
                    return(Int64.TryParse(value.ToString(), out l) ? l : 0);
                }
                if (isInitValue)
                {
                    return(String.Empty);
                }
                realvalue = value.ToString();
                break;

            case FFParameterTypes.Date:
            case FFParameterTypes.DateTime:
                if (isInitValue)
                {
                    return(DateTime.MinValue);
                }
                DateTime dt;
                realvalue = DateTime.TryParse(value.ToString(), out dt) ? dt :
                            (DateTime.TryParseExact(value.ToString(), "yyyy-MM-dd", null, System.Globalization.DateTimeStyles.None, out dt) ? dt : DateTime.MinValue);
                break;

            default:
                return(isInitValue ? String.Empty : value.ToString());
            }

            return(realvalue);
        }