/// <summary> /// Check if there are same names at the same tree level /// </summary> /// <param name="tree"></param> /// <returns></returns> private void CheckSameName(TTree tree) { if (_generalTreeRepository.GetAll().Where(x => x.ParentId == tree.ParentId && x.Id != tree.Id).WhereIf( _generalTreeConfiguration.CheckSameNameExpression != null, x => _generalTreeConfiguration.CheckSameNameExpression(x, tree)) .Any(x => x.Name == tree.Name)) { throw new UserFriendlyException(_generalTreeConfiguration.ExceptionMessageFactory.Invoke(tree)); } }
/// <summary> /// Check if there are same names at the same tree level /// </summary> /// <param name="tree"></param> /// <returns></returns> private void CheckSameName(TTree tree) { if (_generalTreeConfiguration.CheckSameNameExpression == null) { if (!_generalTreeRepository.GetAll().Where(x => x.ParentId == tree.ParentId && x.Id != tree.Id) .Any(x => x.Name == tree.Name)) { return; } } else { var trees = _generalTreeRepository.GetAll().Where(x => x.ParentId == tree.ParentId && x.Id != tree.Id) .Where(x => x.Name == tree.Name).ToList(); if (!trees.Any() || !trees.Any(x => _generalTreeConfiguration.CheckSameNameExpression(x, tree))) { return; } } throw new UserFriendlyException(_generalTreeConfiguration.ExceptionMessageFactory.Invoke(tree)); }