fixed loadstates when loading dossiers bugs
This commit is contained in:
parent
0180bf0119
commit
6721c75120
@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
|
||||
import { CanActivate } from '@angular/router';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
import { DossierStatsService } from '@services/entity-services/dossier-stats.service';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class DossiersGuard implements CanActivate {
|
||||
|
||||
@ -22,6 +22,7 @@ import { DICTIONARY_TYPE, DOSSIER_TEMPLATE_ID } from '@utils/constants';
|
||||
import { DossierTemplateExistsGuard } from '../../guards/dossier-template-exists.guard';
|
||||
import { DictionaryExistsGuard } from '../../guards/dictionary-exists.guard';
|
||||
import { DossierStatesListingScreenComponent } from './screens/dossier-states-listing/dossier-states-listing-screen.component';
|
||||
import { DossiersGuard } from '../../guards/dossiers.guard';
|
||||
|
||||
const routes: Routes = [
|
||||
{ path: '', redirectTo: 'dossier-templates', pathMatch: 'full' },
|
||||
@ -120,7 +121,7 @@ const routes: Routes = [
|
||||
component: DossierStatesListingScreenComponent,
|
||||
canActivate: [CompositeRouteGuard],
|
||||
data: {
|
||||
routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard],
|
||||
routeGuards: [AuthGuard, RedRoleGuard, AppStateGuard, DossiersGuard],
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@ -71,13 +71,14 @@ export class DossierStatesListingScreenComponent extends ListingComponent<Dossie
|
||||
const data = {
|
||||
toBeDeletedState: dossierState,
|
||||
otherStates: this.entitiesService.all.filter(state => state.dossierStatusId !== dossierState.dossierStatusId),
|
||||
dossierCount: this._getDossiersWithStateAndTemplateCount(dossierState.dossierStatusId, templateId),
|
||||
dossierCount: dossierState.dossierCount,
|
||||
};
|
||||
this._dialogService.openDialog('deleteDossierState', $event, data, async (value: string) => {
|
||||
if (value) {
|
||||
await firstValueFrom(this._dossierStateService.deleteAndReplace(dossierState.dossierStatusId, value));
|
||||
}
|
||||
|
||||
await firstValueFrom(this._dossierStateService.loadAllForAllTemplates());
|
||||
await this._appStateService.refreshDossierTemplate(templateId);
|
||||
await this._loadData();
|
||||
});
|
||||
@ -91,6 +92,7 @@ export class DossierStatesListingScreenComponent extends ListingComponent<Dossie
|
||||
this._toaster.error(_('dossier-states-listing.error.generic'));
|
||||
}
|
||||
});
|
||||
await firstValueFrom(this._dossierStateService.loadAllForAllTemplates());
|
||||
await this._appStateService.refreshDossierTemplate(this._dossierTemplatesService.activeDossierTemplateId);
|
||||
await this._loadData();
|
||||
}
|
||||
@ -101,16 +103,12 @@ export class DossierStatesListingScreenComponent extends ListingComponent<Dossie
|
||||
try {
|
||||
const templateId = this._dossierTemplatesService.activeDossierTemplateId;
|
||||
const dossierStates = this._dossierStateService.all.filter(d => d.dossierTemplateId === templateId);
|
||||
dossierStates.forEach(state => {
|
||||
state.dossierCount = this._getDossiersWithStateAndTemplateCount(state.dossierStatusId, templateId);
|
||||
});
|
||||
const dossiers = this._dossiersService.all;
|
||||
this._dossierStateService.all.forEach(
|
||||
state => (state.dossierCount = dossiers.filter(dossier => dossier.dossierStatusId === state.dossierStatusId).length),
|
||||
);
|
||||
this.entitiesService.setEntities(dossierStates || []);
|
||||
} catch (e) {}
|
||||
this._loadingService.stop();
|
||||
}
|
||||
|
||||
private _getDossiersWithStateAndTemplateCount(dossierStatusId: string, templateId: string) {
|
||||
const dossiers = this._dossiersService.all;
|
||||
return dossiers.filter(dossier => dossier.dossierStatusId === dossierStatusId && dossier.dossierTemplateId === templateId).length;
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
<mat-checkbox
|
||||
(change)="hasDueDate = !hasDueDate"
|
||||
[checked]="hasDueDate"
|
||||
[disabled]="!permissionsService.canEditDossier()"
|
||||
[disabled]="!permissionsService.canEditDossier(dossier)"
|
||||
class="filter-menu-checkbox"
|
||||
color="primary"
|
||||
>
|
||||
|
||||
@ -89,6 +89,7 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
|
||||
this.form.reset({
|
||||
dossierName: this.dossier.dossierName,
|
||||
dossierTemplateId: this.dossier.dossierTemplateId,
|
||||
dossierStatusId: this.dossier.dossierStatusId,
|
||||
description: this.dossier.description,
|
||||
watermarkEnabled: this.dossier.watermarkEnabled,
|
||||
watermarkPreviewEnabled: this.dossier.watermarkPreviewEnabled,
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
|
||||
import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
|
||||
import { Dossier, DossierStats } from '../../../../../../../../../../libs/red-domain/src';
|
||||
import { DossierStateService } from '../../../../../../services/entity-services/dossier-state.service';
|
||||
import { DossierState } from '../../../../../../../../../../libs/red-domain/src/lib/dossier-state';
|
||||
@ -9,14 +9,14 @@ import { DossierState } from '../../../../../../../../../../libs/red-domain/src/
|
||||
styleUrls: ['./dossiers-listing-status.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class DossiersListingStatusComponent implements OnInit {
|
||||
export class DossiersListingStatusComponent implements OnChanges {
|
||||
@Input() stats: DossierStats;
|
||||
@Input() dossier: Dossier;
|
||||
currentState: DossierState;
|
||||
|
||||
constructor(private readonly _dossierStateService: DossierStateService) {}
|
||||
|
||||
ngOnInit(): void {
|
||||
ngOnChanges(): void {
|
||||
if (this.dossier.dossierStatusId) {
|
||||
this.currentState = this._dossierStateService.all.find(s => s.dossierStatusId === this.dossier.dossierStatusId);
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ import { EntitiesService, mapEach, RequiredParam, Validate } from '../../../../.
|
||||
import { DossierState, IDossierState } from '../../../../../../libs/red-domain/src/lib/dossier-state';
|
||||
import { forkJoin, Observable, switchMap } from 'rxjs';
|
||||
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { map, tap } from 'rxjs/operators';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
@ -29,6 +29,7 @@ export class DossierStateService extends EntitiesService<DossierState, IDossierS
|
||||
mapEach(id => this.loadAllForTemplate(id)),
|
||||
switchMap(all => forkJoin(all)),
|
||||
map(value => value.flatMap(item => item)),
|
||||
tap(value => this.setEntities(value)),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user