diff --git a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts index 1ba3e00fc..943cb8852 100644 --- a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts +++ b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts @@ -22,6 +22,8 @@ import { ConfigureCertificateDialogComponent } from '../dialogs/configure-digita import { EditColorDialogComponent } from '../dialogs/edit-color-dialog/edit-color-dialog.component'; import { SmtpAuthDialogComponent } from '../dialogs/smtp-auth-dialog/smtp-auth-dialog.component'; import { UploadDictionaryDialogComponent } from '../dialogs/upload-dictionary-dialog/upload-dictionary-dialog.component'; +import { UserStatsService } from './user-stats.service'; +import { result } from 'lodash-es'; type DialogType = | 'confirm' @@ -73,12 +75,16 @@ export class AdminDialogService extends DialogService { private readonly _activeDossiersService: ActiveDossiersService, private readonly _loadingService: LoadingService, private readonly _userService: UserService, + private readonly _userStatsService: UserStatsService, private readonly _reportTemplateService: ReportTemplateService, ) { super(_dialog); } - deleteUsers(userIds: string[], cb?: () => Promise | void): void { + async deleteUsers(userIds: string[], cb?: () => Promise | void): Promise { + // const result = await firstValueFrom(this._userStatsService.getFor(userIds)); + // console.log('result: ', result); + const data: IConfirmationDialogData = { title: _('confirm-delete-users.title'), question: _('confirm-delete-users.warning'), diff --git a/apps/red-ui/src/app/modules/admin/services/user-stats.service.ts b/apps/red-ui/src/app/modules/admin/services/user-stats.service.ts new file mode 100644 index 000000000..437648cac --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/services/user-stats.service.ts @@ -0,0 +1,10 @@ +import { StatsService } from '@iqser/common-ui'; +import { IUserStats, USER_ID, UserStats } from '@red/domain'; +import { Injectable } from '@angular/core'; + +@Injectable({ providedIn: 'root' }) +export class UserStatsService extends StatsService { + protected readonly _primaryKey = USER_ID; + protected readonly _entityClass = UserStats; + protected readonly _defaultModelPath = 'user-stats'; +} diff --git a/apps/red-ui/src/app/services/dossiers/dossier-stats.service.ts b/apps/red-ui/src/app/services/dossiers/dossier-stats.service.ts index 1a2856eea..139f9e126 100644 --- a/apps/red-ui/src/app/services/dossiers/dossier-stats.service.ts +++ b/apps/red-ui/src/app/services/dossiers/dossier-stats.service.ts @@ -1,6 +1,6 @@ import { inject, Injectable } from '@angular/core'; import { StatsService } from '@iqser/common-ui'; -import { DashboardStats, DOSSIER_ID, DossierStats, IDossierStats } from '@red/domain'; +import { DOSSIER_ID, DossierStats, IDossierStats } from '@red/domain'; import { Observable, of } from 'rxjs'; import { UserService } from '@users/user.service'; import { NGXLogger } from 'ngx-logger'; diff --git a/libs/red-domain/src/lib/users/constants.ts b/libs/red-domain/src/lib/users/constants.ts new file mode 100644 index 000000000..f733950f5 --- /dev/null +++ b/libs/red-domain/src/lib/users/constants.ts @@ -0,0 +1 @@ +export const USER_ID = 'userId'; diff --git a/libs/red-domain/src/lib/users/index.ts b/libs/red-domain/src/lib/users/index.ts index b66d5cb35..50135cdbc 100644 --- a/libs/red-domain/src/lib/users/index.ts +++ b/libs/red-domain/src/lib/users/index.ts @@ -1,3 +1,6 @@ export * from './user.model'; export * from './profile'; export * from './types'; +export * from './user-stats'; +export * from './user-stats.model'; +export * from './constants'; diff --git a/libs/red-domain/src/lib/users/user-stats.model.ts b/libs/red-domain/src/lib/users/user-stats.model.ts new file mode 100644 index 000000000..da1b608ca --- /dev/null +++ b/libs/red-domain/src/lib/users/user-stats.model.ts @@ -0,0 +1,13 @@ +import { IUserStats } from './user-stats'; + +export class UserStats implements IUserStats { + readonly numberOfDossierMemberships: number; + readonly numberOfDossierOwnerships: number; + readonly numberOfAssignedFiles: number; + + constructor(userStats: IUserStats) { + this.numberOfAssignedFiles = userStats.numberOfAssignedFiles; + this.numberOfDossierOwnerships = userStats.numberOfAssignedFiles; + this.numberOfAssignedFiles = userStats.numberOfAssignedFiles; + } +} diff --git a/libs/red-domain/src/lib/users/user-stats.ts b/libs/red-domain/src/lib/users/user-stats.ts new file mode 100644 index 000000000..2613777f2 --- /dev/null +++ b/libs/red-domain/src/lib/users/user-stats.ts @@ -0,0 +1,5 @@ +export interface IUserStats { + numberOfDossierMemberships: number; + numberOfDossierOwnerships: number; + numberOfAssignedFiles: number; +}