diff --git a/CHANGELOG.md b/CHANGELOG.md index ed320057a..75327ae9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,9 +14,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Respected the filter by account for accounts when exporting activities on the portfolio activities page - Improved the label for asset profiles with `MANUAL` data source in the chart of the holdings tab on the home page - Improved the language localization for Catalan (`ca`) +### Fixed + +- Fixed the export functionality for accounts without activities + ## 2.179.0 - 2025-07-07 ### Added diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 565dd1340..f0f52bfe2 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -5,7 +5,8 @@ import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { Filter, Export } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; -import { Platform } from '@prisma/client'; +import { Platform, Prisma } from '@prisma/client'; +import { groupBy } from 'lodash'; @Injectable() export class ExportService { @@ -26,6 +27,9 @@ export class ExportService { userCurrency: string; userId: string; }): Promise { + const { ACCOUNT: filtersByAccount } = groupBy(filters, ({ type }) => { + return type; + }); const platformsMap: { [platformId: string]: Platform } = {}; let { activities } = await this.orderService.getOrders({ @@ -44,20 +48,30 @@ export class ExportService { }); } + const where: Prisma.AccountWhereInput = { userId }; + + if (filtersByAccount?.length > 0) { + where.id = { + in: filtersByAccount.map(({ id }) => { + return id; + }) + }; + } + const accounts = ( await this.accountService.accounts({ + where, include: { balances: true, platform: true }, orderBy: { name: 'asc' - }, - where: { userId } + } }) ) .filter(({ id }) => { - return activities.length > 0 + return activityIds?.length > 0 ? activities.some(({ accountId }) => { return accountId === id; })