From 57878f2be8787a8ff6d92182adb9ef987f741f11 Mon Sep 17 00:00:00 2001 From: Cy Okeke Date: Tue, 10 Jun 2025 16:34:29 +0100 Subject: [PATCH] Add the improved code change for trial metadata --- .../Billing/Models/Sales/OrganizationSale.cs | 39 ++++++++++--------- .../Billing/Models/Sales/SubscriptionSetup.cs | 1 + .../OrganizationBillingService.cs | 6 ++- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/Core/Billing/Models/Sales/OrganizationSale.cs b/src/Core/Billing/Models/Sales/OrganizationSale.cs index 78ad26871b..b26ec3e492 100644 --- a/src/Core/Billing/Models/Sales/OrganizationSale.cs +++ b/src/Core/Billing/Models/Sales/OrganizationSale.cs @@ -87,26 +87,29 @@ public class OrganizationSale private static SubscriptionSetup GetSubscriptionSetup(OrganizationUpgrade upgrade) { - var passwordManagerOptions = new SubscriptionSetup.PasswordManager - { - Seats = upgrade.AdditionalSeats, - Storage = upgrade.AdditionalStorageGb, - PremiumAccess = upgrade.PremiumAccessAddon - }; - - var secretsManagerOptions = upgrade.UseSecretsManager - ? new SubscriptionSetup.SecretsManager - { - Seats = upgrade.AdditionalSmSeats ?? 0, - ServiceAccounts = upgrade.AdditionalServiceAccounts - } - : null; - - return new SubscriptionSetup + var subscriptionSetup = new SubscriptionSetup { PlanType = upgrade.Plan, - PasswordManagerOptions = passwordManagerOptions, - SecretsManagerOptions = secretsManagerOptions + PasswordManagerOptions = new SubscriptionSetup.PasswordManager + { + Seats = upgrade.AdditionalSeats, + Storage = upgrade.AdditionalStorageGb, + PremiumAccess = upgrade.PremiumAccessAddon + }, + SecretsManagerOptions = upgrade.UseSecretsManager + ? new SubscriptionSetup.SecretsManager + { + Seats = upgrade.AdditionalSmSeats ?? 0, + ServiceAccounts = upgrade.AdditionalServiceAccounts + } + : null }; + + if (upgrade is OrganizationSignup signup) + { + subscriptionSetup.InitiationPath = signup.InitiationPath; + } + + return subscriptionSetup; } } diff --git a/src/Core/Billing/Models/Sales/SubscriptionSetup.cs b/src/Core/Billing/Models/Sales/SubscriptionSetup.cs index 871a2920b1..5e891f75b6 100644 --- a/src/Core/Billing/Models/Sales/SubscriptionSetup.cs +++ b/src/Core/Billing/Models/Sales/SubscriptionSetup.cs @@ -10,6 +10,7 @@ public class SubscriptionSetup public required PasswordManager PasswordManagerOptions { get; set; } public SecretsManager? SecretsManagerOptions { get; set; } public bool SkipTrial = false; + public string? InitiationPath { get; set; } public class PasswordManager { diff --git a/src/Core/Billing/Services/Implementations/OrganizationBillingService.cs b/src/Core/Billing/Services/Implementations/OrganizationBillingService.cs index 5e59d0d108..e2fddf049c 100644 --- a/src/Core/Billing/Services/Implementations/OrganizationBillingService.cs +++ b/src/Core/Billing/Services/Implementations/OrganizationBillingService.cs @@ -421,7 +421,11 @@ public class OrganizationBillingService( Items = subscriptionItemOptionsList, Metadata = new Dictionary { - ["organizationId"] = organizationId.ToString() + ["organizationId"] = organizationId.ToString(), + ["trialInitiationPath"] = !string.IsNullOrEmpty(subscriptionSetup.InitiationPath) && + subscriptionSetup.InitiationPath.Contains("trial from marketing website") + ? "marketing-initiated" + : "product-initiated" }, OffSession = true, TrialPeriodDays = subscriptionSetup.SkipTrial ? 0 : plan.TrialPeriodDays