/// <summary>
        /// Порядок проверки.
        /// 1 - проверка наличия объекта в контексте.
        /// 2 - проверка по notNull полям
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public ValidateContextResult Validate(TEntity item)
        {
            ValidateContextResult result = new ValidateContextResult();

            result.Status = ResultStatus.Success;

            //if (_applicationContext.Set<TEntity>().Local.FirstOrDefault(x => x == item) == null)
            //{
            //    result.AddError("Объект не найден в контексте для проверки обязательных полей");
            //}
            //else
            //{
            var entry      = _applicationContext.Entry(item);
            var properties = _applicationContext.Entry(item).Metadata.GetProperties();
            ValidateContextResultItem validateContextResultItem = new ValidateContextResultItem()
            {
                Name = GetNameFieldOrClass(entry.Entity.GetType())
            };

            foreach (var property in properties)
            {
                //TODO: Сделать валидацию вложенных объектов
                // if (entry.Entity is DomainObject)
                //      result.Merge(Validate(entry.Entity));
                // else
                //  {
                var value = property.PropertyInfo?.GetValue(entry.Entity);
                if (!property.IsNullable && value == null)
                {
                    validateContextResultItem.Fields.Add(new ValidateContextResultItem()
                    {
                        Name = GetNameFieldOrClass(property.PropertyInfo)
                    });
                }
                //  }
            }
            if (validateContextResultItem.Fields.Count() > 0)
            {
                result.AddEntity(validateContextResultItem);
            }
            //  }

            return(result);
        }
Example #2
0
        /// <summary>
        /// Формирование сообщения с ошибкой
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        private string CreateErrorMessage(ValidateContextResultItem entity)
        {
            string messageError = string.Empty;

            if (entity.Fields?.Count > 0)
            {
                messageError = (!string.IsNullOrWhiteSpace(Message) ? Environment.NewLine : "") + $"Не пройдена проверка записи \"{entity.Name}\":";
            }
            else
            {
                messageError = Environment.NewLine + $"Не заполнено значение \"{entity.Name}\".";
            }
            foreach (var field in entity.Fields)
            {
                messageError += CreateErrorMessage(field);
            }

            return(messageError);
        }
Example #3
0
 public void AddEntity(ValidateContextResultItem entity)
 {
     AddError(CreateErrorMessage(entity));
     _listEntity.Add(entity);
 }