Compare commits

...

1 Commits

Author SHA1 Message Date
Rosario Allegro
76a4dc4cfb RED-10768: Dossier loading improvement 2025-01-31 13:55:07 +01:00
4 changed files with 33 additions and 3 deletions

View File

@ -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],

View File

@ -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<ActiveDossiersService>(ACTIVE_DOSSIERS_SERVICE).loadDossiersByTemplate(dossierTemplateId));
logger.info('[GUARDS] loadActiveDossiersForTemplateGuard end');
return true;
};
}
export function loadArchivedDossiersGuard(): CanActivateFn {
return async (route: ActivatedRouteSnapshot) => {
const logger = inject(NGXLogger);

View File

@ -47,6 +47,17 @@ export abstract class DossiersService extends EntitiesService<IDossier, Dossier>
);
}
loadDossiersByTemplate(templateId: string): Observable<Dossier[]> {
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<DossierStats[]> {
this.replace(dossier);
return this._dossierStatsService.getFor([dossier.id]);

@ -1 +1 @@
Subproject commit 7f13fa62d3d2b346c609bc4978cff75f37f1ee6b
Subproject commit a95012ad3bbc9cf6bc14323e183b510eb45e304e