Browse Source

Refactoring

pull/3123/head
Thomas Kaul 1 year ago
parent
commit
d7119addd5
  1. 21
      apps/api/src/app/portfolio/portfolio.controller.ts
  2. 18
      apps/api/src/app/portfolio/portfolio.service.ts
  3. 2
      apps/api/src/interceptors/redact-values-in-response.interceptor.ts
  4. 2
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
  5. 1
      apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
  6. 9
      apps/client/src/app/pages/portfolio/allocations/allocations-page.html
  7. 3
      libs/common/src/lib/interfaces/portfolio-details.interface.ts
  8. 4
      libs/common/src/lib/interfaces/portfolio-summary.interface.ts

21
apps/api/src/app/portfolio/portfolio.controller.ts

@ -96,16 +96,8 @@ export class PortfolioController {
filterByTags filterByTags
}); });
const { const { accounts, hasErrors, holdings, platforms, summary } =
accounts, await this.portfolioService.getDetails({
filteredValueInBaseCurrency,
filteredValueInPercentage,
hasErrors,
holdings,
platforms,
summary,
totalValueInBaseCurrency
} = await this.portfolioService.getDetails({
dateRange, dateRange,
filters, filters,
impersonationId, impersonationId,
@ -167,19 +159,21 @@ export class PortfolioController {
'currentGrossPerformanceWithCurrencyEffect', 'currentGrossPerformanceWithCurrencyEffect',
'currentNetPerformance', 'currentNetPerformance',
'currentNetPerformanceWithCurrencyEffect', 'currentNetPerformanceWithCurrencyEffect',
'currentNetWorth',
'currentValue', 'currentValue',
'dividendInBaseCurrency', 'dividendInBaseCurrency',
'emergencyFund', 'emergencyFund',
'excludedAccountsAndActivities', 'excludedAccountsAndActivities',
'fees', 'fees',
'filteredValueInBaseCurrency',
'fireWealth', 'fireWealth',
'interest', 'interest',
'items', 'items',
'liabilities', 'liabilities',
'netWorth',
'totalBuy', 'totalBuy',
'totalInvestment', 'totalInvestment',
'totalSell' 'totalSell',
'totalValueInBaseCurrency'
]); ]);
} }
@ -206,12 +200,9 @@ export class PortfolioController {
return { return {
accounts, accounts,
filteredValueInBaseCurrency,
filteredValueInPercentage,
hasError, hasError,
holdings, holdings,
platforms, platforms,
totalValueInBaseCurrency,
summary: portfolioSummary summary: portfolioSummary
}; };
} }

18
apps/api/src/app/portfolio/portfolio.service.ts

