diff --git a/apps/red-ui/src/app/guards/dossiers.guard.ts b/apps/red-ui/src/app/guards/dossiers.guard.ts index 7f056bf71..59d87d968 100644 --- a/apps/red-ui/src/app/guards/dossiers.guard.ts +++ b/apps/red-ui/src/app/guards/dossiers.guard.ts @@ -2,6 +2,7 @@ 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 { diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.html index ff36577ae..0d2dc5004 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.html @@ -13,8 +13,8 @@
{{ state.name }} @@ -26,10 +26,7 @@
- -
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts index d80ece9ad..547990732 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts @@ -24,13 +24,6 @@ export class ConfirmDeleteDossierStateDialogComponent { @Inject(MAT_DIALOG_DATA) public data: DialogData, ) { this.form = this._getForm(); - console.log(data); - } - - private _getForm(): FormGroup { - return this._formBuilder.group({ - replaceDossierStatusId: [null], - }); } get translateArgs() { @@ -43,4 +36,10 @@ export class ConfirmDeleteDossierStateDialogComponent { get replaceDossierStatusId(): string { return this.form.get('replaceDossierStatusId').value; } + + private _getForm(): FormGroup { + return this._formBuilder.group({ + replaceDossierStatusId: [null], + }); + } } diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.ts index d3230e1e0..6c0f26378 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.ts @@ -73,13 +73,9 @@ export class DossierStatesListingScreenComponent extends ListingComponent state.dossierStatusId !== dossierState.dossierStatusId), dossierCount: this._getDossiersWithStateAndTemplateCount(dossierState.dossierStatusId, templateId), }; - this._dialogService.openDialog('deleteDossierState', $event, data, async (value: string | true) => { + this._dialogService.openDialog('deleteDossierState', $event, data, async (value: string) => { if (value) { - if (value === true) { - console.log('asteptam'); - } else { - await firstValueFrom(this._dossierStateService.deleteAndReplace(dossierState.dossierStatusId, value)); - } + await firstValueFrom(this._dossierStateService.deleteAndReplace(dossierState.dossierStatusId, value)); } await this._appStateService.refreshDossierTemplate(templateId); @@ -104,7 +100,7 @@ export class DossierStatesListingScreenComponent extends ListingComponent d.dossierTemplateId === templateId); dossierStates.forEach(state => { state.dossierCount = this._getDossiersWithStateAndTemplateCount(state.dossierStatusId, templateId); }); diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html index a470c6ca0..f04c6730a 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html @@ -53,6 +53,23 @@
+
+ + + +
+ +
{{ state.name }}
+
+
+
+
+
- -
- - - - {{ state.name }} - - -
diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.scss b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.scss index ad0894822..cadbd6f7a 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.scss +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.scss @@ -26,4 +26,12 @@ .fields-container { flex-direction: column; + + &:first-child { + margin-right: 40px; + } +} + +redaction-small-chip { + margin-right: 8px; } diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index 54ef6987e..bf200a3bf 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -32,10 +32,11 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti hasDueDate: boolean; dossierTemplates: IDossierTemplate[]; states: DossierState[]; + currentStatus: DossierState; constructor( readonly permissionsService: PermissionsService, - readonly stateService: DossierStateService, + private readonly _dossierStateService: DossierStateService, private readonly _dossierTemplatesService: DossierTemplatesService, private readonly _dossiersService: DossiersService, private readonly _dossierStatsService: DossierStatsService, @@ -77,7 +78,10 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti if (!this.permissionsService.canEditDossier(this.dossier)) { this.form.disable(); } - this.states = await firstValueFrom(this.stateService.loadAllForTemplate(this.dossier.dossierTemplateId)); + this.states = this._dossierStateService.all.filter(s => s.dossierTemplateId === this.dossier.dossierTemplateId); + if (this.dossier.dossierStatusId) { + this.currentStatus = this._dossierStateService.all.find(s => s.dossierStatusId === this.dossier.dossierStatusId); + } this.hasDueDate = !!this.dossier.dueDate; } diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.html b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.html index c984f6d6e..3624dd196 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.html +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.html @@ -1,13 +1,13 @@ - +
-
{{ dossierState.name }}
-
+
{{ currentState.name }}
+
- +
No status assigned
- + diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.scss b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.scss index 0c4471d56..7d5a74298 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.scss +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.scss @@ -5,10 +5,7 @@ width: 100%; } -.dossier-status-chip { - width: 12px; - height: 6px; - border-radius: 6px; +redaction-small-chip { margin-left: 8px; } diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.ts index 925854463..385a727bb 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.ts @@ -1,8 +1,7 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; -import { DossierState } from '../../../../../../../../../../libs/red-domain/src/lib/dossier-state'; import { Dossier, DossierStats } from '../../../../../../../../../../libs/red-domain/src'; -import { Observable } from 'rxjs'; import { DossierStateService } from '../../../../../../services/entity-services/dossier-state.service'; +import { DossierState } from '../../../../../../../../../../libs/red-domain/src/lib/dossier-state'; @Component({ selector: 'redaction-dossiers-listing-status', @@ -11,15 +10,15 @@ import { DossierStateService } from '../../../../../../services/entity-services/ changeDetection: ChangeDetectionStrategy.OnPush, }) export class DossiersListingStatusComponent implements OnInit { - dossierState$: Observable; @Input() stats: DossierStats; @Input() dossier: Dossier; + currentState: DossierState; constructor(private readonly _dossierStateService: DossierStateService) {} ngOnInit(): void { if (this.dossier.dossierStatusId) { - this.dossierState$ = this._dossierStateService.getById(this.dossier.dossierStatusId); + this.currentState = this._dossierStateService.all.find(s => s.dossierStatusId === this.dossier.dossierStatusId); } } } diff --git a/apps/red-ui/src/app/services/entity-services/dossier-state.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-state.service.ts index b5d3f8608..5a8218cfa 100644 --- a/apps/red-ui/src/app/services/entity-services/dossier-state.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dossier-state.service.ts @@ -1,13 +1,15 @@ import { Injectable, Injector } from '@angular/core'; -import { EntitiesService, RequiredParam, Validate } from '../../../../../../libs/common-ui/src'; +import { EntitiesService, mapEach, RequiredParam, Validate } from '../../../../../../libs/common-ui/src'; import { DossierState, IDossierState } from '../../../../../../libs/red-domain/src/lib/dossier-state'; -import { Observable } from 'rxjs'; +import { forkJoin, Observable, switchMap } from 'rxjs'; +import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; +import { map } from 'rxjs/operators'; @Injectable({ providedIn: 'root', }) export class DossierStateService extends EntitiesService { - constructor(protected readonly _injector: Injector) { + constructor(protected readonly _injector: Injector, private readonly _dossierTemplatesService: DossierTemplatesService) { super(_injector, DossierState, 'dossier-status'); } @@ -21,6 +23,15 @@ export class DossierStateService extends EntitiesService { + return this._dossierTemplatesService.all$.pipe( + mapEach(template => template.dossierTemplateId), + mapEach(id => this.loadAllForTemplate(id)), + switchMap(all => forkJoin(all)), + map(value => value.flatMap(item => item)), + ); + } + @Validate() deleteAndReplace(@RequiredParam() dossierStatusId: string, @RequiredParam() replaceDossierStatusId: string) { const url = `${this._defaultModelPath}/${dossierStatusId}?replaceDossierStatusId=${replaceDossierStatusId}`; diff --git a/apps/red-ui/src/app/services/entity-services/dossiers.service.ts b/apps/red-ui/src/app/services/entity-services/dossiers.service.ts index 0babadb88..7760c7a7d 100644 --- a/apps/red-ui/src/app/services/entity-services/dossiers.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dossiers.service.ts @@ -7,6 +7,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http'; import { DossierStatsService } from '@services/entity-services/dossier-stats.service'; import { CHANGED_CHECK_INTERVAL } from '@utils/constants'; +import { DossierStateService } from '@services/entity-services/dossier-state.service'; export interface IDossiersStats { totalPeople: number; @@ -37,6 +38,7 @@ export class DossiersService extends EntitiesService { private readonly _toaster: Toaster, protected readonly _injector: Injector, private readonly _dossierStatsService: DossierStatsService, + private readonly _dossierStateService: DossierStateService, ) { super(_injector, Dossier, 'dossier'); @@ -54,6 +56,7 @@ export class DossiersService extends EntitiesService { mapEach(entity => new Dossier(entity)), /* Load stats before updating entities */ switchMap(dossiers => this._dossierStatsService.getFor(dossierIds(dossiers)).pipe(mapTo(dossiers))), + switchMap(dossiers => this._dossierStateService.loadAllForAllTemplates().pipe(mapTo(dossiers))), tap(dossiers => this.setEntities(dossiers)), ); } diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 4898fb78f..d7c7a9173 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -429,7 +429,6 @@ "status": "Replace Status", "status-placeholder": "Choose another status" }, - "delete-only": "Delete Only", "delete-replace": "Delete and Replace", "cancel": "Cancel" }, @@ -1008,7 +1007,10 @@ "placeholder": "Enter Description" }, "due-date": "Due Date", - "dossier-status": "Dossier Status", + "dossier-status": { + "label": "Dossier Status", + "placeholder": "No status assigned" + }, "name": { "label": "Dossier Name", "placeholder": "Enter Name"