Пример #1
0
        public virtual async Task CreateAsync(DataDictionay dataDictionay)
        {
            dataDictionay.Code = await GetNextChildCodeAsync(dataDictionay.ParentId);
            await ValidateDataDictionayAsync(dataDictionay);

            await DataDictionayRepository.InsertAsync(dataDictionay);
        }
        public async Task <DataDictionayDto> CreateDataDictionry(CreateDataDictionryInput input)
        {
            var dataDictionay = new DataDictionay(AbpSession.TenantId, input.DisplayName, input.ParentId);

            await _dataDictionayManager.CreateAsync(dataDictionay);

            await CurrentUnitOfWork.SaveChangesAsync();

            return(dataDictionay.MapTo <DataDictionayDto>());
        }
Пример #3
0
        /// <summary>
        /// 验证数据字典的合法性
        /// </summary>
        /// <param name="dataDictionay"></param>
        /// <returns></returns>
        protected virtual async Task ValidateDataDictionayAsync(DataDictionay dataDictionay)
        {
            var query = (await FindChildrenAsync(dataDictionay.ParentId))
                        .Where(ou => ou.Id != dataDictionay.Id)
                        .ToList();

            if (query.Any(ou => ou.DisplayName == dataDictionay.DisplayName))
            {
                throw new UserFriendlyException(L("OrganizationUnitDuplicateDisplayNameWarning", dataDictionay.DisplayName));
            }
        }
Пример #4
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));
        }
Пример #5
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));
            }
        }
Пример #6
0
        public virtual async Task UpdateAsync(DataDictionay dataDictionay)
        {
            await ValidateDataDictionayAsync(dataDictionay);

            await DataDictionayRepository.UpdateAsync(dataDictionay);
        }