public IActionResult ManageSubscriptionUsage()

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 });
    }