/// <summary> /// Process Ack File Job Execution /// </summary> /// <param name="details"> /// Details of the job we are executing here. /// </param> /// <param name="logger"> /// Handle to the logger /// </param> public async Task Execute(ScheduledJobDetails details, CommerceLog logger) { logger.Verbose("Starting execution of job \r\n " + "Details {0}", details); string connectionString = CloudConfigurationManager.GetSetting("Lomo.Commerce.Fdc.Blob.ConnectionString"); IFtpClient ftpClient = FirstDataFtpClientFactory.FirstDataAcknowledgmentFtpClient(logger); FirstDataAcknowledgmentBlobClient blobClient = FirstDataBlobClientFactory.FirstDataAcknowledgmentBlobClient(connectionString, logger); string[] files = await ftpClient.DirectoryListAsync(); if (files != null) { foreach (string fileName in files) { MemoryStream memStream = new MemoryStream(); await ftpClient.DownloadFileAsync(fileName, memStream); // lets upload it to blob memStream.Position = 0; await blobClient.UploadAsync(memStream, fileName); } } // Now try to run all the pending files in the blob ICollection <string> listOfFiles = blobClient.RetrieveFilesToProcess(); if (listOfFiles != null) { foreach (string fileName in listOfFiles) { MemoryStream memStream = new MemoryStream(); memStream.Position = 0; await blobClient.DownloadAsync(memStream, fileName); memStream.Position = 0; ISettlementFileProcessor extractProcessor = FirstDataFileProcessorFactory.FirstDataAcknowledgmentProcessor(fileName, memStream); await extractProcessor.Process().ConfigureAwait(false); await blobClient.MarkAsProcessedAsync(fileName); } } logger.Verbose("Exeuction of job {0} complete ", details.JobId); }