diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts index 290cb5253..ceba0233f 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts @@ -6,10 +6,11 @@ import { TranslateService } from '@ngx-translate/core'; import { UserPreferenceService } from '@services/user-preference.service'; import { UserService } from '@services/user.service'; import { workflowFileStatusTranslations } from '../../translations/file-status-translations'; -import { dossierMemberChecker, dossierTemplateChecker, RedactionFilterSorter } from '@utils/index'; +import { dossierMemberChecker, dossierStateChecker, dossierTemplateChecker, RedactionFilterSorter } from '@utils/index'; import { workloadTranslations } from '../../translations/workload-translations'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { DossierStatsService } from '@services/entity-services/dossier-stats.service'; +import { DossierStateService } from '../../../../services/entity-services/dossier-state.service'; @Injectable() export class ConfigService { @@ -19,6 +20,7 @@ export class ConfigService { private readonly _userService: UserService, private readonly _dossierTemplatesService: DossierTemplatesService, private readonly _dossierStatsService: DossierStatsService, + private readonly _dossierStateService: DossierStateService, ) {} get tableConfig(): TableColumnConfig[] { @@ -61,12 +63,16 @@ export class ConfigService { const allDistinctPeople = new Set(); const allDistinctNeedsWork = new Set(); const allDistinctDossierTemplates = new Set(); + const allDistinctDossierStates = new Set(); const filterGroups: IFilterGroup[] = []; entities?.forEach(entry => { entry.memberIds.forEach(f => allDistinctPeople.add(f)); allDistinctDossierTemplates.add(entry.dossierTemplateId); + if (entry.dossierStatusId) { + allDistinctDossierStates.add(entry.dossierStatusId); + } const stats = this._dossierStatsService.get(entry.dossierId); if (!stats) { @@ -89,6 +95,23 @@ export class ConfigService { } }); + const dossierStatesFilters = [...allDistinctDossierStates].map( + id => + new NestedFilter({ + id: id, + label: this._dossierStateService.find(id).name, + }), + ); + + filterGroups.push({ + slug: 'dossierStatesFilters', + label: this._translateService.instant('filters.dossier-status'), + icon: 'red:status', + hide: dossierStatesFilters.length <= 1, + filters: dossierStatesFilters, + checker: dossierStateChecker, + }); + const statusFilters = [...allDistinctFileStatus].map( status => new NestedFilter({ @@ -99,7 +122,7 @@ export class ConfigService { filterGroups.push({ slug: 'statusFilters', - label: this._translateService.instant('filters.status'), + label: this._translateService.instant('filters.documents-status'), icon: 'red:status', filters: statusFilters.sort((a, b) => StatusSorter[a.id] - StatusSorter[b.id]), checker: (dossier: Dossier, filter: INestedFilter) => this._dossierStatusChecker(dossier, filter), diff --git a/apps/red-ui/src/app/utils/filter-utils.ts b/apps/red-ui/src/app/utils/filter-utils.ts index cb32b5523..95588751c 100644 --- a/apps/red-ui/src/app/utils/filter-utils.ts +++ b/apps/red-ui/src/app/utils/filter-utils.ts @@ -77,6 +77,8 @@ export const dossierMemberChecker = (dw: Dossier, filter: INestedFilter) => dw.h export const dossierTemplateChecker = (dw: Dossier, filter: INestedFilter) => dw.dossierTemplateId === filter.id; +export const dossierStateChecker = (dw: Dossier, filter: INestedFilter) => dw.dossierStatusId === filter.id; + export const dossierApproverChecker = (dw: Dossier, filter: INestedFilter) => dw.approverIds.includes(filter.id); export const userTypeFilters: { [key in UserType]: (user: User) => boolean } = { diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 12a305273..1eca4a309 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -1294,7 +1294,8 @@ "filter-by": "Filter:", "needs-work": "Workload", "people": "Dossier Member(s)", - "status": "Status" + "documents-status": "Documents Status", + "dossier-status": "Dossier Status" }, "general-config-screen": { "actions": {