/// <summary>
 /// Records the usage.
 /// </summary>
 /// <param name="subscriptionId">The subscription identifier.</param>
 /// <returns></returns>
 public IActionResult RecordUsage(int subscriptionId)
 {
     this.logger.LogInformation("Home Controller / RecordUsage ");
     try
     {
         if (Convert.ToBoolean(applicationConfigRepository.GetValuefromApplicationConfig(MainMenuStatusEnum.IsLicenseManagementEnabled.ToString())) == true)
         {
             this.TempData["ShowLicensesMenu"] = true;
         }
         if (User.Identity.IsAuthenticated)
         {
             var subscriptionDetail = subscriptionRepo.Get(subscriptionId);
             var allDimensionsList  = dimensionsRepository.GetDimensionsFromPlanId(subscriptionDetail.AmpplanId);
             SubscriptionUsageViewModel usageViewModel = new SubscriptionUsageViewModel();
             usageViewModel.SubscriptionDetail = subscriptionDetail;
             usageViewModel.MeteredAuditLogs   = new List <MeteredAuditLogs>();
             usageViewModel.MeteredAuditLogs   = subscriptionUsageLogsRepository.GetMeteredAuditLogsBySubscriptionId(subscriptionId).OrderByDescending(s => s.CreatedDate).ToList();
             usageViewModel.DimensionsList     = new SelectList(allDimensionsList, "Dimension", "Description");
             return(View(usageViewModel));
         }
         else
         {
             return(RedirectToAction(nameof(Index)));
         }
     }
     catch (Exception ex)
     {
         this.logger.LogInformation("Message:{0} :: {1}   ", ex.Message, ex.InnerException);
         return(View("Error"));
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Records the usage.
 /// </summary>
 /// <param name="subscriptionId">The subscription identifier.</param>
 /// <returns> The <see cref="IActionResult" />.</returns>
 public IActionResult RecordUsage(int subscriptionId)
 {
     this.logger.LogInformation("Home Controller / RecordUsage ");
     try
     {
         if (this.User.Identity.IsAuthenticated)
         {
             var subscriptionDetail = this.subscriptionRepo.Get(subscriptionId);
             var allDimensionsList  = this.dimensionsRepository.GetDimensionsByPlanId(subscriptionDetail.AmpplanId);
             SubscriptionUsageViewModel usageViewModel = new SubscriptionUsageViewModel();
             usageViewModel.SubscriptionDetail = subscriptionDetail;
             usageViewModel.MeteredAuditLogs   = new List <MeteredAuditLogs>();
             usageViewModel.MeteredAuditLogs   = this.subscriptionUsageLogsRepository.GetMeteredAuditLogsBySubscriptionId(subscriptionId).OrderByDescending(s => s.CreatedDate).ToList();
             usageViewModel.DimensionsList     = new SelectList(allDimensionsList, "Dimension", "Description");
             return(this.View(usageViewModel));
         }
         else
         {
             return(this.RedirectToAction(nameof(this.Index)));
         }
     }
     catch (Exception ex)
     {
         this.logger.LogInformation("Message:{0} :: {1}   ", ex.Message, ex.InnerException);
         return(this.View("Error", ex));
     }
 }
        public IActionResult ManageSubscriptionUsage(SubscriptionUsageViewModel subscriptionData)
        {
            this.logger.LogInformation("Home Controller / ManageSubscriptionUsage  subscriptionData: {0}", JsonConvert.SerializeObject(subscriptionData));
            try
            {
                if (Convert.ToBoolean(applicationConfigRepository.GetValuefromApplicationConfig(MainMenuStatusEnum.IsLicenseManagementEnabled.ToString())) == true)
                {
                    this.TempData["ShowLicensesMenu"] = true;
                }
                if (subscriptionData != null && subscriptionData.SubscriptionDetail != null)
                {
                    var currentUserDetail        = usersRepository.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         = JsonConvert.SerializeObject(subscriptionUsageRequest);
                    var responseJson        = string.Empty;
                    try
                    {
                        this.logger.LogInformation("EmitUsageEventAsync");
                        meteringUsageResult = apiClient.EmitUsageEventAsync(subscriptionUsageRequest).ConfigureAwait(false).GetAwaiter().GetResult();
                        responseJson        = JsonConvert.SerializeObject(meteringUsageResult);
                        this.logger.LogInformation(responseJson);
                    }
                    catch (MeteredBillingException mex)
                    {
                        responseJson = JsonConvert.SerializeObject(mex.MeteredBillingErrorDetail);
                        meteringUsageResult.Status = mex.ErrorCode;
                        this.logger.LogInformation(responseJson);
                    }

                    var newMeteredAuditLog = new MeteredAuditLogs()
                    {
                        RequestJson           = requestJson,
                        ResponseJson          = responseJson,
                        StatusCode            = meteringUsageResult.Status,
                        SubscriptionId        = subscriptionData.SubscriptionDetail.Id,
                        SubscriptionUsageDate = DateTime.UtcNow,
                        CreatedBy             = currentUserDetail == null ? 0 : currentUserDetail.UserId,
                        CreatedDate           = DateTime.Now
                    };
                    subscriptionUsageLogsRepository.Add(newMeteredAuditLog);
                }
            }
            catch (Exception ex)
            {
                this.logger.LogError(ex, ex.Message);
            }
            return(RedirectToAction(nameof(RecordUsage), new { subscriptionId = subscriptionData.SubscriptionDetail.Id }));
        }
        public IActionResult ManageSubscriptionUsage(SubscriptionUsageViewModel subscriptionData)
        {
            this.logger.LogInformation("Home Controller / ManageSubscriptionUsage  subscriptionData: {0}", 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.LogInformation("EmitUsageEventAsync");
                        meteringUsageResult = this.apiClient.EmitUsageEventAsync(subscriptionUsageRequest).ConfigureAwait(false).GetAwaiter().GetResult();
                        responseJson        = JsonSerializer.Serialize(meteringUsageResult);
                        this.logger.LogInformation(responseJson);
                    }
                    catch (MeteredBillingException mex)
                    {
                        responseJson = JsonSerializer.Serialize(mex.MeteredBillingErrorDetail);
                        meteringUsageResult.Status = mex.ErrorCode;
                        this.logger.LogInformation(responseJson);
                    }

                    var newMeteredAuditLog = new MeteredAuditLogs()
                    {
                        RequestJson           = requestJson,
                        ResponseJson          = responseJson,
                        StatusCode            = meteringUsageResult.Status,
                        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(ex, ex.Message);
            }

            return(this.RedirectToAction(nameof(this.RecordUsage), new { subscriptionId = subscriptionData.SubscriptionDetail.Id }));
        }
 /// <summary>
 /// Records the usage.
 /// </summary>
 /// <param name="subscriptionId">The subscription identifier.</param>
 /// <returns></returns>
 public IActionResult RecordUsage(int subscriptionId)
 {
     if (User.Identity.IsAuthenticated)
     {
         var subscriptionDetail = subscriptionRepo.Get(subscriptionId);
         var allDimensionsList  = dimensionsRepository.GetDimensionsFromPlanId(subscriptionDetail.AmpplanId);
         SubscriptionUsageViewModel usageViewModel = new SubscriptionUsageViewModel();
         usageViewModel.SubscriptionDetail = subscriptionDetail;
         usageViewModel.MeteredAuditLogs   = new List <MeteredAuditLogs>();
         usageViewModel.MeteredAuditLogs   = subscriptionUsageLogsRepository.GetMeteredAuditLogsBySubscriptionId(subscriptionId).OrderByDescending(s => s.CreatedDate).ToList();
         usageViewModel.DimensionsList     = new SelectList(allDimensionsList, "Dimension", "Description");
         return(View(usageViewModel));
     }
     else
     {
         return(RedirectToAction(nameof(Index)));
     }
 }