Browse Source

Refactoring

pull/3123/head
Thomas Kaul 1 year ago
parent
commit
d7119addd5
  1. 35
      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

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

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

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

@ -644,6 +644,7 @@ export class PortfolioService {
if (withSummary) {
summary = await this.getSummary({
filteredValueInBaseCurrency,
holdings,
impersonationId,
userCurrency,
@ -661,12 +662,7 @@ export class PortfolioService {
holdings,
platforms,
summary,
filteredValueInBaseCurrency: filteredValueInBaseCurrency.toNumber(),
filteredValueInPercentage: summary?.netWorth
? filteredValueInBaseCurrency.div(summary.netWorth).toNumber()
: undefined,
hasErrors: currentPositions.hasErrors,
totalValueInBaseCurrency: summary?.netWorth
hasErrors: currentPositions.hasErrors
};
}
@ -1724,6 +1720,7 @@ export class PortfolioService {
private async getSummary({
balanceInBaseCurrency,
emergencyFundPositionsValueInBaseCurrency,
filteredValueInBaseCurrency,
holdings,
impersonationId,
userCurrency,
@ -1731,6 +1728,7 @@ export class PortfolioService {
}: {
balanceInBaseCurrency: number;
emergencyFundPositionsValueInBaseCurrency: number;
filteredValueInBaseCurrency: Big;
holdings: PortfolioDetails['holdings'];
impersonationId: string;
userCurrency: string;
@ -1912,7 +1910,6 @@ export class PortfolioService {
interest,
items,
liabilities,
netWorth,
totalBuy,
totalSell,
committedFunds: committedFunds.toNumber(),
@ -1924,12 +1921,17 @@ export class PortfolioService {
.toNumber(),
total: emergencyFund.toNumber()
},
filteredValueInBaseCurrency: filteredValueInBaseCurrency.toNumber(),
filteredValueInPercentage: netWorth
? filteredValueInBaseCurrency.div(netWorth).toNumber()
: undefined,
fireWealth: new Big(performanceInformation.performance.currentValue)
.minus(emergencyFundPositionsValueInBaseCurrency)
.toNumber(),
ordersCount: activities.filter(({ type }) => {
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',
'fee',
'feeInBaseCurrency',
'filteredValueInBaseCurrency',
'grossPerformance',
'grossPerformanceWithCurrencyEffect',
'investment',
@ -58,7 +57,6 @@ export class RedactValuesInResponseInterceptor<T>
'quantity',
'symbolMapping',
'totalBalanceInBaseCurrency',
'totalValueInBaseCurrency',
'unitPrice',
'value',
'valueInBaseCurrency'

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

@ -282,7 +282,7 @@
[isCurrency]="true"
[locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.netWorth"
[value]="isLoading ? undefined : summary?.totalValueInBaseCurrency"
/>
</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.portfolioDetails = {
accounts: {},
filteredValueInPercentage: 0,
holdings: {},
platforms: {},
summary: undefined

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

@ -18,7 +18,7 @@
[value]="
isLoading
? undefined
: portfolioDetails?.filteredValueInPercentage
: portfolioDetails?.summary?.filteredValueInPercentage
"
/>
</mat-card-header>
@ -26,10 +26,11 @@
<mat-progress-bar
mode="determinate"
[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>

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

@ -13,8 +13,6 @@ export interface PortfolioDetails {
valueInPercentage?: number;
};
};
filteredValueInBaseCurrency?: number;
filteredValueInPercentage?: number;
holdings: { [symbol: string]: PortfolioPosition };
platforms: {
[id: string]: {
@ -26,5 +24,4 @@ export interface PortfolioDetails {
};
};
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;
fees: number;
filteredValueInBaseCurrency?: number;
filteredValueInPercentage?: number;
fireWealth: number;
firstOrderDate: Date;
interest: number;
items: number;
liabilities: number;
netWorth: number;
ordersCount: number;
totalBuy: number;
totalSell: number;
totalValueInBaseCurrency?: number;
}

Loading…
Cancel
Save