Beispiel #1
0
        /// <summary>
        /// 添加模块信息信息
        /// </summary>
        /// <param name="dto">要添加的模块信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        public virtual async Task <OperationResult> CreateModule(TModuleInputDto dto)
        {
            dto.CheckNotNull("dto");
            if (await ModuleRepository.CheckExistsAsync(m => m.Name == dto.Name))
            {
                return(new OperationResult(OperationResultType.Error, "名称为“{0}”的模块已存在,不能重复添加".FormatWith(dto.Name)));
            }
            TModule module = dto.MapTo <TModule>();

            if (dto.ParentId.HasValue)
            {
                TModule parent = await ModuleRepository.GetByKeyAsync(dto.ParentId.Value);

                if (parent == null)
                {
                    return(new OperationResult(OperationResultType.Error, "编号为“{0}”的父模块信息不存在".FormatWith(dto.ParentId.Value)));
                }
                module.Parent = parent;
            }
            else
            {
                module.Parent = default(TModule);
            }
            module.TreePathString = module.GetTreePath();
            await ModuleRepository.InsertAsync(module);

            return(OperationResult.Success);
        }
Beispiel #2
0
        /// <summary>
        /// 添加模块信息信息
        /// </summary>
        /// <param name="dto">要添加的模块信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        public virtual async Task <OperationResult> CreateModule(TModuleInputDto dto)
        {
            dto.CheckNotNull("dto");
            var exist = ModuleRepository.Entities.Where(m => m.Name == dto.Name && m.Parent != null && m.Parent.Id.Equals(dto.ParentId))
                        .Select(m => new { ParentName = m.Parent.Name }).FirstOrDefault();

            if (exist != null)
            {
                return(new OperationResult(OperationResultType.Error, "模块“{0}”中已存在名称为“{1}”的子模块,不能重复添加".FormatWith(exist.ParentName, dto.Name)));
            }

            TModule entity = dto.MapTo <TModule>();
            //排序码,不存在为1,否则同级最大+1
            var peerModules = ModuleRepository.Entities.Where(m => m.Parent.Id.Equals(dto.ParentId)).Select(m => new { m.OrderCode }).ToArray();

            if (peerModules.Length == 0)
            {
                entity.OrderCode = 1;
            }
            else
            {
                double maxCode = peerModules.Max(m => m.OrderCode);
                entity.OrderCode = maxCode + 1;
            }
            //父模块
            if (!dto.ParentId.Equals(default(TModuleKey)))
            {
                TModule parent = await ModuleRepository.GetByKeyAsync(dto.ParentId);

                if (parent == null)
                {
                    return(new OperationResult(OperationResultType.Error, "编号为“{0}”的父模块信息不存在".FormatWith(dto.ParentId)));
                }
                entity.Parent = parent;
            }
            else
            {
                entity.Parent = default(TModule);
            }
            ModuleRepository.UnitOfWork.BeginTransaction();
            int count = await ModuleRepository.InsertAsync(entity);

            entity.TreePathString = entity.GetTreePath();
            await ModuleRepository.UpdateAsync(entity);

            return(count > 0
                ? new OperationResult(OperationResultType.Success, "模块“{0}”创建成功".FormatWith(dto.Name))
                : OperationResult.NoChanged);
        }
Beispiel #3
0
        /// <summary>
        /// 更新代码模块信息信息
        /// </summary>
        /// <param name="dtos">包含更新信息的代码模块信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        public async Task <OperationResult> UpdateCodeModules(params CodeModuleInputDto[] dtos)
        {
            List <string> names = new List <string>();

            UnitOfWork.EnableTransaction();
            foreach (var dto in dtos)
            {
                dto.Validate();
                CodeProject project = await ProjectRepository.GetAsync(dto.ProjectId);

                if (project == null)
                {
                    return(new OperationResult(OperationResultType.Error, $"编号为“{dto.ProjectId}”的项目信息不存在"));
                }

                if (await CheckCodeModuleExists(m => m.Name == dto.Name && m.ProjectId == dto.ProjectId, dto.Id))
                {
                    return(new OperationResult(OperationResultType.Error, $"项目“{project.Name}”中名称为“{dto.Name}”的模块信息已存在"));
                }

                if (dto.Order == 0)
                {
                    dto.Order = ModuleRepository.Query(m => m.ProjectId == dto.ProjectId).Count() + 1;
                }
                int count;
                if (dto.Id == default)
                {
                    CodeModule module = dto.MapTo <CodeModule>();
                    count = await ModuleRepository.InsertAsync(module);
                }
                else
                {
                    CodeModule module = await ModuleRepository.GetAsync(dto.Id);

                    module = dto.MapTo(module);
                    count  = await ModuleRepository.UpdateAsync(module);
                }
                if (count > 0)
                {
                    names.Add(dto.Name);
                }
            }

            await UnitOfWork.CommitAsync();

            return(names.Count > 0
                ? new OperationResult(OperationResultType.Success, $"模块“{names.ExpandAndToString()}”保存成功")
                : OperationResult.NoChanged);
        }