Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }