private T GetFolderId <T>(T folderId, IList <string> relativePath) { var folderDao = DaoFactory.GetFolderDao <T>(); var folder = folderDao.GetFolder(folderId); if (folder == null) { throw new DirectoryNotFoundException(FilesCommonResource.ErrorMassage_FolderNotFound); } if (!FileSecurity.CanCreate(folder)) { throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException_Create); } if (relativePath != null && relativePath.Any()) { var subFolderTitle = Global.ReplaceInvalidCharsAndTruncate(relativePath.FirstOrDefault()); if (!string.IsNullOrEmpty(subFolderTitle)) { folder = folderDao.GetFolder(subFolderTitle, folder.ID); if (folder == null) { var newFolder = ServiceProvider.GetService <Folder <T> >(); newFolder.Title = subFolderTitle; newFolder.FolderID = folderId; folderId = folderDao.SaveFolder(newFolder); folder = folderDao.GetFolder(folderId); FilesMessageService.Send(folder, MessageAction.FolderCreated, folder.Title); } folderId = folder.ID; relativePath.RemoveAt(0); folderId = GetFolderId(folderId, relativePath); } } return(folderId); }
public File <T> SaveDocument <T>(string envelopeId, string documentId, string documentName, T folderId) { if (string.IsNullOrEmpty(envelopeId)) { throw new ArgumentNullException("envelopeId"); } if (string.IsNullOrEmpty(documentId)) { throw new ArgumentNullException("documentId"); } var token = DocuSignToken.GetToken(); var account = GetDocuSignAccount(token); var configuration = GetConfiguration(account, token); var fileDao = DaoFactory.GetFileDao <T>(); var folderDao = DaoFactory.GetFolderDao <T>(); if (string.IsNullOrEmpty(documentName)) { documentName = "new.pdf"; } Folder <T> folder; if (folderId == null || (folder = folderDao.GetFolder(folderId)) == null || folder.RootFolderType == FolderType.TRASH || !FileSecurity.CanCreate(folder)) { if (GlobalFolderHelper.FolderMy != 0) { folderId = GlobalFolderHelper.GetFolderMy <T>(); } else { throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException_Create); } } var file = ServiceProvider.GetService <File <T> >(); file.FolderID = folderId; file.Comment = FilesCommonResource.CommentCreateByDocuSign; file.Title = FileUtility.ReplaceFileExtension(documentName, ".pdf"); var envelopesApi = new EnvelopesApi(configuration); Log.Info("DocuSign webhook get stream: " + documentId); using (var stream = envelopesApi.GetDocument(account.AccountId, envelopeId, documentId)) { file.ContentLength = stream.Length; file = fileDao.SaveFile(file, stream); } FilesMessageService.Send(file, MessageInitiator.ThirdPartyProvider, MessageAction.DocumentSignComplete, "DocuSign", file.Title); FileMarker.MarkAsNew(file); return(file); }