コード例 #1
0
        public override IDataValidationResults <TKey> Deleting(TKey id, IDataValidationResults <TKey> validationResults, params object[] args)
        {
            if (args == null || args.Length == 0)
            {
                throw new ArgumentNullException("args[0] should contain reference to XPO entity");
            }
            IDataValidationResults <TKey> result = new DataValidationResults <TKey>();
            TXPORole role = args[0] as TXPORole;

            if (role != null)
            {
                int userCount = (int)role.Session.Evaluate(typeof(XpoDxUser),
                                                           CriteriaOperator.Parse("Count"),
                                                           CriteriaOperator.Parse("Roles[Id == ?]", role.Id));
                if (userCount > 0)
                {
                    result.Add(new DataValidationResult <TKey>
                    {
                        ResultType = DataValidationResultType.Error,
                        ID         = id,
                        Message    = $"Role '{role.Name}' cannot be deleted because there are users in this Role"
                    });
                }
            }

            if (result == null)
            {
                result = base.Deleting(id, validationResults, args);
            }
            validationResults.AddRange(result);
            return(result);
        }
コード例 #2
0
ファイル: DataSet.cs プロジェクト: xydoublez/RDO.Net
        private static IDataValidationResults Validate(IDataValidationResults result, DataSet dataSet, int maxErrorRows, bool recursive)
        {
            foreach (var dataRow in dataSet)
            {
                if (maxErrorRows > 0 && result.Count >= maxErrorRows)
                {
                    return(result);
                }

                var errors = dataRow.Validate();
                if (errors != null && errors.Count > 0)
                {
                    result = result.Add(new DataValidationResult(dataRow, errors));
                }

                if (recursive)
                {
                    var childModels = dataSet.Model.ChildModels;
                    foreach (var childModel in childModels)
                    {
                        var childDataSet = dataRow[childModel];
                        result = Validate(result, childDataSet, maxErrorRows, recursive);
                    }
                }
            }

            return(result);
        }
コード例 #3
0
        public override IDataValidationResult <TKey> Deleting(TKey id, object arg, IDataValidationResults <TKey> validationResults)
        {
            IDataValidationResult <TKey> result = null;
            TXPORole role = arg as TXPORole;

            if (role != null)
            {
                int userCount = (int)role.Session.Evaluate(typeof(XpoDxUser),
                                                           CriteriaOperator.Parse("Count"),
                                                           CriteriaOperator.Parse("Roles[Id == ?]", role.ID));
                if (userCount > 0)
                {
                    result = new DataValidationResult <TKey>
                    {
                        ResultType = DataValidationResultType.Error,
                        ID         = role.ID,
                        Message    = String.Format("Role '{0}' cannot be deleted because there are users in this Role", role.Name)
                    }
                }
                ;
            }

            if (result == null)
            {
                result = base.Deleting(id, arg, validationResults);
            }
            validationResults.Add(result);
            return(result);
        }
    }
コード例 #4
0
ファイル: EFDataStore.cs プロジェクト: cuongpv88/DXWeb
        public override IDataValidationResults <TKey> Deleting(TKey id, IDataValidationResults <TKey> validationResults, params object[] args)
        {
            var result = new DataValidationResults <TKey>(
                new DataValidationResult <TKey>(DataValidationResultType.Success, id, string.Empty, string.Empty, 0, DataValidationEventType.Inserting));

            validationResults.AddRange(result.Results);
            return(result);
        }
コード例 #5
0
ファイル: XPDataStore.cs プロジェクト: IjaCZECH/DXWeb
        public override IDataValidationResults <TKey> Updating(TModel model, IDataValidationResults <TKey> validationResults)
        {
            var result = new DataValidationResults <TKey>(
                new DataValidationResult <TKey>(DataValidationResultType.Success, model.ID, string.Empty, string.Empty, 0, DataValidationEventType.Updating));

            validationResults.AddRange(result.Results);
            return(result);
        }
コード例 #6
0
        public override IDataValidationResult <TKey> Updating(TModel model, IDataValidationResults <TKey> validationResults)
        {
            var result = new DataValidationResult <TKey>
            {
                ResultType = DataValidationResultType.Success,
                ID         = model.ID
            };

            validationResults.Add(result);
            return(result);
        }
コード例 #7
0
        public override IDataValidationResult <TKey> Deleting(TKey id, object arg, IDataValidationResults <TKey> validationResults)
        {
            var result = new DataValidationResult <TKey>
            {
                ResultType = DataValidationResultType.Success,
                ID         = id
            };

            validationResults.Add(result);
            return(result);
        }
コード例 #8
0
        /// <summary>
        /// Sets the async validation errors.
        /// </summary>
        /// <param name="validationResults">The validation results.</param>
        public void SetAsyncErrors(IDataValidationResults validationResults)
        {
            if (_asyncErrorsByRow != null)
            {
                _asyncErrorsByRow.Clear();
            }

            for (int i = 0; i < validationResults.Count; i++)
            {
                var entry        = validationResults[i];
                var rowPresenter = _inputManager[entry.DataRow];
                if (rowPresenter != null)
                {
                    AsyncErrorsByRow.Add(rowPresenter, entry.Errors);
                }
            }
            InvalidateView();
        }
