diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index 80968ebd12..38f942156a 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -816,25 +816,39 @@ export abstract class PortfolioCalculator { let firstAccountBalanceDate: Date; let firstActivityDate: Date; - try { - const firstAccountBalanceDateString = this.accountBalanceItems[0]?.date; - firstAccountBalanceDate = firstAccountBalanceDateString - ? parseDate(firstAccountBalanceDateString) - : new Date(); - } catch (error) { - firstAccountBalanceDate = new Date(); + if (this.accountBalanceItems?.length > 0) { + try { + const firstAccountBalanceDateString = this.accountBalanceItems[0].date; + firstAccountBalanceDate = firstAccountBalanceDateString + ? parseDate(firstAccountBalanceDateString) + : new Date(); + } catch (error) { + firstAccountBalanceDate = new Date(); + } } - try { - const firstActivityDateString = this.transactionPoints[0].date; - firstActivityDate = firstActivityDateString - ? parseDate(firstActivityDateString) - : new Date(); - } catch (error) { - firstActivityDate = new Date(); + if (this.transactionPoints?.length > 0) { + try { + const firstActivityDateString = this.transactionPoints[0].date; + firstActivityDate = firstActivityDateString + ? parseDate(firstActivityDateString) + : new Date(); + } catch (error) { + firstActivityDate = new Date(); + } + } + + const dates = [firstAccountBalanceDate, firstActivityDate].filter( + (date) => { + return !!date; + } + ); + + if (dates.length === 0) { + return undefined; } - return min([firstAccountBalanceDate, firstActivityDate]); + return min(dates); } protected abstract getSymbolMetrics({ diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 2eae635449..6a3c1f145a 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1986,7 +1986,9 @@ export class PortfolioService { .minus(liabilities) .toNumber(); - const daysInMarket = differenceInDays(new Date(), dateOfFirstActivity); + const daysInMarket = dateOfFirstActivity + ? differenceInDays(new Date(), dateOfFirstActivity) + : 0; const annualizedPerformancePercent = getAnnualizedPerformancePercent({ daysInMarket, diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts index 8bc79b6246..1cd2ec93ca 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts @@ -116,7 +116,7 @@ export class GfPortfolioSummaryComponent implements OnChanges { } ); } else { - this.timeInMarket = '-'; + this.timeInMarket = '–'; } } else { this.timeInMarket = undefined; diff --git a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts index e109a7e63f..b1b7e938bc 100644 --- a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts @@ -6,7 +6,7 @@ export interface PortfolioSummary extends PortfolioPerformance { annualizedPerformancePercent: number; annualizedPerformancePercentWithCurrencyEffect: number; cash: number; - dateOfFirstActivity: Date; + dateOfFirstActivity?: Date; dividendInBaseCurrency: number; emergencyFund: { assets: number;