diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 05d6cff4d..f17d3a4d3 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -314,11 +314,11 @@ export class AdminController { return this.adminService.getMarketDataBySymbol({ dataSource, symbol }); } - @UseGuards(AuthGuard('jwt')) @Post('market-data/:dataSource/:symbol') + @UseGuards(AuthGuard('jwt')) public async updateMarketData( - @Param('dataSource') dataSourceParam: DataSource, - @Param('symbol') symbolParam: string, + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string, @Body() data: UpdateBulkMarketDataDto ) { if ( @@ -332,16 +332,17 @@ export class AdminController { StatusCodes.FORBIDDEN ); } - const dataBulkUpdate: Prisma.MarketDataUpdateInput[] = []; - data.marketData.forEach((entry) => { - dataBulkUpdate.push({ - dataSource: dataSourceParam, - symbol: symbolParam, + + const dataBulkUpdate: Prisma.MarketDataUpdateInput[] = data.marketData.map( + (entry) => ({ + dataSource: dataSource, + symbol: symbol, date: entry.date, marketPrice: entry.marketPrice, state: 'CLOSE' - }); - }); + }) + ); + return this.marketDataService.updateMany({ data: dataBulkUpdate }); diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index db1f4ef98..7f946c2a4 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -45,8 +45,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { public countries: { [code: string]: { name: string; value: number }; }; - public isBenchmark = false; public historicalDataAsString: string; + public isBenchmark = false; public marketDataDetails: MarketData[] = []; public sectors: { [name: string]: { name: string; value: number }; @@ -203,23 +203,19 @@ export class AssetProfileDialog implements OnDestroy, OnInit { }); } - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } - public importHistoricalData() { const inputHistoricalData = this.historicalDataAsString; const inputSplittedByLine = inputHistoricalData.split('\n'); - const dataBulkUpdate: UpdateMarketDataDto[] = []; - inputSplittedByLine.forEach((line) => { - const inputSplittedBySeparator = line.split(';'); - const inputDate = parseISO(inputSplittedBySeparator[0]); - dataBulkUpdate.push({ - date: inputDate, - marketPrice: Number(inputSplittedBySeparator[1]) - }); - }); + const dataBulkUpdate: UpdateMarketDataDto[] = inputSplittedByLine.map( + (line) => { + const inputSplittedBySeparator = line.split(';'); + const inputDate = parseISO(inputSplittedBySeparator[0]); + return { + date: inputDate, + marketPrice: Number(inputSplittedBySeparator[1]) + }; + } + ); this.adminService .postMarketData({ @@ -234,4 +230,9 @@ export class AssetProfileDialog implements OnDestroy, OnInit { this.historicalDataAsString = ''; } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } } diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index 0dab9f0e5..5e9460d91 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -54,7 +54,9 @@
- Historical Data + + Historical Data (CSV) +