@ -644,6 +644,7 @@ export class PortfolioService {
if (withSummary) { if (withSummary) {
summary = await this.getSummary({ summary = await this.getSummary({
filteredValueInBaseCurrency,
holdings, holdings,
impersonationId, impersonationId,
userCurrency, userCurrency,
@ -661,12 +662,7 @@ export class PortfolioService {
holdings, holdings,
platforms, platforms,
summary, summary,
filteredValueInBaseCurrency: filteredValueInBaseCurrency.toNumber(), hasErrors: currentPositions.hasErrors
filteredValueInPercentage: summary?.netWorth
? filteredValueInBaseCurrency.div(summary.netWorth).toNumber()
: undefined,
hasErrors: currentPositions.hasErrors,
totalValueInBaseCurrency: summary?.netWorth
}; };
} }
@ -1724,6 +1720,7 @@ export class PortfolioService {
private async getSummary({ private async getSummary({
balanceInBaseCurrency, balanceInBaseCurrency,
emergencyFundPositionsValueInBaseCurrency, emergencyFundPositionsValueInBaseCurrency,
filteredValueInBaseCurrency,
holdings, holdings,
impersonationId, impersonationId,
userCurrency, userCurrency,
@ -1731,6 +1728,7 @@ export class PortfolioService {
}: { }: {
balanceInBaseCurrency: number; balanceInBaseCurrency: number;
emergencyFundPositionsValueInBaseCurrency: number; emergencyFundPositionsValueInBaseCurrency: number;
filteredValueInBaseCurrency: Big;
holdings: PortfolioDetails['holdings']; holdings: PortfolioDetails['holdings'];
impersonationId: string; impersonationId: string;
userCurrency: string; userCurrency: string;
@ -1912,7 +1910,6 @@ export class PortfolioService {
interest, interest,
items, items,
liabilities, liabilities,
netWorth,
totalBuy, totalBuy,
totalSell, totalSell,
committedFunds: committedFunds.toNumber(), committedFunds: committedFunds.toNumber(),
@ -1924,12 +1921,17 @@ export class PortfolioService {
.toNumber(), .toNumber(),
total: emergencyFund.toNumber() total: emergencyFund.toNumber()
}, },
filteredValueInBaseCurrency: filteredValueInBaseCurrency.toNumber(),
filteredValueInPercentage: netWorth
? filteredValueInBaseCurrency.div(netWorth).toNumber()
: undefined,
fireWealth: new Big(performanceInformation.performance.currentValue) fireWealth: new Big(performanceInformation.performance.currentValue)
.minus(emergencyFundPositionsValueInBaseCurrency) .minus(emergencyFundPositionsValueInBaseCurrency)
.toNumber(), .toNumber(),
ordersCount: activities.filter(({ type }) => { ordersCount: activities.filter(({ type }) => {
return type === 'BUY' || type === 'SELL'; return type === 'BUY' || type === 'SELL';
}).length }).length,
totalValueInBaseCurrency: netWorth
}; };
} }

2
apps/api/src/interceptors/redact-values-in-response.interceptor.ts

@ -49,7 +49,6 @@ export class RedactValuesInResponseInterceptor<T>
'dividendInBaseCurrency', 'dividendInBaseCurrency',
'fee', 'fee',
'feeInBaseCurrency', 'feeInBaseCurrency',
'filteredValueInBaseCurrency',
'grossPerformance', 'grossPerformance',
'grossPerformanceWithCurrencyEffect', 'grossPerformanceWithCurrencyEffect',
'investment', 'investment',
@ -58,7 +57,6 @@ export class RedactValuesInResponseInterceptor<T>
'quantity', 'quantity',
'symbolMapping', 'symbolMapping',
'totalBalanceInBaseCurrency', 'totalBalanceInBaseCurrency',
'totalValueInBaseCurrency',
'unitPrice', 'unitPrice',
'value', 'value',
'valueInBaseCurrency' 'valueInBaseCurrency'

2
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html

@ -282,7 +282,7 @@
[isCurrency]="true" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency" [unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.netWorth" [value]="isLoading ? undefined : summary?.totalValueInBaseCurrency"
/> />
</div> </div>
</div> </div>

1
apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts

@ -281,7 +281,6 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
this.platforms = {}; this.platforms = {};
this.portfolioDetails = { this.portfolioDetails = {
accounts: {}, accounts: {},
filteredValueInPercentage: 0,
holdings: {}, holdings: {},
platforms: {}, platforms: {},
summary: undefined summary: undefined

9
apps/client/src/app/pages/portfolio/allocations/allocations-page.html

@ -18,7 +18,7 @@
[value]=" [value]="
isLoading isLoading
? undefined ? undefined
: portfolioDetails?.filteredValueInPercentage : portfolioDetails?.summary?.filteredValueInPercentage
" "
/> />
</mat-card-header> </mat-card-header>
@ -26,10 +26,11 @@
<mat-progress-bar <mat-progress-bar
mode="determinate" mode="determinate"
[title]=" [title]="
(portfolioDetails?.filteredValueInPercentage * 100).toFixed(2) + (
'%' portfolioDetails?.summary?.filteredValueInPercentage * 100
).toFixed(2) + '%'
" "
[value]="portfolioDetails?.filteredValueInPercentage * 100" [value]="portfolioDetails?.summary?.filteredValueInPercentage * 100"
/> />
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>

3
libs/common/src/lib/interfaces/portfolio-details.interface.ts

@ -13,8 +13,6 @@ export interface PortfolioDetails {
valueInPercentage?: number; valueInPercentage?: number;
}; };
}; };
filteredValueInBaseCurrency?: number;
filteredValueInPercentage?: number;
holdings: { [symbol: string]: PortfolioPosition }; holdings: { [symbol: string]: PortfolioPosition };
platforms: { platforms: {
[id: string]: { [id: string]: {
@ -26,5 +24,4 @@ export interface PortfolioDetails {
}; };
}; };
summary?: PortfolioSummary; summary?: PortfolioSummary;
totalValueInBaseCurrency?: number;
} }

4
libs/common/src/lib/interfaces/portfolio-summary.interface.ts

@ -13,13 +13,15 @@ export interface PortfolioSummary extends PortfolioPerformance {
}; };
excludedAccountsAndActivities: number; excludedAccountsAndActivities: number;
fees: number; fees: number;
filteredValueInBaseCurrency?: number;
filteredValueInPercentage?: number;
fireWealth: number; fireWealth: number;
firstOrderDate: Date; firstOrderDate: Date;
interest: number; interest: number;
items: number; items: number;
liabilities: number; liabilities: number;
netWorth: number;
ordersCount: number; ordersCount: number;
totalBuy: number; totalBuy: number;
totalSell: number; totalSell: number;
totalValueInBaseCurrency?: number;
} }

Loading…
Cancel
Save