public Validation.ValidationResult validate(Lib.FieldInfo f, object value)
                {
                    Validation.ValidationResult vr = new Validation.ValidationResult();

                    vr.validationSuccess = false;

                    string s = "";

                    try
                    {
                        s = Convert.ToString(value);
                        if (s.Length <= maxLength)
                        {
                            vr.validationSuccess = true;
                        }
                        else
                        {
                            vr.validationMsg = "Строка не должны быть длинее " + maxLength.ToString() + " символов";
                        }
                    }
                    catch
                    {
                        vr.validationMsg = "Ошибка проверки строки: функция strMaxLengthCheck";
                    }
                    return(vr);
                }
                Validation.ValidationResult _com_symbol_double(Lib.FieldInfo f, object value)
                {
                    //посимвольный валидатор числа double
                    //в поле можно вводить числа и сепаратор
                    bool   itsDigit;
                    bool   itsSeparator;
                    string rez = "";

                    string source    = Convert.ToString(value);
                    string separator = Convert.ToString(this.separator);

                    for (int i = 0; i < source.Length; i++)
                    {
                        itsDigit     = "0123456789".Contains(source[i]);
                        itsSeparator = (source[i].ToString() == separator);
                        if (itsDigit || itsSeparator)
                        {
                            rez += source[i];
                        }
                    }

                    Validation.ValidationResult vr = new Validation.ValidationResult();
                    vr.validationSuccess = true; //символьная валидация всегда возвращает true  и пакет символов, которые ее прошли
                    vr.validatedValue    = rez;
                    return(vr);
                }
                Validation.ValidationResult _priceLessThan60(Lib.FieldInfo f, object value)
                {
                    Lib.CommonOperationResult convrez = Lib.convertedObjectRIFDCTypes(f.fieldType, value);
                    if (!convrez.success)
                    {
                        return(Validation.ValidationResult.sayNo(convrez.msg));
                    }
                    value = convrez.returnedValue;

                    //этот метод проверяет число на положительность
                    Validation.ValidationResult r = new Validation.ValidationResult();
                    r.validationSuccess = false;

                    double i = Convert.ToDouble(value);

                    if (i < 60)
                    {
                        r.validationSuccess = true;
                    }
                    else
                    {
                        r.validationMsg = "Цена большого латте должна быть не более 60 рэ";
                    }
                    return(r);
                }
Example #4
0
        public static ValidationResult validate(Lib.FieldInfo f, ValidationTypeEnum validationType, object value)
        {
            ValidationResult           vr  = new ValidationResult();
            List <IValidationFunction> tmp = null;

            switch (validationType)
            {
            case ValidationTypeEnum.business:
                tmp = f.validationInfo.businessValidationRuleFullList;
                break;

            case ValidationTypeEnum.leave:
                tmp = f.validationInfo.leaveValidationRuleFullList;
                break;

            case ValidationTypeEnum.symbol:
                tmp = f.validationInfo.symbolValidationRuleFullList;
                break;
            }
            vr.validatedValue    = value;
            vr.validationSuccess = true;

            foreach (IValidationFunction ivf in tmp)
            {
                vr = ivf.validate(f, vr.validatedValue);
                if (vr.validationSuccess == false)
                {
                    return(vr); //если какая -то из валидационных функций не пропустит, то выход
                }
            }
            return(vr);
        }
Example #5
0
        internal override void doSearch()
        {
            //функция, которая, собственно, парсит строку и выполняет поиск
            if (tbSearchStr == null)
            {
                return;
            }
            if (tbSearchStr.Text.Trim() == "")
            {
                return;
            }

            string[] s = tbSearchStr.Text.Split(' ');

            //теперь надо поиск. поиск может быть по всем словам (AND) или только по одному (OR) сделаем пока по AND

            //здесь по or, т.к. смысл такой, что поле А содержит слово, или поле Б содержит слово и т.д.
            Lib.Filter filter = new Lib.Filter(Lib.RIFDC_LogicalOperators.AND);

            //надо сегенить ФЕ вида (полеА-contains-слово1 AND полеА-contains-слово1) ...

            //List<Lib.FieldInfo> targetFields = parent.dataSource.sampleObject.fieldsInfo.getMySearchableFields();

            Lib.FieldInfo f = parent.dataSource.sampleObject.fieldsInfo.getFieldInfoObjectByFieldClassName("searchable");


            s.ToList().ForEach(piece => {
                filter.addNewFilteringRule(f, Lib.RIFDC_DataCompareOperatorEnum.contains, piece, Lib.Filter.FilteringRuleTypeEnum.SearchFilteringRule);
            });
            parent.dataSource.filtration.resetSearshFilter(filtrationType);
            parent.applyLocalFilter(filter);
        }
