public ActionResult EditFileName(string projectGuid, string folderGuid, string fileSeriesGuid, string fileName) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(projectGuid, PermissionType.Write); CommUtils.AssertHasContent(fileName, "文件名称不能为空"); ValidateUtils.FileName(fileName, "文档名称"); CommUtils.Assert(fileName.Length <= 100, "文档名称[{0}]不能超过100个字符数", fileName); var folder = dms.FindFolder(folderGuid); folder.IgnoreNull = false; CommUtils.AssertNotNull(folder, "找不到文件夹[FolderGuid={0} DMSGuid={1}],请刷新后再试", folderGuid, dms.Instance.Guid); CommUtils.Assert(!folder.Files.Any(x => x.FileSeries.Name == fileName && x.FileSeries.Guid != fileSeriesGuid), "文件[{0}]已经存在", fileName); CommUtils.Assert(folder.Files.Exists(x => x.FileSeries.Guid == fileSeriesGuid), "文档不在文件夹下"); var fileSeries = m_dbAdapter.DMSFileSeries.GetByGuid(fileSeriesGuid); var comment = "修改文件名称[" + fileSeries.Name + "]为[" + fileName + "]"; fileSeries.Name = fileName; m_dbAdapter.DMSFileSeries.Update(fileSeries); m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, comment); return ActionUtils.Success(true); })); }
public ActionResult CreateFolders(string projectGuid, string parentFolderGuid, List <string> folderNames, List <string> folderDescriptions) { return(ActionUtils.Json(() => { folderNames.ForEach(x => ValidateUtils.FileName(x, "文档名称")); CommUtils.AssertEquals(folderNames.Count, folderDescriptions.Count, "传入folderNames和folderDescriptions长度不相等"); CommUtils.AssertEquals(folderNames.Select(x => x.ToLower()).Distinct().Count(), folderNames.Count, "传入了重复的文件夹名"); CommUtils.Assert(folderNames.Any(x => x.Length <= 100), "文件夹名称不能超过100个字符数"); CommUtils.AssertHasContent(folderNames, "文件夹名称不能为空"); var dms = GetDMSAndCheckPermission(projectGuid, PermissionType.Write); var parentFolder = m_dbAdapter.DMSFolder.GetByGuid(parentFolderGuid); CommUtils.AssertEquals(parentFolder.DMSId, dms.Instance.Id, "传入projectGuid和folderGuid不在同一个DMS中"); var sibbingFolders = dms.AllFolders.Where(x => x.ParentFolderId.HasValue && x.ParentFolderId.Value == parentFolder.Id); foreach (var folderName in folderNames) { CommUtils.Assert(!sibbingFolders.Any(x => x.Name.Equals(folderName, StringComparison.CurrentCultureIgnoreCase)), "文件夹[{0}]已经存在,请刷新后再试", folderName); } var folders = new List <DMSFolder>(); var now = DateTime.Now; for (int i = 0; i < folderNames.Count; i++) { var folder = new DMSFolder(); folder.DMSId = dms.Instance.Id; folder.Name = folderNames[i]; folder.Description = folderDescriptions[i]; folder.DmsFolderType = DmsFolderType.Normal; folder.ParentFolderId = parentFolder.Id; folder.CreateTime = now; folder.CreateUserName = CurrentUserName; folder.LastModifyTime = now; folder.LastModifyUserName = CurrentUserName; folder = m_dbAdapter.DMSFolder.Create(folder); folders.Add(folder); } var folderGuids = folders.Select(x => x.Guid); return ActionUtils.Success(folderGuids); })); }
public ActionResult CreateFile(string projectGuid, string folderGuid, string fileSeriesNames, string description, string templateType) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(projectGuid, PermissionType.Execute); var folder = dms.FindFolder(folderGuid); CommUtils.AssertNotNull(folder, "找不到文件夹[FolderGuid={0} DMSGuid={1}],请刷新后再试", folderGuid, dms.Instance.Guid); folder.IgnoreNull = false; var dict = new Dictionary <RepositoryFile, HttpPostedFileBase>(); var fileSeriesNameList = CommUtils.Split(fileSeriesNames).ToList(); var files = Request.Files; // CommUtils.Assert(Request.Files.Count > 0, "请选择上传文件"); fileSeriesNameList.ForEach(x => { ValidateUtils.FileName(x, "文档名称"); CommUtils.Assert(x.Length <= 100, "文档名称[{0}]不能超过100个字符数", x); CommUtils.Assert(!folder.Files.Any(y => y.FileSeries.Name == x), "文件[{0}]已经存在", x); }); CommUtils.AssertHasContent(fileSeriesNames, "文档名称不能为空"); // CommUtils.AssertEquals(fileSeriesNames.Count, files.Count, "上传文件数和fileSeriesNames数不一致"); var fileGuids = new List <string>(); for (int i = 0; i < files.Count; i++) { var file = files[i]; var index = Math.Max(file.FileName.LastIndexOf('\\'), file.FileName.LastIndexOf('/')); var fileName = index < 0 ? file.FileName : file.FileName.Substring(index + 1); CommUtils.AssertHasContent(fileName, "文件名不能为空"); CommUtils.Assert(fileName.Length <= 100, "选择的文件名称[{0}]不能超过100个字符数", fileName); CommUtils.Assert(!folder.Files.Any(x => x.FileSeries.Name == fileSeriesNameList[i]), "文件[{0}]已经存在", fileSeriesNameList[i]); var memoryStream = new MemoryStream(new BinaryReader(file.InputStream).ReadBytes(file.ContentLength)); var newFile = Platform.Repository.AddFile(fileName, memoryStream); fileGuids.Add(newFile.Guid); dict[newFile] = file; } var result = new List <DMSFile>(); string operationType = "上传"; string fileSeriesGuid = ""; if (dict.Keys.Count == 0) { var isExistTemplateType = string.IsNullOrWhiteSpace(templateType); var dmsFileSeriesTemplateType = DmsFileSeriesTemplateType.None; if (!isExistTemplateType) { dmsFileSeriesTemplateType = CommUtils.ParseEnum <DmsFileSeriesTemplateType>(templateType); } operationType = "创建"; fileSeriesNameList.ForEach(x => { var newFileSeries = NewFileSeries(x, folder); fileSeriesGuid = newFileSeries.Guid; m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, "文件夹[" + folder.Instance.Name + "]中" + operationType + "文件系列" + x); if (!isExistTemplateType && dmsFileSeriesTemplateType != DmsFileSeriesTemplateType.None) { NewDMSFileSeriesTemplate(newFileSeries.Id, dmsFileSeriesTemplateType); } }); } for (int i = 0; i < dict.Keys.Count; i++) { var repoFile = dict.Keys.ElementAt(i); var fileSeriesName = fileSeriesNameList[i]; var dmsFileSeries = new DMSFileSeries(); dmsFileSeries = NewFileSeries(fileSeriesName, folder); fileSeriesGuid = dmsFileSeries.Guid; var now = DateTime.Now; DMSFile dmsFile = new DMSFile(); dmsFile.DMSId = dms.Instance.Id; dmsFile.DMSFileSeriesId = dmsFileSeries.Id; dmsFile.RepoFileId = repoFile.Id; dmsFile.Name = repoFile.Name; dmsFile.Description = description ?? string.Empty; dmsFile.Size = dict[repoFile].ContentLength; dmsFile.Version = 1; dmsFile.LastModifyUserName = CurrentUserName; dmsFile.LastModifyTime = now; dmsFile.CreateUserName = CurrentUserName; dmsFile.CreateTime = now; result.Add(m_dbAdapter.DMSFile.Create(dmsFile)); m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, dmsFileSeries.Guid, "文件夹[" + folder.Instance.Name + "]中" + operationType + "文件" + fileSeriesName); } return ActionUtils.Success(fileSeriesGuid); })); }