예제 #1
0
        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);
            }));
        }
예제 #2
0
        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);
            }));
        }
예제 #3
0
        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);
            }));
        }