Browse Source

Respect activity type and date range filter

pull/7492/head
Thomas Kaul 1 month ago
parent
commit
2e47803e14
  1. 14
      apps/api/src/app/activities/activities.controller.ts
  2. 9
      apps/api/src/app/activities/activities.service.ts
  3. 15
      apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
  4. 26
      libs/ui/src/lib/services/data.service.ts

14
apps/api/src/app/activities/activities.controller.ts

@ -61,11 +61,20 @@ export class ActivitiesController {
@UseInterceptors(TransformDataSourceInRequestInterceptor) @UseInterceptors(TransformDataSourceInRequestInterceptor)
public async deleteActivities( public async deleteActivities(
@Query('accounts') filterByAccounts?: string, @Query('accounts') filterByAccounts?: string,
@Query('activityTypes') filterByTypes?: string,
@Query('assetClasses') filterByAssetClasses?: string, @Query('assetClasses') filterByAssetClasses?: string,
@Query('dataSource') filterByDataSource?: string, @Query('dataSource') filterByDataSource?: string,
@Query('range') dateRange?: DateRange,
@Query('symbol') filterBySymbol?: string, @Query('symbol') filterBySymbol?: string,
@Query('tags') filterByTags?: string @Query('tags') filterByTags?: string
): Promise<number> { ): Promise<number> {
let endDate: Date;
let startDate: Date;
if (dateRange) {
({ endDate, startDate } = getIntervalFromDateRange({ dateRange }));
}
const filters = this.apiService.buildFiltersFromQueryParams({ const filters = this.apiService.buildFiltersFromQueryParams({
filterByAccounts, filterByAccounts,
filterByAssetClasses, filterByAssetClasses,
@ -74,8 +83,13 @@ export class ActivitiesController {
filterByTags filterByTags
}); });
const types = (filterByTypes?.split(',') as ActivityType[]) ?? [];
return this.activitiesService.deleteActivities({ return this.activitiesService.deleteActivities({
endDate,
filters, filters,
startDate,
types,
userId: this.request.user.id userId: this.request.user.id
}); });
} }

9
apps/api/src/app/activities/activities.service.ts

@ -361,14 +361,23 @@ export class ActivitiesService {
} }
public async deleteActivities({ public async deleteActivities({
endDate,
filters, filters,
startDate,
types,
userId userId
}: { }: {
endDate?: Date;
filters?: Filter[]; filters?: Filter[];
startDate?: Date;
types?: ActivityType[];
userId: string; userId: string;
}): Promise<number> { }): Promise<number> {
const { activities } = await this.getActivities({ const { activities } = await this.getActivities({
endDate,
filters, filters,
startDate,
types,
userId, userId,
includeDrafts: true, includeDrafts: true,
userCurrency: undefined, userCurrency: undefined,

15
apps/client/src/app/pages/portfolio/activities/activities-page.component.ts

@ -120,6 +120,10 @@ export class GfActivitiesPageComponent implements OnInit {
protected onDeleteActivities() { protected onDeleteActivities() {
this.dataService this.dataService
.deleteActivities({ .deleteActivities({
range: this.getCalendarYearRange(),
activityTypes: this.activityTypesFilter.length
? this.activityTypesFilter
: undefined,
filters: this.userService.getFilters() filters: this.userService.getFilters()
}) })
.pipe(takeUntilDestroyed(this.destroyRef)) .pipe(takeUntilDestroyed(this.destroyRef))
@ -277,12 +281,9 @@ export class GfActivitiesPageComponent implements OnInit {
this.dataSource = undefined; this.dataSource = undefined;
this.totalItems = undefined; this.totalItems = undefined;
const dateRange = this.user?.settings?.dateRange;
const range = this.isCalendarYear(dateRange) ? dateRange : undefined;
this.dataService this.dataService
.fetchActivities({ .fetchActivities({
range, range: this.getCalendarYearRange(),
activityTypes: this.activityTypesFilter.length activityTypes: this.activityTypesFilter.length
? this.activityTypesFilter ? this.activityTypesFilter
: undefined, : undefined,
@ -311,6 +312,12 @@ export class GfActivitiesPageComponent implements OnInit {
}); });
} }
private getCalendarYearRange() {
const dateRange = this.user?.settings?.dateRange;
return this.isCalendarYear(dateRange) ? dateRange : undefined;
}
private isCalendarYear(dateRange?: DateRange) { private isCalendarYear(dateRange?: DateRange) {
if (!dateRange) { if (!dateRange) {
return false; return false;

26
libs/ui/src/lib/services/data.service.ts

@ -329,8 +329,24 @@ export class DataService {
return this.http.delete<AccountBalance>(`/api/v1/account-balance/${aId}`); return this.http.delete<AccountBalance>(`/api/v1/account-balance/${aId}`);
} }
public deleteActivities({ filters }: { filters?: Filter[] }) { public deleteActivities({
const params = this.buildFiltersAsQueryParams({ filters }); activityTypes,
filters,
range
}: {
activityTypes?: string[];
filters?: Filter[];
range?: DateRange;
}) {
let params = this.buildFiltersAsQueryParams({ filters });
if (activityTypes?.length) {
params = params.append('activityTypes', activityTypes.join(','));
}
if (range) {
params = params.append('range', range);
}
return this.http.delete<number>('/api/v1/activities', { params }); return this.http.delete<number>('/api/v1/activities', { params });
} }
@ -509,8 +525,7 @@ export class DataService {
public fetchInfo(): InfoItem { public fetchInfo(): InfoItem {
const info = cloneDeep((window as any).info); const info = cloneDeep((window as any).info);
const utmSource = window.localStorage.getItem('utm_source') as const utmSource = window.localStorage.getItem('utm_source') as
| 'ios' 'ios' | 'trusted-web-activity';
| 'trusted-web-activity';
info.globalPermissions = filterGlobalPermissions( info.globalPermissions = filterGlobalPermissions(
info.globalPermissions, info.globalPermissions,
@ -949,8 +964,7 @@ export class DataService {
public updateInfo() { public updateInfo() {
this.http.get<InfoItem>('/api/v1/info').subscribe((info) => { this.http.get<InfoItem>('/api/v1/info').subscribe((info) => {
const utmSource = window.localStorage.getItem('utm_source') as const utmSource = window.localStorage.getItem('utm_source') as
| 'ios' 'ios' | 'trusted-web-activity';
| 'trusted-web-activity';
info.globalPermissions = filterGlobalPermissions( info.globalPermissions = filterGlobalPermissions(
info.globalPermissions, info.globalPermissions,

Loading…
Cancel
Save