コード例 #9
0
        /// <summary>
        /// Parses JSON into <see cref="IDataValidationResults"/> object.
        /// </summary>
        /// <param name="jsonReader">The <see cref="JsonReader"/>.</param>
        /// <param name="dataSet">The DataSet of validation.</param>
        /// <returns>The <see cref="IDataValidationResults"/> object.</returns>
        public static IDataValidationResults ParseDataValidationResults(this JsonReader jsonReader, DataSet dataSet)
        {
            IDataValidationResults results = DataValidationResults.Empty;

            jsonReader.ExpectToken(JsonTokenKind.SquaredOpen);

            if (jsonReader.PeekToken().Kind == JsonTokenKind.CurlyOpen)
            {
                results = results.Add(jsonReader.ParseDataValidationResult(dataSet));

                while (jsonReader.PeekToken().Kind == JsonTokenKind.Comma)
                {
                    jsonReader.ConsumeToken();
                    results = results.Add(jsonReader.ParseDataValidationResult(dataSet));
                }
            }

            jsonReader.ExpectToken(JsonTokenKind.SquaredClose);

            return(results);
        }
コード例 #10
0
 /// <summary>
 /// Writes <see cref="IDataValidationResults"/> object into JSON.
 /// </summary>
 /// <param name="jsonWriter">The <see cref="JsonWriter"/>.</param>
 /// <param name="dataValidationResults">The <see cref="IDataValidationResults"/> object.</param>
 /// <returns>This <see cref="JsonWriter"/> for fluent coding.</returns>
 public static JsonWriter Write(this JsonWriter jsonWriter, IDataValidationResults dataValidationResults)
 {
     return(jsonWriter.WriteArray(dataValidationResults, (writer, entry) => writer.Write(entry)));
 }
コード例 #11
0
ファイル: DataValidator.cs プロジェクト: mkalinski93/DXWeb
 public abstract IDataValidationResult <TKey> Updating(TModel model, IDataValidationResults <TKey> validationResults);
コード例 #12
0
ファイル: DataValidator.cs プロジェクト: mkalinski93/DXWeb
 //public abstract bool Inserting(TModel model);
 //public abstract bool Updating(TModel model);
 //public abstract bool Deleting(TModel model);
 public abstract IDataValidationResult <TKey> Deleting(TKey id, IDataValidationResults <TKey> validationResults, params object[] args);
コード例 #13
0
ファイル: DataValidator.cs プロジェクト: mkalinski93/DXWeb
 public DataValidationException(IDataValidationResults <TKey> validationResults)
     : base()
 {
     ValidationResults = validationResults;
 }
コード例 #14
0
 //public abstract bool Inserting(TModel model);
 //public abstract bool Updating(TModel model);
 //public abstract bool Deleting(TModel model);
 public abstract IDataValidationResult <TKey> Deleting(TKey id, object arg, IDataValidationResults <TKey> validationResults);
コード例 #15
0
ファイル: EFDataStore.cs プロジェクト: cuongpv88/DXWeb
 public override IDataValidationResults <TKey> Inserting(TModel model, IDataValidationResults <TKey> validationResults)
 {
     var result = new DataValidationResults <TKey>(
         new DataValidationResult <TKey>(DataValidationResultType.Success, default, string.Empty, string.Empty, 0, DataValidationEventType.Inserting));
コード例 #16
0
 /// <summary>
 /// Serializes <see cref="IDataValidationResults"/> dictionary into JSON string.
 /// </summary>
 /// <param name="validationResults">The <see cref="IDataValidationResults"/> dictionary.</param>
 /// <param name="isPretty">Determines whether serialized JSON string should be indented.</param>
 /// <param name="customizer">The customizer for JSON serialization.</param>
 /// <returns>The serialized JSON string.</returns>
 public static string ToJsonString(this IDataValidationResults validationResults, bool isPretty, IJsonCustomizer customizer = null)
 {
     return(JsonWriter.Create(customizer).Write(validationResults).ToString(isPretty));
 }
コード例 #17
0
        public override IDataValidationResult <TKey> Inserted(TModel model, TXPOClass dbModel, IDataValidationResults <TKey> validationResults)
        {
            var result = new DataValidationResult <TKey>
            {
                ResultType = DataValidationResultType.Success,
                ID         = dbModel.ID
            };

            validationResults.Add(result);
            return(result);
        }
コード例 #18
0
        public override IDataValidationResult <TKey> Deleted(TKey id, TXPOClass dbModel, IDataValidationResults <TKey> validationResults)
        {
            var result = new DataValidationResult <TKey>
            {
                ResultType = DataValidationResultType.Success,
                ID         = id
            };

            validationResults.Add(result);
            return(result);
        }
コード例 #19
0
ファイル: EFDataStore.cs プロジェクト: cuongpv88/DXWeb
        public override IDataValidationResults <TKey> Inserted(TKey id, TModel model, TEFClass dbModel, IDataValidationResults <TKey> validationResults)
        {
            var result = new DataValidationResults <TKey>(
                new DataValidationResult <TKey>(DataValidationResultType.Success, id, string.Empty, string.Empty, 0, DataValidationEventType.Inserted));

            validationResults.AddRange(result.Results);
            return(result);
        }
コード例 #20
0
ファイル: XPDataStore.cs プロジェクト: IjaCZECH/DXWeb
        public override IDataValidationResults <TKey> Deleted(TKey id, TXPOClass dbModel, IDataValidationResults <TKey> validationResults)
        {
            var result = new DataValidationResults <TKey>(
                new DataValidationResult <TKey>(DataValidationResultType.Success, dbModel.ID, string.Empty, string.Empty, 0, DataValidationEventType.Deleted));

            validationResults.AddRange(result.Results);
            return(result);
        }