Example #6
0
        public DataColumn addDataColumn(string srcFieldClassName, int colWidth, string caption = "")
        {
            Lib.FieldInfo f = t.fieldsInfo.getFieldInfoObjectByFieldClassName(srcFieldClassName);
            if (f == null)
            {
                fn.dp("Ошибка маппинга: не найден fieldInfo для поля " + srcFieldClassName);
                return(null);
            }

            if (caption == "")
            {
                caption = f.caption;
            }
            if (caption == "")
            {
                caption = srcFieldClassName;
            }

            DataColumn dc = new DataColumn();

            dc.caption          = caption;
            dc.srcDataFieldName = srcFieldClassName;
            dc.srcDataFieldType = f.fieldType;
            dc.colWidth         = colWidth;
            dataColumns.Add(dc);
            return(dc);
        }
                public Validation.ValidationResult validate(Lib.FieldInfo f, object value)
                {
                    //оставляет в строке только буквы и пробелы
                    Validation.ValidationResult vr = new Validation.ValidationResult();
                    Regex  regex;
                    string source = Convert.ToString(value);

                    source = fn.strRemoveArrSymbols(source, @"\|/^");
                    regex  = new Regex("[^a-zA-Zа-яА-Я0-9 ]", RegexOptions.IgnoreCase);
                    source = regex.Replace(source, "");

                    vr.validatedValue    = source;
                    vr.validationSuccess = true;
                    return(vr);
                }
