Beispiel #1
0
        public virtual async Task <string> GetNextChildCodeAsync(long?parentId)
        {
            var lastChild = await GetLastChildOrNullAsync(parentId);

            if (lastChild == null)
            {
                var parentCode = parentId != null ? await GetCodeAsync(parentId.Value) : null;

                return(DataDictionay.AppendCode(parentCode, DataDictionay.CreateCode(1)));
            }

            return(DataDictionay.CalculateNextCode(lastChild.Code));
        }
Beispiel #2
0
        public virtual async Task MoveAsync(long id, long?parentId)
        {
            var dataDictionay = await DataDictionayRepository.GetAsync(id);

            if (dataDictionay.ParentId == parentId)
            {
                return;
            }
            var children = await FindChildrenAsync(id);

            var oldCode = dataDictionay.Code;

            dataDictionay.Code = await GetNextChildCodeAsync(parentId);

            dataDictionay.ParentId = parentId;
            await ValidateDataDictionayAsync(dataDictionay);

            //更新
            foreach (var child in children)
            {
                child.Code = DataDictionay.AppendCode(dataDictionay.Code,
                                                      DataDictionay.GetRelativeCode(child.Code, oldCode));
            }
        }