fixed loadstates when loading dossiers bugs

This commit is contained in:
Edi Cziszter 2022-02-09 13:17:42 +02:00
parent 0180bf0119
commit 6721c75120
7 changed files with 16 additions and 16 deletions

View File

@ -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 {

View File

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

View File

@ -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;
}
}

View File

@ -74,7 +74,7 @@
<mat-checkbox
(change)="hasDueDate = !hasDueDate"
[checked]="hasDueDate"
[disabled]="!permissionsService.canEditDossier()"
[disabled]="!permissionsService.canEditDossier(dossier)"
class="filter-menu-checkbox"
color="primary"
>

View File

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

View File

@ -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);
}

View File

@ -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)),
);
}