diff --git a/apps/api/src/app/export/export.controller.ts b/apps/api/src/app/export/export.controller.ts index 88ba79989..baa0179bb 100644 --- a/apps/api/src/app/export/export.controller.ts +++ b/apps/api/src/app/export/export.controller.ts @@ -1,4 +1,5 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; +import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { Export } from '@ghostfolio/common/interfaces'; import type { RequestWithUser } from '@ghostfolio/common/types'; import { Controller, Get, Inject, Query, UseGuards } from '@nestjs/common'; @@ -10,6 +11,7 @@ import { ExportService } from './export.service'; @Controller('export') export class ExportController { public constructor( + private readonly apiService: ApiService, private readonly exportService: ExportService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -17,10 +19,20 @@ export class ExportController { @Get() @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async export( - @Query('activityIds') activityIds?: string[] + @Query('accounts') filterByAccounts?: string, + @Query('activityIds') activityIds?: string[], + @Query('assetClasses') filterByAssetClasses?: string, + @Query('tags') filterByTags?: string ): Promise { + const filters = this.apiService.buildFiltersFromQueryParams({ + filterByAccounts, + filterByAssetClasses, + filterByTags + }); + return this.exportService.export({ activityIds, + filters, userCurrency: this.request.user.Settings.settings.baseCurrency, userId: this.request.user.id }); diff --git a/apps/api/src/app/export/export.module.ts b/apps/api/src/app/export/export.module.ts index ca4588925..847695d17 100644 --- a/apps/api/src/app/export/export.module.ts +++ b/apps/api/src/app/export/export.module.ts @@ -1,6 +1,7 @@ import { AccountModule } from '@ghostfolio/api/app/account/account.module'; import { OrderModule } from '@ghostfolio/api/app/order/order.module'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; +import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering/data-gathering.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; @@ -12,6 +13,7 @@ import { ExportService } from './export.service'; @Module({ imports: [ AccountModule, + ApiModule, ConfigurationModule, DataGatheringModule, DataProviderModule, diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 031111d7f..836da21cc 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -1,7 +1,7 @@ import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { environment } from '@ghostfolio/api/environments/environment'; -import { Export } from '@ghostfolio/common/interfaces'; +import { Filter, Export } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; @Injectable() @@ -13,10 +13,12 @@ export class ExportService { public async export({ activityIds, + filters, userCurrency, userId }: { activityIds?: string[]; + filters?: Filter[]; userCurrency: string; userId: string; }): Promise {