using System.IO;
using System.IO.Path; using Microsoft.Azure; using Blobstorage = Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; using Microsoft.Dynamics.Platform.Integration.SharePoint; using Microsoft.Dynamics.ApplicationPlatform.Services.Instrumentation; using Microsoft.DynamicsOnline.Infrastructure.Components.SharedServiceUnitStorage; using Microsoft.Dynamics.AX.Framework.FileManagement; public class DocumentsUploadToSharePoint// extends RunBaseBatch { str docfiletype; Microsoft.Dynamics.AX.Framework.FileManagement.IDocumentStorageProvider storageProvider; public static void main(Args args) { DocumentsUploadToSharePoint documentsUploadToSharePoint = new DocumentsUploadToSharePoint(); documentsUploadToSharePoint.upload(); } public void upload() { System.Exception ex; System.IO.Stream memoryStream; Filename fileNameExt; VendTable vendTable; DocuRef docuRef; DocuValue docuValue; str errorMessage; select * from docuValue join docuref where docuValue.RECID == docuref.VALUERECID join vendTable where docuref.REFRECID == vendTable.RECID && vendTable.accountNum =='00000112' && Docuref.REFCOMPANYID == vendTable.DataAreaId; memoryStream = this.readfromAzureBlob(docuref); memoryStream.Seek(0, System.IO.SeekOrigin::Begin); fileNameExt = docuValue.FileName + '.' + docuValue.FileType; //str folderPath = "/sites/'new site'/'Folder'"; str folderPath = "/MyFolder"; str fileContentType = System.Web.MimeMapping::GetMimeMapping(fileNameExt); ISharePointProxy proxy = null; DOCUPARAMETERS docuParameters; str src = ''; str hostName = ''; docuParameters = DOCUPARAMETERS::find(); try { ttsbegin; if(docuParameters) { src = docuParameters.DefaultSharePointServer; hostName = builder.Host; System.UriBuilder builder = new System.UriBuilder(src); str externalId = xUserInfo::getCurrentUserExternalId(); try { //proxy = SharePointHelper::CreateProxy(hostName, '/', externalId); proxy = SharePointHelper::CreateProxy(hostName, '/sites/MySite', externalId); } catch(Exception::CLRError) { proxy = null; } } if(proxy) { if(SharePointHelper::VerifyAuthentication(proxy)) { Microsoft.Dynamics.AX.Framework.FileManagement.SharePointDocumentStorageProvider prov = new Microsoft.Dynamics.AX.Framework.FileManagement.SharePointDocumentStorageProvider(proxy, folderPath); prov.SaveFileWithOverwrite(newguid(), fileNameExt, fileContentType, memoryStream); } else { info('@ApplicationFoundation:SPServerUserNotAuthorized'); } } else { throw Error("SharePoint connection error"); } ttscommit; } catch (ex) { System.Exception e = ex; while (e != null) { errorMessage += e.Message; e = e.InnerException; } if (appl.ttsLevel() > 0) { ttsabort; } checkFailed("Process failed"); error(errorMessage); } Public System.IO.Stream readfromAzureBlob(DocuRef _docuRef) { AsciiStreamIo file; container record; str downloadUrl; //if (docuValue.FileType != 'PDF') //{ // continue; //} if (_docuRef.isValueAttached()) { System.IO.Stream docuRefStream = DocumentManagement::getAttachmentStream(_docuRef); return docuRefStream; } /*if (_docuRef.isValueAttached()) { var docuValueloc = _docuRef.docuValue(); //downloadUrl = docuValueloc.Path; if (!downloadUrl || docuValueloc.Type == DocuValueType::Others) { str accessToken = DocumentManagement::createAccessToken(_docuRef); downloadUrl = Microsoft.Dynamics.AX.Framework.FileManagement.URLBuilderUtilities::GetDownloadUrl(docuValueloc.FileId, accessToken); } //storageProvider = new Microsoft.Dynamics.AX.Framework.FileManagement.IDocumentStorageProvider(); var docContents = storageProvider.GetFile(docuValueloc.createLocation()); //file = AsciiStreamIo::constructForRead(docContents.Content);//File::UseFileFromURL(downloadUrl)); return docContents.Content; }*/ return null; } }