Пример #1
0
        private static void CreateTableRecord(AcquistionFileEntity acquisition)
        {
            var tableClient = _cloudStorageAccount.CreateCloudTableClient();

            var table = tableClient.GetTableReference("acquistions");

            table.CreateIfNotExists();

            var insertOperation = TableOperation.Insert(acquisition);

            table.Execute(insertOperation);
        }
Пример #2
0
        public object Mailer(int id)
        {
            try
            {
                var context  = DataContext.Create();
                var campaign = context.Campaigns.Find(id);

                //Load file into blob storage
                // Create the blob client.
                CloudBlobClient blobClient = _cloudStorageAccount.CreateCloudBlobClient();

                // Retrieve reference to a previously created container.
                CloudBlobContainer container = blobClient.GetContainerReference("acquisitions");
                container.CreateIfNotExists();

                var postedFile = HttpContext.Current.Request.Files[0];
                // Fix for IE file path issue.
                var filename = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf("\\", StringComparison.Ordinal) + 1);
                var filePath = HttpContext.Current.Server.MapPath(@"~\app_data\" + filename);
                postedFile.SaveAs(filePath);

                CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);
                using (var fileStream = File.OpenRead(filePath))
                {
                    blockBlob.UploadFromStream(fileStream);
                }


                //Load record into table storage
                var tableClient = _cloudStorageAccount.CreateCloudTableClient();
                var table       = tableClient.GetTableReference("acquisitions");
                table.CreateIfNotExists();

                var acquisition = new AcquistionFileEntity(Guid.NewGuid())
                {
                    Filename   = filename,
                    CampaignId = id,
                    Campaign   = campaign?.Name ?? "Unknown"
                };

                var insertOperation = TableOperation.Insert(acquisition);
                table.Execute(insertOperation);

                //Add to queue for processing
                var queueClient = _cloudStorageAccount.CreateCloudQueueClient();
                var queue       = queueClient.GetQueueReference("acquisitions");

                queue.CreateIfNotExists();

                var queueMessage = new CloudQueueMessage(acquisition.RowKey);

                queue.AddMessage(queueMessage);

                //Delete server upload file
                File.Delete(filePath);

                var result = new OperationResult(true, $"Queued file for processing for {campaign?.Name}");
                return(Ok(result));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }