From ad7b47b244d6ad4040b8b6548d5206c4476d1175 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sat, 7 Jan 2023 11:14:26 +0100 Subject: [PATCH] Get date range from position --- apps/api/src/app/import/import.module.ts | 2 ++ apps/api/src/app/import/import.service.ts | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/api/src/app/import/import.module.ts b/apps/api/src/app/import/import.module.ts index 9d704a880..b344abff6 100644 --- a/apps/api/src/app/import/import.module.ts +++ b/apps/api/src/app/import/import.module.ts @@ -1,6 +1,7 @@ import { AccountModule } from '@ghostfolio/api/app/account/account.module'; import { CacheModule } from '@ghostfolio/api/app/cache/cache.module'; import { OrderModule } from '@ghostfolio/api/app/order/order.module'; +import { PortfolioModule } from '@ghostfolio/api/app/portfolio/portfolio.module'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration.module'; import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering.module'; @@ -23,6 +24,7 @@ import { ImportService } from './import.service'; DataProviderModule, ExchangeRateDataModule, OrderModule, + PortfolioModule, PrismaModule, RedisCacheModule, SymbolProfileModule diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 422e985f8..37845c6c9 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -2,6 +2,7 @@ import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; +import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile.service'; @@ -11,7 +12,7 @@ import { OrderWithAccount } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; import { SymbolProfile } from '@prisma/client'; import Big from 'big.js'; -import { endOfToday, isAfter, isSameDay, parseISO, subYears } from 'date-fns'; +import { endOfToday, isAfter, isSameDay, parseISO } from 'date-fns'; import { v4 as uuidv4 } from 'uuid'; @Injectable() @@ -21,6 +22,7 @@ export class ImportService { private readonly dataProviderService: DataProviderService, private readonly exchangeRateDataService: ExchangeRateDataService, private readonly orderService: OrderService, + private readonly portfolioService: PortfolioService, private readonly symbolProfileService: SymbolProfileService ) {} @@ -29,9 +31,13 @@ export class ImportService { symbol }: UniqueAsset): Promise { try { - const date = new Date(); + const { firstBuyDate } = await this.portfolioService.getPosition( + dataSource, + undefined, + symbol + ); - const [[assetProfile], historicalData] = await Promise.all([ + const [[assetProfile], dividends] = await Promise.all([ this.symbolProfileService.getSymbolProfiles([ { dataSource, @@ -41,14 +47,14 @@ export class ImportService { await this.dataProviderService.getDividends({ dataSource, symbol, - from: subYears(date, 5), + from: parseDate(firstBuyDate), granularity: 'day', - to: date + to: new Date() }) ]); return { - activities: Object.entries(historicalData).map( + activities: Object.entries(dividends).map( ([dateString, historicalDataItem]) => { return { accountId: undefined,