From e83d0861c7c9ac452bfd2e6df735436fa4f90ef5 Mon Sep 17 00:00:00 2001 From: francisco Date: Thu, 20 Apr 2023 20:01:27 +0200 Subject: [PATCH] feature: allow to delete all activities from portfolio --- apps/api/src/app/order/order.controller.ts | 19 ++++++++++++++++++- apps/client/src/app/services/data.service.ts | 4 ++++ .../activities-table.component.html | 2 +- .../activities-table.component.ts | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/apps/api/src/app/order/order.controller.ts b/apps/api/src/app/order/order.controller.ts index 0f1e382d6..fa4561bea 100644 --- a/apps/api/src/app/order/order.controller.ts +++ b/apps/api/src/app/order/order.controller.ts @@ -5,7 +5,7 @@ import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; -import type { RequestWithUser } from '@ghostfolio/common/types'; +import { RequestWithUser } from '@ghostfolio/common/types'; import { Body, Controller, @@ -79,6 +79,23 @@ export class OrderController { }); } + @Delete() + @UseGuards(AuthGuard('jwt')) + public async deleteOrders(): Promise { + if ( + !hasPermission(this.request.user.permissions, permissions.deleteOrder) + ) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } + + return this.orderService.deleteOrders({ + userId: this.request.user.id + }); + } + @Get() @UseGuards(AuthGuard('jwt')) @UseInterceptors(RedactValuesInResponseInterceptor) diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index bff672717..eb48f63ab 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -154,6 +154,10 @@ export class DataService { return this.http.delete(`/api/v1/order/${aId}`); } + public deleteAllOrders() { + return this.http.delete(`/api/v1/order/`); + } + public deleteUser(aId: string) { return this.http.delete(`/api/v1/user/${aId}`); } diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index 4ac853436..6fde05861 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -59,7 +59,7 @@ (click)="onDeleteAllActivities()" > - Delete all Activities + Delete all activities diff --git a/libs/ui/src/lib/activities-table/activities-table.component.ts b/libs/ui/src/lib/activities-table/activities-table.component.ts index 1c3fb0367..d68e44e3b 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.ts @@ -53,6 +53,7 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy, OnInit { @Output() export = new EventEmitter(); @Output() exportDrafts = new EventEmitter(); @Output() import = new EventEmitter(); + @Output() deleteAllActivities = new EventEmitter(); @Output() importDividends = new EventEmitter(); @Output() selectedActivities = new EventEmitter();