public ModuleDTO Add(ModuleDTO moduleDTO)
        {
            var module = moduleDTO.ToModel();

            module.Id      = IdentityGenerator.NewSequentialGuid();
            module.Created = DateTime.UtcNow;

            if (module.Name.IsNullOrBlank())
            {
                throw new DefinedException(UserSystemMessagesResources.Name_Empty);
            }

            if (_Repository.Exists(module))
            {
                throw new DataExistsException(string.Format(UserSystemMessagesResources.Module_Exists_WithValue, module.Name));
            }

            _Repository.Add(module);

            #region 操作日志

            var moduleDto = module.ToDto();

            OperateRecorder.RecordOperation(moduleDto.Id.ToString(),
                                            UserSystemMessagesResources.Add_Module,
                                            moduleDto.GetOperationLog());

            #endregion

            //commit the unit of work
            _Repository.UnitOfWork.Commit();

            return(module.ToDto());
        }
        public void Update(ModuleDTO moduleDTO)
        {
            //get persisted item
            var module = _Repository.Get(moduleDTO.Id);

            if (module == null)
            {
                throw new DataNotFoundException(UserSystemMessagesResources.Module_NotExists);
            }

            var oldDTO = module.ToDto();

            var current = moduleDTO.ToModel();

            module.Name      = current.Name;
            module.SortOrder = current.SortOrder;

            if (module.Name.IsNullOrBlank())
            {
                throw new DefinedException(UserSystemMessagesResources.Name_Empty);
            }

            if (_Repository.Exists(module))
            {
                throw new DataExistsException(string.Format(UserSystemMessagesResources.Module_Exists_WithValue, module.Name));
            }

            #region 操作日志

            var moduleDto = module.ToDto();

            OperateRecorder.RecordOperation(oldDTO.Id.ToString(),
                                            UserSystemMessagesResources.Update_Module,
                                            moduleDto.GetOperationLog(oldDTO));

            #endregion

            //commit unit of work
            _Repository.UnitOfWork.Commit();
        }