From c05ca5d473138da9e43f70bef46776d5597bb1b9 Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Mon, 5 May 2025 22:54:52 +0700 Subject: [PATCH] resolve comments --- .../src/app/portfolio/portfolio.service.ts | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index a6f3df6c3..c580ce149 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -24,7 +24,6 @@ import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.s import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; -import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { getAnnualizedPerformancePercent, @@ -107,7 +106,6 @@ export class PortfolioService { private readonly dataProviderService: DataProviderService, private readonly exchangeRateDataService: ExchangeRateDataService, private readonly impersonationService: ImpersonationService, - private readonly marketDataService: MarketDataService, private readonly orderService: OrderService, @Inject(REQUEST) private readonly request: RequestWithUser, private readonly rulesService: RulesService, @@ -682,11 +680,6 @@ export class PortfolioService { }; } - const allTimeHigh = await this.marketDataService.getMax({ - dataSource: aDataSource, - symbol: aSymbol - }); - const [SymbolProfile] = await this.symbolProfileService.getSymbolProfiles([ { dataSource: aDataSource, symbol: aSymbol } ]); @@ -762,6 +755,10 @@ export class PortfolioService { activitiesOfHolding[0].unitPriceInAssetProfileCurrency, marketPrice ); + let marketPriceMaxDate = + marketPrice > activitiesOfHolding[0].unitPriceInAssetProfileCurrency + ? new Date() + : activitiesOfHolding[0].date; let marketPriceMin = Math.min( activitiesOfHolding[0].unitPriceInAssetProfileCurrency, marketPrice @@ -803,7 +800,10 @@ export class PortfolioService { quantity: currentQuantity }); - marketPriceMax = Math.max(marketPrice ?? 0, marketPriceMax); + if (marketPrice > marketPriceMax) { + marketPriceMax = marketPrice; + marketPriceMaxDate = parseISO(date); + } marketPriceMin = Math.min( marketPrice ?? Number.MAX_SAFE_INTEGER, marketPriceMin @@ -821,7 +821,7 @@ export class PortfolioService { const performancePercent = this.benchmarkService.calculateChangeInPercentage( - allTimeHigh?.marketPrice, + marketPriceMax, marketPrice ); @@ -865,7 +865,7 @@ export class PortfolioService { performances: { allTimeHigh: { performancePercent, - date: allTimeHigh?.date + date: marketPriceMaxDate } }, quantity: quantity.toNumber(), @@ -907,6 +907,7 @@ export class PortfolioService { const historicalDataArray: HistoricalDataItem[] = []; let marketPriceMax = marketPrice; + let marketPriceMaxDate = new Date(); let marketPriceMin = marketPrice; for (const [date, { marketPrice }] of Object.entries( @@ -917,7 +918,10 @@ export class PortfolioService { value: marketPrice }); - marketPriceMax = Math.max(marketPrice ?? 0, marketPriceMax); + if (marketPrice > marketPriceMax) { + marketPriceMax = marketPrice; + marketPriceMaxDate = parseISO(date); + } marketPriceMin = Math.min( marketPrice ?? Number.MAX_SAFE_INTEGER, marketPriceMin @@ -926,7 +930,7 @@ export class PortfolioService { const performancePercent = this.benchmarkService.calculateChangeInPercentage( - allTimeHigh?.marketPrice, + marketPriceMax, marketPrice ); @@ -956,7 +960,7 @@ export class PortfolioService { performances: { allTimeHigh: { performancePercent, - date: allTimeHigh?.date + date: marketPriceMaxDate } }, quantity: 0,