Beispiel #1
0
        public override string GetJsForSettingProperty()
        {
            string retStr;
            var error = new ValidateErrorList();
            foreach (var _b in Control.Binders.Where((b) => b is ValidatorBinder))
            {
                var b = _b as ValidatorBinder;
                if (b.ModelValidateMethod == null && b.ModelValidateMethodName == null)
                    throw new Exception(nameof(ValidatorBinder) + ": модель '" + Control.Model.GetType().FullName + "', control '" + Control.GetType().FullName + "' - для привязки нужно указать или имя validate-метода или сам validate-метод");

                if (b.ModelValidateMethod != null)
                {
                    b.ModelValidateMethod(error);
                }
                else
                if (b.ModelValidateMethodName != null)
                {
                    Control.Model.InvokeMethod(b.ModelValidateMethodName, error);
                }
            }

            if (!error.IsEmpty)
                retStr = "$('#" + Control.UniqueId + "-error-text').removeClass('hidden').html(" + error.ToHtmlStringOnlyMessages().AsJavaScript() + "); $('#" + Control.UniqueId + "').parents('.form-group').first().addClass('has-error');";
            else
                retStr = "$('#" + Control.UniqueId + "-error-text').addClass('hidden');$('#" + Control.UniqueId + "').parents('.form-group').first().removeClass('has-error');";

            foreach (var _b in Control.Binders.Where((b) => b is ValidatorBinder))
            {
                if (_b != this)
                    _b.LastSendedText = retStr;
            }

            return retStr;
        }
        public override void SaveChanges()
        {
            ActivateAllValidatorBinders();

            var errors = new ValidateErrorList();
            Column.Validate(errors);
            if (!errors.IsEmpty)
            {
                ShowErrorMessageDialog("Есть ошибки", "@" + errors.ToHtmlString());
            }
            else
            {
                base.SaveChanges();
                Modal.Close();
                if (ParentModel != null)
                {
                    ParentModel.Update(true);
                    (ParentModel as SchemaTableDesignerModel).SelectedColumnByColumnName(Column.Name);
                }
            }
        }
        public virtual void Validate(ValidateErrorList error)
        {
            //if (ReportID == null)
            //{
            //    error.AppendLine("У привязанной печатной формы не указан шаблон.");
            //}

            //var report = App.Schema.GetSampleObject<SchemaReport>((Guid)ReportID);
            //if (ReportID == null)
            //{
            //    error.AppendLine("У привязанной печатной формы указан неверный шаблон.");
            //}

            //if (Copies < 0)
            //{
            //    error.AppendLine("У привязанной печатной формы указано отрицательное к-во копий");
            //}

            //if (Copies == 0)
            //{
            //    error.AppendLine("У привязанной печатной формы указано нулевое к-во копий");
            //}
        }
        public override void SaveChanges()
        {
            ActivateAllValidatorBinders();

            var errors = new ValidateErrorList();
            Column.Validate(errors);
            if (!errors.IsEmpty)
            {
                ShowErrorMessageDialog("Есть ошибки", "@" + errors.ToHtmlString());
            }
            else
            {
                //var newDataType = EditedColumnDataTypes.Find((dt) => dt.Name == EditedColumnDataTypeName);
                //Column.DataType = newDataType.Clone();// (SqlDataType)Activator.CreateInstance(newDataType.GetType());
                //Column.DataType.Column = Column;

                Column.Table.Columns.Add(Column);

                base.SaveChanges();
                Modal.Close();
                if (ParentModel != null)
                {
                    ParentModel.Update(true);
                    (ParentModel as SchemaTableDesignerModel).SelectedColumnByColumnName(Column.Name);
                }
            }
        }
Beispiel #5
0
        public override void Validate(ValidateErrorList error)
        {
            base.Validate(error);

            if (Name != null && Name.Length > 128)
                error.AddError("Имя таблицы", "Имя таблицы длинее 128 символов.");

            if (TableRoles.Count == 0)
                error.AddError("Роли", "Не указана ни одна роль таблицы.");

            foreach (var helperTable in App.Schema.HelperTables)
            {
                if (Name != null && Name.Equals(helperTable.Name, StringComparison.OrdinalIgnoreCase))
                    error.AddError("Имя таблицы", "Таблица не может называться " + Name.AsSQL() + ", есть такая системная таблица.");
            }

            if (Name != null && Name.StartsWith(logPrefix, StringComparison.OrdinalIgnoreCase))
                error.AddError("Имя таблицы", "Имя таблицы не может начинаться с '" + logPrefix + "'");

            // уникальность имен колонок
            var uniqueList = new HashSet<string>();
            foreach (var tableCol in Columns)
            {
                if (uniqueList.Contains(tableCol.Name))
                    error.AddError("Таблица", "Есть несколько колонок с именем " + tableCol.Name.AsSQL());
                else
                    uniqueList.Add(tableCol.Name);
            }

            // валидация колонок
            foreach (var tableCol in Columns)
                tableCol.Validate(error);

            // валидация деталей
            foreach (var tableDetail in Details)
                tableDetail.Validate(error);

            // валидация привязнных печатных форм
            foreach (var linkedReport in LinkedReports)
                linkedReport.Validate(error);

            foreach (var tableRoleID in TableRoles)
            {
                if (!SchemaBaseRole.Roles.ContainsKey(tableRoleID))
                {
                    error.AddError(Name, "У таблицы указана неверная роль: " + tableRoleID.AsSQL());
                }
                else
                {
                    var role = SchemaBaseRole.Roles[tableRoleID];
                    if (role is Таблица_TableRole)
                    {
                        var tableRole = role as Таблица_TableRole;

                        // проверка наличия обязательных ролевых полей
                        foreach (var roleCol in tableRole.Columns.Where(col => col.IsRequiredColumn))
                        {
                            foreach (var tableCol in Columns)
                            {
                                if (tableCol.ColumnRoles.Contains(roleCol.ID))
                                    goto m1;
                            }
                            error.AddError(Name, "Отсутствует обязательная колонка с ролью: " + roleCol.Name.AsSQL());
                            m1:;
                        }

                        // проверка наличия обязательных ролевых полей
                        foreach (var roleCol in tableRole.Columns.Where(col => !col.IsMultiColumn))
                        {
                            int count = 0;
                            foreach (var tableCol in Columns)
                            {
                                if (tableCol.ColumnRoles.Contains(roleCol.ID))
                                    count++;
                            }
                            if (count > 1)
                                error.AddError(Name, "Есть несколько колонок с уникальной ролью: " + roleCol.Name.AsSQL());
                        }
                    }
                    else
                    {
                        error.AddError(Name, "У таблицы указана неверная роль: " + role.Name.AsSQL());
                    }
                }
            }
        }
