From 76a4dc4cfb3d8b91dceacb6a7d58855da73a5ebc Mon Sep 17 00:00:00 2001 From: Rosario Allegro Date: Fri, 31 Jan 2025 13:55:07 +0100 Subject: [PATCH] RED-10768: Dossier loading improvement --- apps/red-ui/src/app/app-routing.module.ts | 9 +++++++-- apps/red-ui/src/app/guards/dossiers.guard.ts | 14 ++++++++++++++ .../src/app/services/dossiers/dossiers.service.ts | 11 +++++++++++ libs/common-ui | 2 +- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/apps/red-ui/src/app/app-routing.module.ts b/apps/red-ui/src/app/app-routing.module.ts index 713f365da..c90c15fc7 100644 --- a/apps/red-ui/src/app/app-routing.module.ts +++ b/apps/red-ui/src/app/app-routing.module.ts @@ -7,7 +7,12 @@ import { DashboardGuard } from '@guards/dashboard-guard.service'; import { DossierFilesGuard } from '@guards/dossier-files-guard'; import { templateExistsWhenEnteringDossierList } from '@guards/dossier-template-exists.guard'; import { DossierTemplatesGuard } from '@guards/dossier-templates.guard'; -import { loadActiveDossiersGuard, loadAllDossiersGuard, loadArchivedDossiersGuard } from '@guards/dossiers.guard'; +import { + loadActiveDossiersGuard, + loadActiveDossiersForTemplateGuard, + loadAllDossiersGuard, + loadArchivedDossiersGuard, +} from '@guards/dossiers.guard'; import { isNotEditingFileAttributeGuard } from '@guards/file-attribute.guard'; import { FeaturesGuard } from '@guards/features-guard.service'; import { ifLoggedIn } from '@guards/if-logged-in.guard'; @@ -27,7 +32,7 @@ import { AuthErrorComponent } from '@components/auth-error/auth-error.component' const dossierTemplateIdRoutes: IqserRoutes = [ { path: `${DOSSIERS_ROUTE}`, - canActivate: [loadActiveDossiersGuard(), IqserPermissionsGuard], + canActivate: [loadActiveDossiersForTemplateGuard(), IqserPermissionsGuard], data: { permissions: { allow: [Roles.files.readStatus], diff --git a/apps/red-ui/src/app/guards/dossiers.guard.ts b/apps/red-ui/src/app/guards/dossiers.guard.ts index 01be634ee..de22a547f 100644 --- a/apps/red-ui/src/app/guards/dossiers.guard.ts +++ b/apps/red-ui/src/app/guards/dossiers.guard.ts @@ -35,6 +35,20 @@ export function loadActiveDossiersGuard(): CanActivateFn { }; } +export function loadActiveDossiersForTemplateGuard(): CanActivateFn { + return async (route: ActivatedRouteSnapshot) => { + const dossierTemplateId: string = route.paramMap.get(DOSSIER_TEMPLATE_ID); + console.log(dossierTemplateId); + const logger = inject(NGXLogger); + logger.info('[GUARDS] loadActiveDossiersForTemplateGuard start'); + console.log(dossierTemplateId); + await firstValueFrom(inject(ACTIVE_DOSSIERS_SERVICE).loadDossiersByTemplate(dossierTemplateId)); + + logger.info('[GUARDS] loadActiveDossiersForTemplateGuard end'); + return true; + }; +} + export function loadArchivedDossiersGuard(): CanActivateFn { return async (route: ActivatedRouteSnapshot) => { const logger = inject(NGXLogger); diff --git a/apps/red-ui/src/app/services/dossiers/dossiers.service.ts b/apps/red-ui/src/app/services/dossiers/dossiers.service.ts index bca71afb3..c277ec828 100644 --- a/apps/red-ui/src/app/services/dossiers/dossiers.service.ts +++ b/apps/red-ui/src/app/services/dossiers/dossiers.service.ts @@ -47,6 +47,17 @@ export abstract class DossiersService extends EntitiesService ); } + loadDossiersByTemplate(templateId: string): Observable { + const dossierIds = (dossiers: Dossier[]) => dossiers.map(d => d.id); + return this.getForTemplateId(templateId).pipe( + mapEach(entity => new Dossier(entity)), + /* Load stats before updating entities */ + switchMap(dossiers => this._dossierStatsService.getFor(dossierIds(dossiers)).pipe(map(() => dossiers))), + switchMap(dossiers => this._dashboardStatsService.loadAll().pipe(map(() => dossiers))), + tap(dossiers => this.setEntities(dossiers)), + ); + } + updateDossier(dossier: Dossier): Observable { this.replace(dossier); return this._dossierStatsService.getFor([dossier.id]); diff --git a/libs/common-ui b/libs/common-ui index 7f13fa62d..a95012ad3 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 7f13fa62d3d2b346c609bc4978cff75f37f1ee6b +Subproject commit a95012ad3bbc9cf6bc14323e183b510eb45e304e