|
@ -95,7 +95,7 @@ export class UserService { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public async getUser( |
|
|
public async getUser( |
|
|
{ accounts, id, permissions, Settings, subscription }: UserWithSettings, |
|
|
{ accounts, id, permissions, settings, subscription }: UserWithSettings, |
|
|
aLocale = locale |
|
|
aLocale = locale |
|
|
): Promise<IUser> { |
|
|
): Promise<IUser> { |
|
|
const userData = await Promise.all([ |
|
|
const userData = await Promise.all([ |
|
@ -158,8 +158,8 @@ export class UserService { |
|
|
}), |
|
|
}), |
|
|
dateOfFirstActivity: firstActivity?.date ?? new Date(), |
|
|
dateOfFirstActivity: firstActivity?.date ?? new Date(), |
|
|
settings: { |
|
|
settings: { |
|
|
...(Settings.settings as UserSettings), |
|
|
...(settings.settings as UserSettings), |
|
|
locale: (Settings.settings as UserSettings)?.locale ?? aLocale |
|
|
locale: (settings.settings as UserSettings)?.locale ?? aLocale |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
@ -189,7 +189,7 @@ export class UserService { |
|
|
id, |
|
|
id, |
|
|
provider, |
|
|
provider, |
|
|
role, |
|
|
role, |
|
|
Settings, |
|
|
settings, |
|
|
subscriptions, |
|
|
subscriptions, |
|
|
thirdPartyId, |
|
|
thirdPartyId, |
|
|
updatedAt |
|
|
updatedAt |
|
@ -200,7 +200,7 @@ export class UserService { |
|
|
include: { platform: true } |
|
|
include: { platform: true } |
|
|
}, |
|
|
}, |
|
|
analytics: true, |
|
|
analytics: true, |
|
|
Settings: true, |
|
|
settings: true, |
|
|
subscriptions: true |
|
|
subscriptions: true |
|
|
}, |
|
|
}, |
|
|
where: userWhereUniqueInput |
|
|
where: userWhereUniqueInput |
|
@ -215,7 +215,7 @@ export class UserService { |
|
|
id, |
|
|
id, |
|
|
provider, |
|
|
provider, |
|
|
role, |
|
|
role, |
|
|
Settings: Settings as UserWithSettings['Settings'], |
|
|
settings: settings as UserWithSettings['settings'], |
|
|
thirdPartyId, |
|
|
thirdPartyId, |
|
|
updatedAt, |
|
|
updatedAt, |
|
|
activityCount: analytics?.activityCount, |
|
|
activityCount: analytics?.activityCount, |
|
@ -223,13 +223,13 @@ export class UserService { |
|
|
analytics?.dataProviderGhostfolioDailyRequests |
|
|
analytics?.dataProviderGhostfolioDailyRequests |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
if (user?.Settings) { |
|
|
if (user?.settings) { |
|
|
if (!user.Settings.settings) { |
|
|
if (!user.settings.settings) { |
|
|
user.Settings.settings = {}; |
|
|
user.settings.settings = {}; |
|
|
} |
|
|
} |
|
|
} else if (user) { |
|
|
} else if (user) { |
|
|
// Set default settings if needed
|
|
|
// Set default settings if needed
|
|
|
user.Settings = { |
|
|
user.settings = { |
|
|
settings: {}, |
|
|
settings: {}, |
|
|
updatedAt: new Date(), |
|
|
updatedAt: new Date(), |
|
|
userId: user?.id |
|
|
userId: user?.id |
|
@ -237,120 +237,120 @@ export class UserService { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Set default value for base currency
|
|
|
// Set default value for base currency
|
|
|
if (!(user.Settings.settings as UserSettings)?.baseCurrency) { |
|
|
if (!(user.settings.settings as UserSettings)?.baseCurrency) { |
|
|
(user.Settings.settings as UserSettings).baseCurrency = DEFAULT_CURRENCY; |
|
|
(user.settings.settings as UserSettings).baseCurrency = DEFAULT_CURRENCY; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Set default value for date range
|
|
|
// Set default value for date range
|
|
|
(user.Settings.settings as UserSettings).dateRange = |
|
|
(user.settings.settings as UserSettings).dateRange = |
|
|
(user.Settings.settings as UserSettings).viewMode === 'ZEN' |
|
|
(user.settings.settings as UserSettings).viewMode === 'ZEN' |
|
|
? 'max' |
|
|
? 'max' |
|
|
: ((user.Settings.settings as UserSettings)?.dateRange ?? 'max'); |
|
|
: ((user.settings.settings as UserSettings)?.dateRange ?? 'max'); |
|
|
|
|
|
|
|
|
// Set default value for performance calculation type
|
|
|
// Set default value for performance calculation type
|
|
|
if (!(user.Settings.settings as UserSettings)?.performanceCalculationType) { |
|
|
if (!(user.settings.settings as UserSettings)?.performanceCalculationType) { |
|
|
(user.Settings.settings as UserSettings).performanceCalculationType = |
|
|
(user.settings.settings as UserSettings).performanceCalculationType = |
|
|
PerformanceCalculationType.ROAI; |
|
|
PerformanceCalculationType.ROAI; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Set default value for view mode
|
|
|
// Set default value for view mode
|
|
|
if (!(user.Settings.settings as UserSettings).viewMode) { |
|
|
if (!(user.settings.settings as UserSettings).viewMode) { |
|
|
(user.Settings.settings as UserSettings).viewMode = 'DEFAULT'; |
|
|
(user.settings.settings as UserSettings).viewMode = 'DEFAULT'; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
(user.Settings.settings as UserSettings).xRayRules = { |
|
|
(user.settings.settings as UserSettings).xRayRules = { |
|
|
AccountClusterRiskCurrentInvestment: |
|
|
AccountClusterRiskCurrentInvestment: |
|
|
new AccountClusterRiskCurrentInvestment( |
|
|
new AccountClusterRiskCurrentInvestment( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
{} |
|
|
{} |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
AccountClusterRiskSingleAccount: new AccountClusterRiskSingleAccount( |
|
|
AccountClusterRiskSingleAccount: new AccountClusterRiskSingleAccount( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
{} |
|
|
{} |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
AssetClassClusterRiskEquity: new AssetClassClusterRiskEquity( |
|
|
AssetClassClusterRiskEquity: new AssetClassClusterRiskEquity( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
AssetClassClusterRiskFixedIncome: new AssetClassClusterRiskFixedIncome( |
|
|
AssetClassClusterRiskFixedIncome: new AssetClassClusterRiskFixedIncome( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
CurrencyClusterRiskBaseCurrencyCurrentInvestment: |
|
|
CurrencyClusterRiskBaseCurrencyCurrentInvestment: |
|
|
new CurrencyClusterRiskBaseCurrencyCurrentInvestment( |
|
|
new CurrencyClusterRiskBaseCurrencyCurrentInvestment( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
CurrencyClusterRiskCurrentInvestment: |
|
|
CurrencyClusterRiskCurrentInvestment: |
|
|
new CurrencyClusterRiskCurrentInvestment( |
|
|
new CurrencyClusterRiskCurrentInvestment( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
EconomicMarketClusterRiskDevelopedMarkets: |
|
|
EconomicMarketClusterRiskDevelopedMarkets: |
|
|
new EconomicMarketClusterRiskDevelopedMarkets( |
|
|
new EconomicMarketClusterRiskDevelopedMarkets( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
EconomicMarketClusterRiskEmergingMarkets: |
|
|
EconomicMarketClusterRiskEmergingMarkets: |
|
|
new EconomicMarketClusterRiskEmergingMarkets( |
|
|
new EconomicMarketClusterRiskEmergingMarkets( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
EmergencyFundSetup: new EmergencyFundSetup( |
|
|
EmergencyFundSetup: new EmergencyFundSetup( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
FeeRatioInitialInvestment: new FeeRatioInitialInvestment( |
|
|
FeeRatioInitialInvestment: new FeeRatioInitialInvestment( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
RegionalMarketClusterRiskAsiaPacific: |
|
|
RegionalMarketClusterRiskAsiaPacific: |
|
|
new RegionalMarketClusterRiskAsiaPacific( |
|
|
new RegionalMarketClusterRiskAsiaPacific( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
RegionalMarketClusterRiskEmergingMarkets: |
|
|
RegionalMarketClusterRiskEmergingMarkets: |
|
|
new RegionalMarketClusterRiskEmergingMarkets( |
|
|
new RegionalMarketClusterRiskEmergingMarkets( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
RegionalMarketClusterRiskEurope: new RegionalMarketClusterRiskEurope( |
|
|
RegionalMarketClusterRiskEurope: new RegionalMarketClusterRiskEurope( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
RegionalMarketClusterRiskJapan: new RegionalMarketClusterRiskJapan( |
|
|
RegionalMarketClusterRiskJapan: new RegionalMarketClusterRiskJapan( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings), |
|
|
).getSettings(user.settings.settings), |
|
|
RegionalMarketClusterRiskNorthAmerica: |
|
|
RegionalMarketClusterRiskNorthAmerica: |
|
|
new RegionalMarketClusterRiskNorthAmerica( |
|
|
new RegionalMarketClusterRiskNorthAmerica( |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined, |
|
|
undefined |
|
|
undefined |
|
|
).getSettings(user.Settings.settings) |
|
|
).getSettings(user.settings.settings) |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
let currentPermissions = getPermissions(user.role); |
|
|
let currentPermissions = getPermissions(user.role); |
|
@ -360,7 +360,7 @@ export class UserService { |
|
|
currentPermissions.push(permissions.updateOwnAccessToken); |
|
|
currentPermissions.push(permissions.updateOwnAccessToken); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (!(user.Settings.settings as UserSettings).isExperimentalFeatures) { |
|
|
if (!(user.settings.settings as UserSettings).isExperimentalFeatures) { |
|
|
// currentPermissions = without(
|
|
|
// currentPermissions = without(
|
|
|
// currentPermissions,
|
|
|
// currentPermissions,
|
|
|
// permissions.xyz
|
|
|
// permissions.xyz
|
|
@ -411,10 +411,10 @@ export class UserService { |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
// Reset benchmark
|
|
|
// Reset benchmark
|
|
|
user.Settings.settings.benchmark = undefined; |
|
|
user.settings.settings.benchmark = undefined; |
|
|
|
|
|
|
|
|
// Reset holdings view mode
|
|
|
// Reset holdings view mode
|
|
|
user.Settings.settings.holdingsViewMode = undefined; |
|
|
user.settings.settings.holdingsViewMode = undefined; |
|
|
} else if (user.subscription?.type === 'Premium') { |
|
|
} else if (user.subscription?.type === 'Premium') { |
|
|
if (!hasRole(user, Role.DEMO)) { |
|
|
if (!hasRole(user, Role.DEMO)) { |
|
|
currentPermissions.push(permissions.createApiKey); |
|
|
currentPermissions.push(permissions.createApiKey); |
|
@ -510,7 +510,7 @@ export class UserService { |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
Settings: { |
|
|
settings: { |
|
|
create: { |
|
|
create: { |
|
|
settings: { |
|
|
settings: { |
|
|
currency: DEFAULT_CURRENCY |
|
|
currency: DEFAULT_CURRENCY |
|
|