Example #8
0
        private void Dgr_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (data.dataSource == null)
            {
                return;
            }

            //вот тут
            int col = e.ColumnIndex; //если индекс = 6, то column будет +1

            //это имя поля
            try
            {
                string        cName = data.dataColumns[col - 1].srcDataFieldName;
                Lib.FieldInfo f     = data.dataSource.sampleObject.getFieldInfoByFieldClassName(cName);

                Lib.Sorter.SortingRule _x          = data.dataSource.sort.myActualSorter.ruleOnTheField(f);
                Lib.Sorter             myNewSorter = new Lib.Sorter();
                Lib.AscDescSortEnum    dir         = Lib.AscDescSortEnum.Asc;

                if (_x != null)
                {
                    if (_x.sortingDirection == Lib.AscDescSortEnum.NotSpecified || _x.sortingDirection == Lib.AscDescSortEnum.Desc)
                    {
                        dir = Lib.AscDescSortEnum.Asc;
                    }
                    else
                    {
                        dir = Lib.AscDescSortEnum.Desc;
                    }
                }

                //Logger.log("GRIDSORT", f.fieldClassName +"___"+ dir.ToString());

                myNewSorter.addNewSortingRule(f, dir);

                ImSorted(myNewSorter);

                setGridHeadersFromSorter(myNewSorter);

                //data.dataSource.sort.applySorter(myNewSorter);
            }
            catch (Exception e1)
            {
                //ну просто не будет сортировать
                fn.dp(e1.Message);
            }
        }
                Validation.ValidationResult _correctDateEntered_ddmmyyy(Lib.FieldInfo f, object value)
                {
                    //этот метод проверяет, что введена корректная дата dd mm yyyy
                    Validation.ValidationResult r = new Validation.ValidationResult();
                    r.validationSuccess = false;

                    if (f.fieldType != Lib.FieldTypeEnum.Date)
                    {
                        return(r);
                    }

                    DateTime dt;

                    bool nullable = (f.nullabilityInfo.allowNull);
                    bool isNull   = (value == null);

                    if (nullable && isNull)
                    {
                        return(Validation.ValidationResult.sayOk());
                    }

                    if ((!nullable) && isNull)
                    {
                        return(Validation.ValidationResult.getInstance(true, "", f.nullabilityInfo.defaultValue));
                    }

                    string[] formats = { "dd.MM.yyyy", "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
                                         "dd/MM/yy",   "dd/M/yy",    "d/M/yy",    "d/MM/yy" };

                    bool b1 = DateTime.TryParseExact(value.ToString(), formats,
                                                     System.Globalization.CultureInfo.InvariantCulture,
                                                     System.Globalization.DateTimeStyles.None, out dt);


                    //   DateTime.TryParseExact(value.ToString(), "dd.MM.yyyy HH.mm.ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
                    //bool b2 = DateTime.TryParseExact(value.ToString(), "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt1);
                    if (b1)
                    {
                        return(Validation.ValidationResult.getInstance(true, "", dt));
                    }
                    else
                    {
                        //Logger.log("DATA", "");
                        return(Validation.ValidationResult.getInstance(false, "Необходимо ввести корректную дату"));
                    }
                }
                private Validation.ValidationResult _com_leave_double(Lib.FieldInfo f, object value)
                {
                    //валидатор числа double с несколькими знаками после запятой и разделителем
                    //оставить только один сепаратор, последний в строке
                    //оставить указанное кол-во знаков после запятой

                    //предполагается, что у нас там только числа и сепаратор, т.е. ввод фильтровался
                    //value = Lib.convertedObjectRIFDCTypes(f.fieldType, value);
                    bool itsSeparator;
                    bool separatorFound = false;
                    int  digits;
                    int  sepPosition = -1;

                    string source = Convert.ToString(value);
                    string rez    = "";
                    string A      = "";
                    string B      = "";
                    int    i;

                    Validation.ValidationResult vr = new Validation.ValidationResult();
                    string separator = this.separator.ToString();

                    digits = this.howMenyDigits;

                    if (source.Length == 0)
                    {
                        //можно сразу выйти, т.к. нечего проверять
                        vr.validationSuccess = true;
                        return(vr);
                    }

                    //мы предполагаем, что есть 1 сепаратор, он последний в строке, и его надо оставить, остальные убрать
                    //идем с конца строки

                    for (i = source.Length - 1; i >= 0; i--)
                    {
                        itsSeparator = (source[i].ToString() == separator);

                        if (!itsSeparator)
                        {
                            rez = source[i].ToString() + rez;
                        }

                        if (itsSeparator && (!separatorFound))
                        {
                            separatorFound = true;
                            rez            = source[i].ToString() + rez;
                            sepPosition    = i;
                        }

                        if (itsSeparator && separatorFound)
                        {
                            //ничего не делаем, пропускаем, пишу это для ясности
                        }
                    }

                    //теперь надо понять, какая часть целая, какая дробная
                    source         = rez;
                    separatorFound = false;

                    for (i = 0; i < source.Length; i++)
                    {
                        itsSeparator = (source[i].ToString() == separator);

                        if (itsSeparator && (!separatorFound))
                        {
                            separatorFound = true;
                        }

                        if (!itsSeparator && (!separatorFound))
                        {
                            A += source[i].ToString();
                        }
                        if (!itsSeparator && (separatorFound))
                        {
                            B += source[i].ToString();
                        }
                    }

                    if (A == "")
                    {
                        A = "0";
                    }
                    rez = A + ((B == "") ? "" : separator + B);

                    //теперь округление

                    double d = Convert.ToDouble(rez);

                    if (digits < 0)
                    {
                        digits = 0;
                    }
                    d   = Math.Round(d, digits, MidpointRounding.ToEven);
                    rez = d.ToString();

                    //теперь такая штука: количество знаков после сепа должно быть = digits
                    //если сепа нет - добавить
                    sepPosition = rez.IndexOf(separator[0]);
                    if (sepPosition == -1)
                    {
                        rez        += separator;
                        sepPosition = rez.Length - 1;
                    }

                    int n = digits - (rez.Length - sepPosition - 1);

                    if (n > 0)
                    {
                        rez = rez + fn.strRepeater("0", n);
                    }

                    vr.validationSuccess = true;
                    vr.validatedValue    = rez;
                    return(vr);
                }
 public Validation.ValidationResult validate(Lib.FieldInfo f, object value)
 {
     return(_com_leave_double(f, value));
 }
 public Validation.ValidationResult validate(Lib.FieldInfo f, object value)
 {
     return(_correctDateEntered_ddmmyyy(f, value));
 }
 public Validation.ValidationResult validate(Lib.FieldInfo f, object value)
 {
     return(_priceLessThan60(f, value));
 }
 public Validation.ValidationResult validate(Lib.FieldInfo f, object value)
 {
     return(_com_symbol_int(f, value));
 }
