in src/AdminSite/Controllers/HomeController.cs [619:672]
public IActionResult ManageSubscriptionUsage(SubscriptionUsageViewModel subscriptionData)
{
this.logger.Info(HttpUtility.HtmlEncode($"Home Controller / ManageSubscriptionUsage subscriptionData: {JsonSerializer.Serialize(subscriptionData)}"));
try
{
if (subscriptionData != null && subscriptionData.SubscriptionDetail != null)
{
var currentUserDetail = this.userRepository.GetPartnerDetailFromEmail(this.CurrentUserEmailAddress);
var subscriptionUsageRequest = new MeteringUsageRequest()
{
Dimension = subscriptionData.SelectedDimension,
EffectiveStartTime = DateTime.UtcNow,
PlanId = subscriptionData.SubscriptionDetail.AmpplanId,
Quantity = Convert.ToDouble(subscriptionData.Quantity ?? "0"),
ResourceId = subscriptionData.SubscriptionDetail.AmpsubscriptionId,
};
var meteringUsageResult = new MeteringUsageResult();
var requestJson = JsonSerializer.Serialize(subscriptionUsageRequest);
var responseJson = string.Empty;
try
{
this.logger.Info("EmitUsageEventAsync");
meteringUsageResult = this.billingApiService.EmitUsageEventAsync(subscriptionUsageRequest).ConfigureAwait(false).GetAwaiter().GetResult();
responseJson = JsonSerializer.Serialize(meteringUsageResult);
this.logger.Info(responseJson);
}
catch (MarketplaceException mex)
{
responseJson = JsonSerializer.Serialize(mex.MeteredBillingErrorDetail);
meteringUsageResult.Status = mex.ErrorCode;
this.logger.Info(responseJson);
}
var newMeteredAuditLog = new MeteredAuditLogs()
{
RequestJson = requestJson,
ResponseJson = responseJson,
StatusCode = meteringUsageResult.Status,
RunBy = "Manual",
SubscriptionId = subscriptionData.SubscriptionDetail.Id,
SubscriptionUsageDate = DateTime.UtcNow,
CreatedBy = currentUserDetail == null ? 0 : currentUserDetail.UserId,
CreatedDate = DateTime.Now,
};
this.subscriptionUsageLogsRepository.Save(newMeteredAuditLog);
}
}
catch (Exception ex)
{
this.logger.LogError($"Message:{ex.Message} :: {ex.InnerException}");
}
return this.RedirectToAction(nameof(this.RecordUsage), new { subscriptionId = subscriptionData.SubscriptionDetail.Id });
}