Browse Source
feature: allow to delete all activities of a user (#1880)
* Allow to delete all activities of a user
* Update changelog
pull/1895/head
Francisco Silva
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with
66 additions and
0 deletions
-
CHANGELOG.md
-
apps/api/src/app/order/order.controller.ts
-
apps/api/src/app/order/order.service.ts
-
apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
-
apps/client/src/app/pages/portfolio/activities/activities-page.html
-
apps/client/src/app/services/data.service.ts
-
libs/ui/src/lib/activities-table/activities-table.component.html
-
libs/ui/src/lib/activities-table/activities-table.component.ts
|
|
@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. |
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
|
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
|
|
|
|
|
|
|
## Unreleased |
|
|
|
|
|
|
|
### Added |
|
|
|
|
|
|
|
- Introduced a new button to delete all activities from the portfolio activities page |
|
|
|
|
|
|
|
## 1.260.0 - 2023-04-23 |
|
|
|
|
|
|
|
### Added |
|
|
|
|
|
@ -41,6 +41,23 @@ export class OrderController { |
|
|
|
@Inject(REQUEST) private readonly request: RequestWithUser |
|
|
|
) {} |
|
|
|
|
|
|
|
@Delete() |
|
|
|
@UseGuards(AuthGuard('jwt')) |
|
|
|
public async deleteOrders(): Promise<number> { |
|
|
|
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 |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Delete(':id') |
|
|
|
@UseGuards(AuthGuard('jwt')) |
|
|
|
public async deleteOrder(@Param('id') id: string): Promise<OrderModel> { |
|
|
|
|
|
@ -181,6 +181,14 @@ export class OrderService { |
|
|
|
return order; |
|
|
|
} |
|
|
|
|
|
|
|
public async deleteOrders(where: Prisma.OrderWhereInput): Promise<number> { |
|
|
|
const { count } = await this.prismaService.order.deleteMany({ |
|
|
|
where |
|
|
|
}); |
|
|
|
|
|
|
|
return count; |
|
|
|
} |
|
|
|
|
|
|
|
public async getOrders({ |
|
|
|
filters, |
|
|
|
includeDrafts = false, |
|
|
|
|
|
@ -138,6 +138,23 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onDeleteAllActivities() { |
|
|
|
const confirmation = confirm( |
|
|
|
$localize`Do you really want to delete all your activities?` |
|
|
|
); |
|
|
|
|
|
|
|
if (confirmation) { |
|
|
|
this.dataService |
|
|
|
.deleteAllOrders() |
|
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
|
.subscribe({ |
|
|
|
next: () => { |
|
|
|
this.fetchActivities(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public onExport(activityIds?: string[]) { |
|
|
|
this.dataService |
|
|
|
.fetchExport(activityIds) |
|
|
|
|
|
@ -13,6 +13,7 @@ |
|
|
|
(activityDeleted)="onDeleteActivity($event)" |
|
|
|
(activityToClone)="onCloneActivity($event)" |
|
|
|
(activityToUpdate)="onUpdateActivity($event)" |
|
|
|
(deleteAllActivities)="onDeleteAllActivities()" |
|
|
|
(export)="onExport($event)" |
|
|
|
(exportDrafts)="onExportDrafts($event)" |
|
|
|
(import)="onImport()" |
|
|
|
|
|
@ -146,6 +146,10 @@ export class DataService { |
|
|
|
return this.http.delete<any>(`/api/v1/account/${aId}`); |
|
|
|
} |
|
|
|
|
|
|
|
public deleteAllOrders() { |
|
|
|
return this.http.delete<any>(`/api/v1/order/`); |
|
|
|
} |
|
|
|
|
|
|
|
public deleteOrder(aId: string) { |
|
|
|
return this.http.delete<any>(`/api/v1/order/${aId}`); |
|
|
|
} |
|
|
|
|
|
@ -53,6 +53,14 @@ |
|
|
|
<ion-icon class="mr-2" name="calendar-clear-outline"></ion-icon> |
|
|
|
<span i18n>Export Drafts as ICS</span> |
|
|
|
</button> |
|
|
|
<button |
|
|
|
class="align-items-center d-flex" |
|
|
|
mat-menu-item |
|
|
|
(click)="onDeleteAllActivities()" |
|
|
|
> |
|
|
|
<ion-icon class="mr-2" name="trash-outline"></ion-icon> |
|
|
|
<span i18n>Delete all Activities</span> |
|
|
|
</button> |
|
|
|
</mat-menu> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
@ -49,6 +49,7 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy, OnInit { |
|
|
|
@Output() activityDeleted = new EventEmitter<string>(); |
|
|
|
@Output() activityToClone = new EventEmitter<OrderWithAccount>(); |
|
|
|
@Output() activityToUpdate = new EventEmitter<OrderWithAccount>(); |
|
|
|
@Output() deleteAllActivities = new EventEmitter<void>(); |
|
|
|
@Output() export = new EventEmitter<string[]>(); |
|
|
|
@Output() exportDrafts = new EventEmitter<string[]>(); |
|
|
|
@Output() import = new EventEmitter<void>(); |
|
|
@ -231,6 +232,10 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy, OnInit { |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
public onDeleteAllActivities() { |
|
|
|
this.deleteAllActivities.emit(); |
|
|
|
} |
|
|
|
|
|
|
|
public onImport() { |
|
|
|
this.import.emit(); |
|
|
|
} |
|
|
|