using Microsoft.Azure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.File;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.Auth;
class DAX_ERVendPaymOutFieUploadHelper
{
/// <summary>
/// Handles attachingFile event from Electronic reporting
/// </summary>
/// <param name = "_args">Event args for event handler</param> [SubscribesTo(classStr(ERDocuManagementEvents), staticDelegateStr(ERDocuManagementEvents, attachingFile))]
public static void ERDocuManagementEvents_attachingFile(ERDocuManagementAttachingFileEventArgs _args)
{
ERFormatMappingRunJobTable ERFormatMappingRunJobTable;
Common common = _args.getOwner();
if(common.tableid == tableNum(ERFormatMappingRunJobTable))
{
ERFormatMappingRunJobTable = ERFormatMappingRunJobTable::find(common.RecId);
}
if (!_args.isHandled() && ERFormatMappingRunJobTable.Archived == noyes::No)
{
DAX_ERVendPaymOutFieUploadHelper uploadHandler = DAX_ERVendPaymOutFieUploadHelper::construct();
uploadHandler.uploadFile(_args.getStream());
}
}
/// <summary> /// Creates an object of DAX_ERVendPaymOutFieUploadHelper class /// </summary> /// <returns>DAX_ERVendPaymOutFieUploadHelper class object</returns>
public static DAX_ERVendPaymOutFieUploadHelper construct() { return new DAX_ERVendPaymOutFieUploadHelper(); }
/// <summary> /// Uploads file to custom Azure blob container specified in parameters /// </summary> /// <param name = "_fileStream">File stream to be uploaded</param> /// <returns>True if file uploaded successfully</returns>
private boolean uploadFile(System.IO.Stream _fileStream) { boolean ret = true;
// Custom parameters table to store Azure Storage and container info DAX_Parameters parameters = DAX_Parameters::find();
try { StorageCredentials credentials = new StorageCredentials(parameters.StorageAccountName, parameters.Key);
CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer rootContainer = blobClient.GetContainerReference(parameters.ContainerName);
if(!rootContainer.Exists(null, null)) { return Checkfailed('Azure storage parameters are not set up correctly.'); }
CloudBlobDirectory directory = rootContainer.GetDirectoryReference(parameters.BankOutPaymFolder);
CloudBlockBlob blockBlob = directory.GetBlockBlobReference(strFmt('VendOutPaym.xml'));
if (_fileStream.CanSeek) { _fileStream.Seek(0, System.IO.SeekOrigin::Begin); }
blockBlob.UploadFromStream(_fileStream, null, null, null); Info('File uploaded'); }
catch(Exception::Error) { ret = checkFailed('Error occurred while uploading the file'); }
catch(Exception::CLRError) { ret = checkFailed('CLR Error occurred while uploading the file'); }
return ret; } }