RED-10768: Dossier loading improvement
This commit is contained in:
parent
f182be3db0
commit
76a4dc4cfb
@ -7,7 +7,12 @@ import { DashboardGuard } from '@guards/dashboard-guard.service';
|
|||||||
import { DossierFilesGuard } from '@guards/dossier-files-guard';
|
import { DossierFilesGuard } from '@guards/dossier-files-guard';
|
||||||
import { templateExistsWhenEnteringDossierList } from '@guards/dossier-template-exists.guard';
|
import { templateExistsWhenEnteringDossierList } from '@guards/dossier-template-exists.guard';
|
||||||
import { DossierTemplatesGuard } from '@guards/dossier-templates.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 { isNotEditingFileAttributeGuard } from '@guards/file-attribute.guard';
|
||||||
import { FeaturesGuard } from '@guards/features-guard.service';
|
import { FeaturesGuard } from '@guards/features-guard.service';
|
||||||
import { ifLoggedIn } from '@guards/if-logged-in.guard';
|
import { ifLoggedIn } from '@guards/if-logged-in.guard';
|
||||||
@ -27,7 +32,7 @@ import { AuthErrorComponent } from '@components/auth-error/auth-error.component'
|
|||||||
const dossierTemplateIdRoutes: IqserRoutes = [
|
const dossierTemplateIdRoutes: IqserRoutes = [
|
||||||
{
|
{
|
||||||
path: `${DOSSIERS_ROUTE}`,
|
path: `${DOSSIERS_ROUTE}`,
|
||||||
canActivate: [loadActiveDossiersGuard(), IqserPermissionsGuard],
|
canActivate: [loadActiveDossiersForTemplateGuard(), IqserPermissionsGuard],
|
||||||
data: {
|
data: {
|
||||||
permissions: {
|
permissions: {
|
||||||
allow: [Roles.files.readStatus],
|
allow: [Roles.files.readStatus],
|
||||||
|
|||||||
@ -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 {
|
export function loadArchivedDossiersGuard(): CanActivateFn {
|
||||||
return async (route: ActivatedRouteSnapshot) => {
|
return async (route: ActivatedRouteSnapshot) => {
|
||||||
const logger = inject(NGXLogger);
|
const logger = inject(NGXLogger);
|
||||||
|
|||||||
@ -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[]> {
|
updateDossier(dossier: Dossier): Observable<DossierStats[]> {
|
||||||
this.replace(dossier);
|
this.replace(dossier);
|
||||||
return this._dossierStatsService.getFor([dossier.id]);
|
return this._dossierStatsService.getFor([dossier.id]);
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit 7f13fa62d3d2b346c609bc4978cff75f37f1ee6b
|
Subproject commit a95012ad3bbc9cf6bc14323e183b510eb45e304e
|
||||||
Loading…
x
Reference in New Issue
Block a user