/// <summary> /// Creating backup of data collected in azure storage blob. /// </summary> /// <param name="billingRecords">Records of CSP billing.</param> /// <param name="blobFilename">Name of blob file.</param> /// <returns>Uri of the blob written data to.</returns> internal static string UpdateCspSummaryRecordsInAzureStorage(List <UsageBasedLineItem> billingRecords, string blobFilename) { //// connect to the storage account: CloudStorageAccount storageAccount = CloudStorageAccount.Parse( ConfigurationManager.AppSettings["StorageConnectionString"]); //// Retrieve storage account from connection string. //// Create the blob client. CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference("billingcspdata"); container.CreateIfNotExists(); container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); int idstarter = 0; string resp = Path.GetTempPath() + "csvtep.txt"; //// TODO: change naming convention once web api is converted to accepted params //// string cont = subscription.Id + "\\" + stdate.Year.ToString() + "\\" + stdate.ToString("MM"); //// string blobFilename = cont + "\\" + stdate.ToString("MMMM") + "From" + stdate.AddDays(-stdate.Day + 1).ToString("dd") + "To" + stdate.ToString("dd") + ".csv"; string idval; // Create the container if it doesn't already exist. using (CsvFileWriter writer = new CsvFileWriter(resp)) { foreach (var usg in billingRecords) { CsvRow row = new CsvRow(); if (usg != null) { idstarter = idstarter + 1; idval = idstarter.ToString(CultureInfo.InvariantCulture); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", idval)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.Attributes)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.BillingProvider)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ChargeEndDate)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ChargeStartDate)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ChargeType)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ConsumedQuantity)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ConsumptionDiscount)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ConsumptionPrice)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.Currency)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.CustomerCompanyName)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.DetailLineItemId)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.IncludedQuantity)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.InvoiceLineItemType)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.InvoiceNumber)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ListPrice)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.MpnId)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.OrderId)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.OverageQuantity)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.PartnerBillableAccountId)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.PartnerId)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.PartnerName)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.PostTaxEffectiveRate)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.PostTaxTotal)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.PretaxCharges)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.PretaxEffectiveRate)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.Region)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ResourceGuid)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ResourceName)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ServiceName)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ServiceType)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.Sku)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.SubscriptionDescription)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.SubscriptionId)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.SubscriptionName)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.TaxAmount)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.Tier2MpnId)); writer.WriteRow(row); } } } CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobFilename); //// using (var fileStream = System.IO.File.OpenRead(@"WriteTest.csv")) using (var fileStream = System.IO.File.OpenRead(resp)) { blockBlob.UploadFromStream(fileStream); } return(blockBlob.SnapshotQualifiedUri.ToString()); }
/// <summary> /// Create user backup data in Azure Blob Storage /// </summary> /// <param name="billingRecordsFromApi">records returned from API</param> /// <returns>Uri of the blob</returns> internal static string UpdateRecordsInAzureStorage(IList <UsageInfoModel> billingRecordsFromApi) { // connect to the storage account: CloudStorageAccount storageAccount = CloudStorageAccount.Parse( ConfigurationManager.AppSettings["StorageConnectionString"]); // Retrieve storage account from connection string. // Create the blob client. CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference("billingdata"); container.CreateIfNotExists(); container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); int idstarter = 0; string resp = Path.GetTempPath() + "csvtep.txt"; string flname = "UsageData_" + DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second + ".csv"; // TODO: change naming convention once web api is converted to accepted params // string cont = subscription.Id + "\\" + stdate.Year.ToString() + "\\" + stdate.ToString("MM"); // string flname = cont + "\\" + stdate.ToString("MMMM") + "From" + stdate.AddDays(-stdate.Day + 1).ToString("dd") + "To" + stdate.ToString("dd") + ".csv"; string idval; // Create the container if it doesn't already exist. using (CsvFileWriter writer = new CsvFileWriter(resp)) { foreach (var usg in billingRecordsFromApi) { CsvRow row = new CsvRow(); if (usg != null) { idstarter = idstarter + 1; idval = idstarter.ToString(CultureInfo.InvariantCulture); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", idval)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.SubceriptionId)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.MeterName)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.MeteredRegion)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.MeterCategory)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.MeterSubCategory)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.UsageStartTime)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.UsageEndTime)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.MeteredService)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.MeteredServiceType)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.UserProject)); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.Quantity.ToString())); row.Add(string.Format(CultureInfo.InvariantCulture, "{0}", usg.ItemTotal.ToString())); writer.WriteRow(row); } } } CloudBlockBlob blockBlob = container.GetBlockBlobReference(flname); // using (var fileStream = System.IO.File.OpenRead(@"WriteTest.csv")) using (var fileStream = System.IO.File.OpenRead(resp)) { blockBlob.UploadFromStream(fileStream); } return(blockBlob.SnapshotQualifiedUri.ToString()); }