1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-14 15:23:33 +00:00
Files
browser/libs/common/src/billing/models/response/plan.response.ts

160 lines
6.6 KiB
TypeScript

import { ProductTierType, PlanType } from "../../../billing/enums";
import { BaseResponse } from "../../../models/response/base.response";
export class PlanResponse extends BaseResponse {
type: PlanType;
productTier: ProductTierType;
name: string;
isAnnual: boolean;
nameLocalizationKey: string;
descriptionLocalizationKey: string;
canBeUsedByBusiness: boolean;
trialPeriodDays: number;
hasSelfHost: boolean;
hasPolicies: boolean;
hasGroups: boolean;
hasDirectory: boolean;
hasEvents: boolean;
hasTotp: boolean;
has2fa: boolean;
hasApi: boolean;
hasSso: boolean;
hasResetPassword: boolean;
usersGetPremium: boolean;
upgradeSortOrder: number;
displaySortOrder: number;
legacyYear: number;
disabled: boolean;
PasswordManager: PasswordManagerPlanFeaturesResponse;
SecretsManager: SecretsManagerPlanFeaturesResponse;
constructor(response: any) {
super(response);
this.type = this.getResponseProperty("Type");
this.productTier = this.getResponseProperty("ProductTier");
this.name = this.getResponseProperty("Name");
this.isAnnual = this.getResponseProperty("IsAnnual");
this.nameLocalizationKey = this.getResponseProperty("NameLocalizationKey");
this.descriptionLocalizationKey = this.getResponseProperty("DescriptionLocalizationKey");
this.canBeUsedByBusiness = this.getResponseProperty("CanBeUsedByBusiness");
this.trialPeriodDays = this.getResponseProperty("TrialPeriodDays");
this.hasSelfHost = this.getResponseProperty("HasSelfHost");
this.hasPolicies = this.getResponseProperty("HasPolicies");
this.hasGroups = this.getResponseProperty("HasGroups");
this.hasDirectory = this.getResponseProperty("HasDirectory");
this.hasEvents = this.getResponseProperty("HasEvents");
this.hasTotp = this.getResponseProperty("HasTotp");
this.has2fa = this.getResponseProperty("Has2fa");
this.hasApi = this.getResponseProperty("HasApi");
this.hasSso = this.getResponseProperty("HasSso");
this.hasResetPassword = this.getResponseProperty("HasResetPassword");
this.usersGetPremium = this.getResponseProperty("UsersGetPremium");
this.upgradeSortOrder = this.getResponseProperty("UpgradeSortOrder");
this.displaySortOrder = this.getResponseProperty("DisplaySortOrder");
this.legacyYear = this.getResponseProperty("LegacyYear");
this.disabled = this.getResponseProperty("Disabled");
const passwordManager = this.getResponseProperty("PasswordManager");
const secretsManager = this.getResponseProperty("SecretsManager");
this.PasswordManager =
passwordManager == null ? null : new PasswordManagerPlanFeaturesResponse(passwordManager);
this.SecretsManager =
secretsManager == null ? null : new SecretsManagerPlanFeaturesResponse(secretsManager);
}
}
export class SecretsManagerPlanFeaturesResponse extends BaseResponse {
// Seats
stripeSeatPlanId: string;
baseSeats: number;
basePrice: number;
seatPrice: number;
hasAdditionalSeatsOption: boolean;
maxAdditionalSeats: number;
maxSeats: number;
// Service accounts
stripeServiceAccountPlanId: string;
additionalPricePerServiceAccount: number;
baseServiceAccount: number;
maxServiceAccount: number;
hasAdditionalServiceAccountOption: boolean;
maxAdditionalServiceAccounts: number;
// Features
maxProjects: number;
constructor(response: any) {
super(response);
this.stripeSeatPlanId = this.getResponseProperty("StripeSeatPlanId");
this.baseSeats = this.getResponseProperty("BaseSeats");
this.basePrice = this.getResponseProperty("BasePrice");
this.seatPrice = this.getResponseProperty("SeatPrice");
this.hasAdditionalSeatsOption = this.getResponseProperty("HasAdditionalSeatsOption");
this.maxAdditionalSeats = this.getResponseProperty("MaxAdditionalSeats");
this.maxSeats = this.getResponseProperty("MaxSeats");
this.stripeServiceAccountPlanId = this.getResponseProperty("StripeServiceAccountPlanId");
this.additionalPricePerServiceAccount = this.getResponseProperty(
"AdditionalPricePerServiceAccount",
);
this.baseServiceAccount = this.getResponseProperty("BaseServiceAccount");
this.maxServiceAccount = this.getResponseProperty("MaxServiceAccount");
this.hasAdditionalServiceAccountOption = this.getResponseProperty(
"HasAdditionalServiceAccountOption",
);
this.maxAdditionalServiceAccounts = this.getResponseProperty("MaxAdditionalServiceAccounts");
this.maxProjects = this.getResponseProperty("MaxProjects");
}
}
export class PasswordManagerPlanFeaturesResponse extends BaseResponse {
// Seats
stripePlanId: string;
stripeSeatPlanId: string;
stripeProviderPortalSeatPlanId: string;
stripePremiumAccessPlanId: string;
basePrice: number;
seatPrice: number;
providerPortalSeatPrice: number;
premiumAccessOptionPrice: number;
baseSeats: number;
maxAdditionalSeats: number;
maxSeats: number;
hasPremiumAccessOption: boolean;
// Storage
additionalStoragePricePerGb: number;
stripeStoragePlanId: string;
baseStorageGb: number;
hasAdditionalStorageOption: boolean;
maxAdditionalStorage: number;
hasAdditionalSeatsOption: boolean;
// Feature
maxCollections: number;
constructor(response: any) {
super(response);
this.stripePlanId = this.getResponseProperty("StripePlanId");
this.stripeSeatPlanId = this.getResponseProperty("StripeSeatPlanId");
this.stripeProviderPortalSeatPlanId = this.getResponseProperty(
"StripeProviderPortalSeatPlanId",
);
this.stripeStoragePlanId = this.getResponseProperty("StripeStoragePlanId");
this.stripePremiumAccessPlanId = this.getResponseProperty("StripePremiumAccessPlanId");
this.basePrice = this.getResponseProperty("BasePrice");
this.seatPrice = this.getResponseProperty("SeatPrice");
this.providerPortalSeatPrice = this.getResponseProperty("ProviderPortalSeatPrice");
this.baseSeats = this.getResponseProperty("BaseSeats");
this.maxAdditionalSeats = this.getResponseProperty("MaxAdditionalSeats");
this.premiumAccessOptionPrice = this.getResponseProperty("PremiumAccessOptionPrice");
this.maxSeats = this.getResponseProperty("MaxSeats");
this.additionalStoragePricePerGb = this.getResponseProperty("AdditionalStoragePricePerGb");
this.hasAdditionalSeatsOption = this.getResponseProperty("HasAdditionalSeatsOption");
this.baseStorageGb = this.getResponseProperty("BaseStorageGb");
this.maxCollections = this.getResponseProperty("MaxCollections");
this.hasAdditionalStorageOption = this.getResponseProperty("HasAdditionalStorageOption");
this.maxAdditionalStorage = this.getResponseProperty("MaxAdditionalStorage");
this.hasPremiumAccessOption = this.getResponseProperty("HasPremiumAccessOption");
}
}