Beispiel #6
0
 public virtual void Validate(ValidateErrorList errors)
 {
     if (Column == null)
         errors.AddError(Name,"У типа данных не заполнено поле 'Column'.");
 }
Beispiel #7
0
 public virtual void Validate_Roles(ValidateErrorList error)
 {
     if (ColumnRoles.Count == 0 && !(this is SchemaTableSystemColumn))
         error.AddError(Name, "У колонки нет ролей.");
 }
Beispiel #8
0
        public virtual void Validate_Name(ValidateErrorList error)
        {
            if (string.IsNullOrWhiteSpace(Name))
                error.AddError(Name,"Имя колонки не может быть пустым");

            if (Name != null && Name.Length > 128)
                error.AddError(Name, "Имя колонки длинее 128 символов");

            if (!Table.Columns.Contains(this) && Table.GetColumnByName(Name) != null) // колонка в процессе добавления
                error.AddError(Name, "уже есть колонка с таким именем");
        }
Beispiel #9
0
        public virtual void Validate(ValidateErrorList error)
        {
            Validate_Name(error);
            Validate_Roles(error);
            //if (string.IsNullOrWhiteSpace(Name))
            //    error.AppendLine("У колонки не заполнено поле 'Имя'.");

            //if (Name != null && Name.Length > 128)
            //    error.AppendLine("Имя колонки длинее 128 символов: " + Name.Substring(0, 50).AsSQL());

            if (DataType == null)
                error.AddError(Name, "У колонки не заполнено поле 'Тип данных'.");

            if (Table == null)
                error.AddError(Name, "У колонки не заполнено поле 'Таблица'.");

            //if (ColumnRoles.Count == 0 && !(this is SchemaTableSystemColumn))
              //  error.AppendLine("У колонки " + Name.AsSQL() + " нет ролей.");

            if (DataType != null)
                DataType.Validate(error);
        }
Beispiel #10
0
        public virtual void Validate(ValidateErrorList error)
        {
            if (string.IsNullOrWhiteSpace(Name))
            {
                error.AddError(Name, "У детали не заполнено поле 'Имя'.");
                Name = "";
            }

            if (DetailTableID == null)
                error.AddError(Name, "У детали не заполнена соответствующая таблица.");

            if (DetailQueryID == null)
                error.AddError(Name, "У детали не заполнен запрос для отображения.");

            if (Opers.Count > 0 && DetailTableID != null)
            {
                if (GetDetailTable(true).GetColumnByRole(RoleConst.ВложеннаяТаблица_БизнесОперация)==null)
                    error.AddError(GetDetailTable().Name, "У деталь-таблицы должна быть колонка с ролью 'ВложеннаяТаблица.БизнесОперация'.");

            }
        }
Beispiel #11
0
 public virtual void Validate(ValidateErrorList error)
 {
     if (ID == Guid.Empty)
         error.AddError(Name, "Пустое поле 'ID'.");
     if (string.IsNullOrWhiteSpace(Name))
         error.AddError(Name, "Не заполнено поле 'Имя'.");
 }
Beispiel #12
0
        public override void Validate(ValidateErrorList error)
        {
            base.Validate(error);

            if (RefTableID == null)
                error.AddError((Column.Name == null ? "?" : Column.Name),"У колонки не заполнена ссылка на таблицу - внешний ключ.");
            else
            {
                if (!SchemaBaseRole.Roles.ContainsKey((Guid)RefTableID))
                {
                    var table = App.Schema.GetObject<SchemaTable>((Guid)RefTableID);
                    if (table == null)
                        error.AddError((Column.Name == null ? "?" : Column.Name), "У колонки неверная ссылка на таблицу - внешний ключ.");
                }
            }
        }