From 21c219bdb981d9cf89d61d6ddc1d1cbe3e9e4b92 Mon Sep 17 00:00:00 2001 From: msalemcode Date: Thu, 9 Jan 2025 16:23:53 -0800 Subject: [PATCH 1/4] Get PlanID from Plan Repo --- .../Controllers/SchedulerController.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/AdminSite/Controllers/SchedulerController.cs b/src/AdminSite/Controllers/SchedulerController.cs index c3249e06..3137468f 100644 --- a/src/AdminSite/Controllers/SchedulerController.cs +++ b/src/AdminSite/Controllers/SchedulerController.cs @@ -41,6 +41,11 @@ public class SchedulerController : BaseController /// private SubscriptionService subscriptionService; + /// + /// the plan service + /// + private IPlansRepository plansRepository; + /// /// the user repository /// @@ -74,7 +79,7 @@ public SchedulerController( this.meteredRepository = meteredRepository; this.schedulerService = new MeteredPlanSchedulerManagementService(frequencyRepository, schedulerRepository, schedulerViewRepository,subscriptionUsageLogsRepository,applicationConfigRepository); this.subscriptionService = new SubscriptionService(subscriptionRepository,plansRepository); - + this.plansRepository = plansRepository; } /// @@ -134,8 +139,6 @@ public IActionResult NewScheduler(string subscriptionId, string dimId, string qu Value = item.Id.ToString(), }); } - // Create Plan Dropdown list - List PlanList = new List(); List DimensionsList = new List(); schedulerUsageViewModel.DimensionsList = new SelectList(DimensionsList, "Value", "Text"); @@ -228,13 +231,18 @@ public IActionResult AddNewScheduledTrigger(SchedulerUsageViewModel schedulerUsa { try { - var selectedDimension = this.meteredRepository.Get(int.Parse(schedulerUsageViewModel.SelectedDimension)); + //Get AMP Plan ID from Subscription Detail + var subscriptionDetail = this.subscriptionService.GetActiveSubscriptionsWithMeteredPlan().Where(s => s.Id == Convert.ToInt32(schedulerUsageViewModel.SelectedSubscription)).FirstOrDefault(); + // Get Plan detail by AMP Plan ID + var selectedPlan = this.plansRepository.GetById(subscriptionDetail.AmpplanId); + + MeteredPlanSchedulerManagementModel schedulerManagement = new MeteredPlanSchedulerManagementModel() { FrequencyId = Convert.ToInt32(schedulerUsageViewModel.SelectedSchedulerFrequency), SchedulerName = Convert.ToString(schedulerUsageViewModel.SchedulerName), SubscriptionId = Convert.ToInt32(schedulerUsageViewModel.SelectedSubscription), - PlanId = Convert.ToInt32(selectedDimension.PlanId), + PlanId = Convert.ToInt32(selectedPlan.Id), DimensionId = Convert.ToInt32(schedulerUsageViewModel.SelectedDimension), Quantity = Convert.ToDouble(schedulerUsageViewModel.Quantity), StartDate = schedulerUsageViewModel.FirstRunDate.AddHours(schedulerUsageViewModel.TimezoneOffset) From 2d6445191393e1d3acf0ca6867e432405a3bc58b Mon Sep 17 00:00:00 2001 From: msalemcode Date: Thu, 9 Jan 2025 16:34:19 -0800 Subject: [PATCH 2/4] Add Null check --- .../Controllers/SchedulerController.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/AdminSite/Controllers/SchedulerController.cs b/src/AdminSite/Controllers/SchedulerController.cs index 3137468f..148860f0 100644 --- a/src/AdminSite/Controllers/SchedulerController.cs +++ b/src/AdminSite/Controllers/SchedulerController.cs @@ -231,11 +231,22 @@ public IActionResult AddNewScheduledTrigger(SchedulerUsageViewModel schedulerUsa { try { - //Get AMP Plan ID from Subscription Detail + //Retrieve the active subscription detail to get the AMP Plan ID var subscriptionDetail = this.subscriptionService.GetActiveSubscriptionsWithMeteredPlan().Where(s => s.Id == Convert.ToInt32(schedulerUsageViewModel.SelectedSubscription)).FirstOrDefault(); - // Get Plan detail by AMP Plan ID + // Check if subscriptionDetail is null + if (subscriptionDetail == null) + { + this.logger.LogError("Subscription detail not found for the given subscription ID."); + return this.View("Error", "Subscription detail not found."); + } + // Retrieve the active Plan detail by AMP Plan ID var selectedPlan = this.plansRepository.GetById(subscriptionDetail.AmpplanId); - + // Check if subscriptionDetail is null + if (selectedPlan == null) + { + this.logger.LogError("Plan detail not found for the given subscription."); + return this.View("Error", "Plan detail not found."); + } MeteredPlanSchedulerManagementModel schedulerManagement = new MeteredPlanSchedulerManagementModel() { From 251a56b2c2fe2bec9a1206b83b0456a0e742254c Mon Sep 17 00:00:00 2001 From: msalemcode Date: Thu, 23 Jan 2025 13:18:46 -0800 Subject: [PATCH 3/4] Get plan with AMP Offer ID and AMP Plan ID --- global.json | 2 +- .../Controllers/SchedulerController.cs | 28 +++++++++++++++++-- src/Services/Services/PlanService.cs | 22 +++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/global.json b/global.json index 9e5db15b..69aa839c 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.303", + "version": "8.0.405", "rollForward": "latestFeature" } } diff --git a/src/AdminSite/Controllers/SchedulerController.cs b/src/AdminSite/Controllers/SchedulerController.cs index 148860f0..6f237fb4 100644 --- a/src/AdminSite/Controllers/SchedulerController.cs +++ b/src/AdminSite/Controllers/SchedulerController.cs @@ -5,6 +5,7 @@ using System.Web; using Marketplace.SaaS.Accelerator.DataAccess.Contracts; using Marketplace.SaaS.Accelerator.DataAccess.Entities; +using Marketplace.SaaS.Accelerator.DataAccess.Services; using Marketplace.SaaS.Accelerator.Services.Models; using Marketplace.SaaS.Accelerator.Services.Services; using Marketplace.SaaS.Accelerator.Services.Utilities; @@ -41,11 +42,23 @@ public class SchedulerController : BaseController /// private SubscriptionService subscriptionService; + private PlanService plansService; + /// /// the plan service /// private IPlansRepository plansRepository; + /// + /// the offer repository + /// + private readonly IOffersRepository offerRepository; + + /// + /// the offer attribute repository + /// + private readonly IOfferAttributesRepository offerAttributeRepository; + /// /// the user repository /// @@ -71,7 +84,11 @@ public SchedulerController( IUsersRepository usersRepository, SaaSClientLogger logger, IAppVersionService appVersionService, - ISubscriptionUsageLogsRepository subscriptionUsageLogsRepository,IApplicationConfigRepository applicationConfigRepository):base(applicationConfigRepository, appVersionService) + ISubscriptionUsageLogsRepository subscriptionUsageLogsRepository, + IApplicationConfigRepository applicationConfigRepository, + IOfferAttributesRepository offerAttributeRepository, + IOffersRepository offerRepository + ) :base(applicationConfigRepository, appVersionService) { this.usersRepository = usersRepository; @@ -80,6 +97,10 @@ public SchedulerController( this.schedulerService = new MeteredPlanSchedulerManagementService(frequencyRepository, schedulerRepository, schedulerViewRepository,subscriptionUsageLogsRepository,applicationConfigRepository); this.subscriptionService = new SubscriptionService(subscriptionRepository,plansRepository); this.plansRepository = plansRepository; + this.offerAttributeRepository = offerAttributeRepository; + this.offerRepository = offerRepository; + this.plansService = new PlanService(this.plansRepository, this.offerAttributeRepository, this.offerRepository); + } /// @@ -240,8 +261,9 @@ public IActionResult AddNewScheduledTrigger(SchedulerUsageViewModel schedulerUsa return this.View("Error", "Subscription detail not found."); } // Retrieve the active Plan detail by AMP Plan ID - var selectedPlan = this.plansRepository.GetById(subscriptionDetail.AmpplanId); - // Check if subscriptionDetail is null + + var selectedPlan = this.plansService.GetPlansModelByAmpPlanIdOfferId(subscriptionDetail.AmpplanId, subscriptionDetail.AmpOfferId); + // Check if Plan is null if (selectedPlan == null) { this.logger.LogError("Plan detail not found for the given subscription."); diff --git a/src/Services/Services/PlanService.cs b/src/Services/Services/PlanService.cs index e0250433..d9697240 100644 --- a/src/Services/Services/PlanService.cs +++ b/src/Services/Services/PlanService.cs @@ -227,4 +227,26 @@ public List GetMeteredPlans() } + + /// + /// + /// + + public PlansModel GetPlansModelByAmpPlanIdOfferId(string ampPlanId,string ampOfferId) + { + var offer=this.offerRepository.GetAll().Where(o => o.OfferId == ampOfferId).FirstOrDefault(); + var plan = this.plansRepository.Get().Where(p => p.PlanId==ampPlanId && p.OfferId == offer.OfferGuid).FirstOrDefault(); + return new PlansModel + { + PlanId = plan.PlanId, + DisplayName = plan.DisplayName, + Description = plan.Description, + IsmeteringSupported = plan.IsmeteringSupported, + OfferID = plan.OfferId, + PlanGUID = plan.PlanGuid, + OfferName = offer.OfferName, + Id = plan.Id + }; + + } } \ No newline at end of file From 6c7b928560c9c04b0591a3e554bbe4e8ace1dde1 Mon Sep 17 00:00:00 2001 From: msalemcode Date: Thu, 23 Jan 2025 13:28:18 -0800 Subject: [PATCH 4/4] Fix Global version --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 69aa839c..9e5db15b 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.405", + "version": "8.0.303", "rollForward": "latestFeature" } }