Browse Source

Feature/add createdAt to snapshot and public portfolio endpoint response (#4350)

* Add createdAt to snapshot and public portfolio endpoint response

* Update changelog

---------

Co-authored-by: Verbindolai <nikolaiwieczorek@web.de>
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
pull/4373/head
csehatt741 4 weeks ago
committed by GitHub
parent
commit
035306d4d8
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 3
      apps/api/src/app/endpoints/public/public.controller.ts
  3. 1
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  4. 1
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts
  5. 2
      apps/api/src/app/portfolio/portfolio.controller.ts
  6. 3
      apps/api/src/app/portfolio/portfolio.service.ts
  7. 1
      apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
  8. 1
      libs/common/src/lib/interfaces/portfolio-details.interface.ts
  9. 1
      libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts
  10. 2
      libs/common/src/lib/models/portfolio-snapshot.ts

1
CHANGELOG.md

@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### Added
- Extended the export functionality by the platforms - Extended the export functionality by the platforms
- Extended the portfolio snapshot in the portfolio calculator by the `createdAt` timestamp
- Extended the _Trackinsight_ data enhancer for asset profile data by `cusip` - Extended the _Trackinsight_ data enhancer for asset profile data by `cusip`
- Added _Storybook_ to the build process - Added _Storybook_ to the build process

3
apps/api/src/app/endpoints/public/public.controller.ts

@ -57,7 +57,7 @@ export class PublicController {
} }
const [ const [
{ holdings, markets }, { createdAt, holdings, markets },
{ performance: performance1d }, { performance: performance1d },
{ performance: performanceMax }, { performance: performanceMax },
{ performance: performanceYtd } { performance: performanceYtd }
@ -81,6 +81,7 @@ export class PublicController {
}); });
const publicPortfolioResponse: PublicPortfolioResponse = { const publicPortfolioResponse: PublicPortfolioResponse = {
createdAt,
hasDetails, hasDetails,
markets, markets,
alias: access.alias, alias: access.alias,

1
apps/api/src/app/portfolio/calculator/portfolio-calculator.ts

@ -176,6 +176,7 @@ export abstract class PortfolioCalculator {
if (!transactionPoints.length) { if (!transactionPoints.length) {
return { return {
activitiesCount: 0, activitiesCount: 0,
createdAt: new Date(),
currentValueInBaseCurrency: new Big(0), currentValueInBaseCurrency: new Big(0),
errors: [], errors: [],
hasErrors: false, hasErrors: false,

1
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

@ -104,6 +104,7 @@ export class TWRPortfolioCalculator extends PortfolioCalculator {
activitiesCount: this.activities.filter(({ type }) => { activitiesCount: this.activities.filter(({ type }) => {
return ['BUY', 'SELL'].includes(type); return ['BUY', 'SELL'].includes(type);
}).length, }).length,
createdAt: new Date(),
errors: [], errors: [],
historicalData: [], historicalData: [],
totalLiabilitiesWithCurrencyEffect: new Big(0), totalLiabilitiesWithCurrencyEffect: new Big(0),

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

@ -105,6 +105,7 @@ export class PortfolioController {
const { const {
accounts, accounts,
createdAt,
hasErrors, hasErrors,
holdings, holdings,
markets, markets,
@ -233,6 +234,7 @@ export class PortfolioController {
return { return {
accounts, accounts,
createdAt,
hasError, hasError,
holdings, holdings,
platforms, platforms,

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

@ -376,7 +376,7 @@ export class PortfolioService {
currency: userCurrency currency: userCurrency
}); });
const { currentValueInBaseCurrency, hasErrors, positions } = const { createdAt, currentValueInBaseCurrency, hasErrors, positions } =
await portfolioCalculator.getSnapshot(); await portfolioCalculator.getSnapshot();
const cashDetails = await this.accountService.getCashDetails({ const cashDetails = await this.accountService.getCashDetails({
@ -617,6 +617,7 @@ export class PortfolioService {
return { return {
accounts, accounts,
createdAt,
hasErrors, hasErrors,
holdings, holdings,
markets, markets,

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

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

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

@ -14,6 +14,7 @@ export interface PortfolioDetails {
valueInPercentage?: number; valueInPercentage?: number;
}; };
}; };
createdAt: Date;
holdings: { [symbol: string]: PortfolioPosition }; holdings: { [symbol: string]: PortfolioPosition };
markets?: { markets?: {
[key in Market]: { [key in Market]: {

1
libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts

@ -32,6 +32,7 @@ export interface PublicPortfolioResponse extends PublicPortfolioResponseV1 {
} }
interface PublicPortfolioResponseV1 { interface PublicPortfolioResponseV1 {
createdAt: Date;
performance: { performance: {
'1d': { '1d': {
relativeChange: number; relativeChange: number;

2
libs/common/src/lib/models/portfolio-snapshot.ts

@ -11,6 +11,8 @@ import { Transform, Type } from 'class-transformer';
export class PortfolioSnapshot { export class PortfolioSnapshot {
activitiesCount: number; activitiesCount: number;
createdAt: Date;
@Transform(transformToBig, { toClassOnly: true }) @Transform(transformToBig, { toClassOnly: true })
@Type(() => Big) @Type(() => Big)
currentValueInBaseCurrency: Big; currentValueInBaseCurrency: Big;

Loading…
Cancel
Save