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 1 year ago committed by GitHub
parent 475231ffd8
commit 67e758365f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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();
}

Loading…
Cancel
Save