Implementation
factory BillingPlan.fromMap(
Map<String, dynamic> map,
) {
map = {
'\$id': "",
'name': "",
'desc': "",
'order': 0,
'price': 0,
'trial': 0,
'bandwidth': 0,
'storage': 0,
'imageTransformations': 0,
'screenshotsGenerated': 0,
'webhooks': 0,
'wafRules': 0,
'environments': 0,
'projects': 0,
'platforms': 0,
'users': 0,
'teams': 0,
'databases': 0,
'databasesReads': 0,
'databasesWrites': 0,
'databasesBatchSize': 0,
'buckets': 0,
'fileSize': 0,
'functions': 0,
'sites': 0,
'executions': 0,
'executionsRetentionCount': 1000,
'GBHours': 0,
'realtime': 0,
'realtimeMessages': 0,
'messages': 0,
'topics': 0,
'authPhone': 0,
'domains': 0,
'usageLogs': 0,
'projectInactivityDays': 0,
'alertLimit': 80,
'budgetCapEnabled': false,
'customSmtp': false,
'emailBranding': false,
'requiresPaymentMethod': true,
'requiresBillingAddress': false,
'isAvailable': true,
'selfService': true,
'premiumSupport': true,
'budgeting': true,
'supportsMockNumbers': true,
'supportsOrganizationRoles': true,
'supportsCredits': false,
'supportsDedicatedDatabases': false,
'supportsDisposableEmailValidation': false,
'supportsCanonicalEmailValidation': false,
'supportsFreeEmailValidation': false,
'supportsCorporateEmailValidation': false,
'supportsProjectSpecificRoles': false,
'usagePerProject': true,
'deploymentSize': 0,
'buildSize': 0,
'functionsIntervalMinimum': 0,
'functionsAllowCron': true,
'databasesAllowEncrypt': false,
'databaseComputeCredit': 0,
...map,
};
return BillingPlan(
$id: map['\$id'].toString(),
name: map['name'].toString(),
desc: map['desc'].toString(),
order: map['order'],
price: map['price'].toDouble(),
trial: map['trial'],
bandwidth: map['bandwidth'],
storage: map['storage'],
imageTransformations: map['imageTransformations'],
screenshotsGenerated: map['screenshotsGenerated'],
members: map['members'],
webhooks: map['webhooks'],
wafRules: map['wafRules'],
environments: map['environments'],
projects: map['projects'],
platforms: map['platforms'],
users: map['users'],
teams: map['teams'],
databases: map['databases'],
databasesReads: map['databasesReads'],
databasesWrites: map['databasesWrites'],
databasesBatchSize: map['databasesBatchSize'],
buckets: map['buckets'],
fileSize: map['fileSize'],
functions: map['functions'],
sites: map['sites'],
executions: map['executions'],
executionsRetentionCount: map['executionsRetentionCount'],
deploymentRetention: map['deploymentRetention'],
deploymentRetentionMax: map['deploymentRetentionMax'],
deploymentsRetentionCount: map['deploymentsRetentionCount'],
GBHours: map['GBHours'],
realtime: map['realtime'],
realtimeMessages: map['realtimeMessages'],
messages: map['messages'],
topics: map['topics'],
authPhone: map['authPhone'],
domains: map['domains'],
activityLogs: map['activityLogs'],
usageLogs: map['usageLogs'],
usageLogsIntervals: List.from(map['usageLogsIntervals'] ?? []),
usageAggregateOnlyMetrics:
List.from(map['usageAggregateOnlyMetrics'] ?? []),
projectInactivityDays: map['projectInactivityDays'],
alertLimit: map['alertLimit'],
usage: map['usage'] != null
? UsageBillingPlan.fromMap(
map['usage'],
)
: null,
addons: BillingPlanAddon.fromMap(
map['addons'] ?? <String, dynamic>{},
),
budgetCapEnabled: map['budgetCapEnabled'],
customSmtp: map['customSmtp'],
emailBranding: map['emailBranding'],
requiresPaymentMethod: map['requiresPaymentMethod'],
requiresBillingAddress: map['requiresBillingAddress'],
eligibleCountries: List.from(map['eligibleCountries'] ?? []),
isAvailable: map['isAvailable'],
selfService: map['selfService'],
premiumSupport: map['premiumSupport'],
budgeting: map['budgeting'],
supportsMockNumbers: map['supportsMockNumbers'],
supportsOrganizationRoles: map['supportsOrganizationRoles'],
supportsCredits: map['supportsCredits'],
supportsDedicatedDatabases: map['supportsDedicatedDatabases'],
supportsDisposableEmailValidation:
map['supportsDisposableEmailValidation'],
supportsCanonicalEmailValidation: map['supportsCanonicalEmailValidation'],
supportsFreeEmailValidation: map['supportsFreeEmailValidation'],
supportsCorporateEmailValidation: map['supportsCorporateEmailValidation'],
supportsProjectSpecificRoles: map['supportsProjectSpecificRoles'],
backupsEnabled: map['backupsEnabled'],
usagePerProject: map['usagePerProject'],
supportedAddons: BillingPlanSupportedAddons.fromMap(
map['supportedAddons'] ?? <String, dynamic>{},
),
backupPolicies: map['backupPolicies'],
deploymentSize: map['deploymentSize'],
buildSize: map['buildSize'],
functionsIntervalMinimum: map['functionsIntervalMinimum'],
functionsAllowCron: map['functionsAllowCron'],
databasesAllowEncrypt: map['databasesAllowEncrypt'],
limits: map['limits'] != null
? BillingPlanLimits.fromMap(
map['limits'],
)
: null,
group: enums.BillingPlanGroup.values.firstWhere(
(e) => e.value == map['group'],
),
program: map['program'] != null
? Program.fromMap(
map['program'],
)
: null,
databaseComputeCredit: map['databaseComputeCredit'].toDouble(),
dedicatedDatabases: map['dedicatedDatabases'] != null
? BillingPlanDedicatedDatabaseLimits.fromMap(
map['dedicatedDatabases'],
)
: null,
);
}