Example #15
0
        private DataGridViewRow readDataGridViewRow(IKeepable t, DataGridView _dg, DataGridViewRow dgr, bool reRead = false, string colorCode = "")
        {
            //читает row из объекта
            //теперь поехали перебирать колонки
            DataGridViewCell workingCell = null;

            ObjectParameters.ObjectParameter val = null;

            string stringValue = "";
            bool   readOnlyCell;

            Lib.FieldInfo f = null;
            DateTime      dateTime;
            bool          itsNull;

            for (int i = 0; i < data.dataColumns.Count; i++)
            {
                f = t.fieldsInfo.getFieldInfoObjectByFieldClassName(data.dataColumns[i].srcDataFieldName);
                if (f == null)
                {
                    return(dgr);
                }

                itsNull = f.isNull;

                val = ObjectParameters.getObjectParameterByName(t, data.dataColumns[i].srcDataFieldName);

                switch (f.fieldType)
                {
                case Lib.FieldTypeEnum.Date:
                    dateTime    = Convert.ToDateTime(val.value);
                    stringValue = (itsNull) ? "" : dateTime.ToString("dd.MM.yyyy");
                    break;

                case Lib.FieldTypeEnum.Time:
                    dateTime    = Convert.ToDateTime(val.value);
                    stringValue = (itsNull) ? "" : dateTime.ToString("hh:mm:ss");
                    break;

                case Lib.FieldTypeEnum.DateTime:
                    dateTime    = Convert.ToDateTime(val.value);
                    stringValue = (itsNull) ? "" : dateTime.ToString("dd.MM.yyyy hh:mm:ss");
                    break;

                case Lib.FieldTypeEnum.Int:
                case Lib.FieldTypeEnum.Double:
                    stringValue = (itsNull) ? "" : fn.toStringNullConvertion(val.value);
                    break;


                case Lib.FieldTypeEnum.String:
                case Lib.FieldTypeEnum.Memo:
                    stringValue = (itsNull) ? "" : fn.toStringNullConvertion(val.value);
                    break;

                default:
                    stringValue = fn.toStringNullConvertion(val.value);
                    break;
                }

                workingCell  = reRead ? dgr.Cells[i + 1] : new DataGridViewTextBoxCell();
                readOnlyCell = true; // (editabilityMode== DataGridEditabilityMode.NotEditableAtAll) ? false :

                switch (_dg.Columns[i + 1].CellType.Name)
                {
                case "DataGridViewTextBoxCell":
                    workingCell.Value = (val == null) ? "" : (val.value == null ? "" : stringValue);
                    break;

                case "DataGridViewCheckBoxCell":
                    workingCell.Value = (val == null) ? false : (bool)val.value;
                    //fn.dp("newCell.Value=" + newCell.Value.ToString());
                    break;

                    //TODO здесь другие типы контролов
                }

                if (!reRead)
                {
                    dgr.Cells.Add(workingCell);
                }
                workingCell.ReadOnly = readOnlyCell;
            }

            //раскраска
            //если пустая строка, убрать раскраску

            if (colorCode == "")
            {
                dgr.DefaultCellStyle.BackColor = Color.White;
            }

            if (paint != null)
            {
                Color c = paint.getMyColor(t);

                //  fn.dp("COLOR=" + c.ToString());
                //if (c==Color.White) fn.dp ()

                dgr.DefaultCellStyle.BackColor = paint.getMyColor(t);
            }
            return(dgr);
        }