private static void ProcessRateCard(AzureRateCard rateCard, TraceWriter log) { if (rateCard.Meters != null) { log.Info($"Inserting rate card data into database"); DumpUtility blkOperation = new DumpUtility(ConfigurationHelper.GetConnectionString(ConfigurationKeys.DbConnectoinString)); //Sometimes effective data is returned incorrect such as 01/01/0001 which is not a valid date for SQL and throws exception as below //System.Data: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM // Hence to support this data, the date is changed to 1/1/1753 blkOperation.Insert <CspAzureRateCard>(rateCard.Meters.Select(s => new CspAzureRateCard() { MeterId = s.Id, MeterName = s.Name, RateKey = string.Join(",", s.Rates.Keys), RateValue = string.Join(",", s.Rates.Values), Tags = string.Join(",", s.Tags), Category = s.Category, SubCategory = s.Subcategory, Region = s.Region, Unit = s.Unit, IncludedQuantity = s.IncludedQuantity, EffectiveDate = s.EffectiveDate.Year < 1753 ? new DateTime(1753, 1, 1) : s.EffectiveDate }).ToList()); log.Info($"Database operation completed."); } }
private async static Task ProcessSubscriptions(ResourceCollection <Subscription> subscriptions, string CustomerId, TraceWriter log) { if (subscriptions != null) { log.Verbose($"{subscriptions.TotalCount } subscriptions found"); DumpUtility blkOperation = new DumpUtility(ConfigurationHelper.GetConnectionString(ConfigurationKeys.DbConnectoinString)); blkOperation.Insert <CspSubscription>(subscriptions.Items .Select(s => new CspSubscription() { SubscriptionId = s.Id, CustomerId = CustomerId, OfferId = s.OfferId, OfferName = s.OfferName, FriendlyName = s.FriendlyName, Quantity = s.Quantity, UnitType = s.UnitType, CreationDateUtc = s.CreationDate, EffectiveStartDateUtc = s.EffectiveStartDate, CommitmentEndDateUtc = s.CommitmentEndDate, Status = s.Status.ToString(), AutoRenewEnabled = s.AutoRenewEnabled, //IsTrial=s.isTrial, BillingType = s.BillingType.ToString(), BillingCycle = s.BillingCycle.ToString(), ContractType = s.ContractType.ToString(), OrderId = s.OrderId }).ToList()); SubscriptionsQueueClient queueClient = new SubscriptionsQueueClient(ConfigurationHelper.GetAppSetting(ConfigurationKeys.StorageConnectoinString)); foreach (var subscription in subscriptions.Items) { try { await queueClient.AddMessageAsync(new SubscriptionMessage() { CustomerId = CustomerId, SubscriptionId = subscription.Id }); } catch (Exception ex) { log.Error($"Some error occured for Customer {CustomerId} & Subscription{subscription.Id}", ex); } } } }
private async static Task ProcessCustomers(SeekBasedResourceCollection <Customer> customers, TraceWriter log) { log.Info($"{customers.TotalCount } customers found"); log.Info($"Inserting Customer data into database"); DumpUtility blkOperation = new DumpUtility(ConfigurationHelper.GetConnectionString(ConfigurationKeys.DbConnectoinString)); blkOperation.Insert <CspCustomer>(customers.Items .Select(s => new CspCustomer() { CustomerId = s.Id, TenantId = s.CompanyProfile != null ? s.CompanyProfile.TenantId : string.Empty, CompanyName = s.CompanyProfile?.CompanyName, Domain = s.CompanyProfile.Domain, Relationship = s.RelationshipToPartner.ToString() }).ToList()); log.Info($"Database operation completed. Adding messages to queue"); CustomersQueueClient queueClient = new CustomersQueueClient(ConfigurationHelper.GetAppSetting(ConfigurationKeys.StorageConnectoinString)); foreach (var customer in customers.Items) { try { log.Verbose($"Processing customer - {customer.Id }, Relationship {customer.RelationshipToPartner}"); log.Verbose($"Customer {customer.Id }"); if (customer.RelationshipToPartner != CustomerPartnerRelationship.Advisor) { await queueClient.AddMessageAsync(new CustomerMessage() { CustomerId = customer.Id }); } } catch (Exception ex) { log.Error($"Some error occured for customer - {customer.Id}, Relationship {customer.RelationshipToPartner}", ex); } } log.Info($"Message are added to queue."); }
private static void ProcessUtilizations(ResourceCollection <AzureUtilizationRecord> utilizations, string CustomerId, string SubscriptionId, TraceWriter log) { log.Info($"{utilizations.TotalCount } utilizations found"); log.Info($"Inserting Utilizaton data into database"); DumpUtility blkOperation = new DumpUtility(ConfigurationHelper.GetConnectionString(ConfigurationKeys.DbConnectoinString)); blkOperation.Insert <CspUtilization>(utilizations.Items .Select(s => new CspUtilization() { CustomerId = CustomerId, SubscriptionId = SubscriptionId, ResourceGuid = s.Resource?.Id, ResourceName = s.Resource?.Name, Category = s.Resource?.Category, SubCategory = s.Resource?.Subcategory, Region = s.Resource?.Region, UsageDateUtc = s.UsageStartTime.UtcDateTime, Quantity = s.Quantity, Unit = s.Unit }).ToList()); log.Info($"Database operation completed."); }