diff --git a/frontend/src/app/core/query/description-status.lookup.ts b/frontend/src/app/core/query/description-status.lookup.ts index f042e6b96..2745cdb08 100644 --- a/frontend/src/app/core/query/description-status.lookup.ts +++ b/frontend/src/app/core/query/description-status.lookup.ts @@ -20,4 +20,5 @@ export interface DescriptionStatusFilter { excludedIds: Guid[]; like: string; isActive: IsActive[]; + internalStatuses?: DescriptionStatusEnum[]; } \ No newline at end of file diff --git a/frontend/src/app/core/query/plan-status.lookup.ts b/frontend/src/app/core/query/plan-status.lookup.ts index e79fffed2..7b5955eda 100644 --- a/frontend/src/app/core/query/plan-status.lookup.ts +++ b/frontend/src/app/core/query/plan-status.lookup.ts @@ -20,4 +20,5 @@ export interface PlanStatusFilter { excludedIds: Guid[]; like: string; isActive: IsActive[]; + internalStatuses?: PlanStatusEnum[]; } \ No newline at end of file diff --git a/frontend/src/app/core/services/description-status/description-status.service.ts b/frontend/src/app/core/services/description-status/description-status.service.ts index 1c35589b8..97617d65b 100644 --- a/frontend/src/app/core/services/description-status/description-status.service.ts +++ b/frontend/src/app/core/services/description-status/description-status.service.ts @@ -8,6 +8,10 @@ import { Guid } from "@common/types/guid"; import { DescriptionStatusLookup } from "@app/core/query/description-status.lookup"; import { DescriptionStatus } from "@app/core/model/description-status/description-status"; import { DescriptionStatusPersist } from "@app/core/model/description/description"; +import { IsActive } from "@app/core/common/enum/is-active.enum"; +import { nameof } from "ts-simple-nameof"; +import { FilterService } from "@common/modules/text-filter/filter-service"; +import { DescriptionStatusEnum } from "@app/core/common/enum/description-status"; @Injectable() export class DescriptionStatusService { @@ -16,6 +20,7 @@ export class DescriptionStatusService { constructor( private http: BaseHttpV2Service, private configurationService: ConfigurationService, + private filterService: FilterService, ) { } @@ -50,4 +55,32 @@ export class DescriptionStatusService { .delete(url).pipe( catchError((error: any) => throwError(() => error))); } + + buildLookup(params: { + like?: string, + excludedIds?: Guid[], + ids?: Guid[], + lookupFields?: string[], + size?: number, + order?: string[], + internalStatuses?: DescriptionStatusEnum[] + }): DescriptionStatusLookup { + const {like, excludedIds, ids, lookupFields, size = 100, order, internalStatuses} = params; + const lookup = new DescriptionStatusLookup(); + lookup.isActive = [IsActive.Active]; + + lookup.order = { items: order ?? [nameof(x => x.name)] }; + lookup.page = { size, offset: 0 }; + + if(internalStatuses?.length){ lookup.internalStatuses = internalStatuses }; + if (excludedIds && excludedIds.length > 0) { lookup.excludedIds = excludedIds; } + if (ids && ids.length > 0) { lookup.ids = ids; } + if (like) { lookup.like = this.filterService.transformLike(like); } + if(lookupFields){ + lookup.project = { + fields: lookupFields + } + }; + return lookup; + } } \ No newline at end of file diff --git a/frontend/src/app/core/services/plan/plan-status.service.ts b/frontend/src/app/core/services/plan/plan-status.service.ts index 0a85d6561..0d72b5644 100644 --- a/frontend/src/app/core/services/plan/plan-status.service.ts +++ b/frontend/src/app/core/services/plan/plan-status.service.ts @@ -12,6 +12,7 @@ import { PlanLookup } from "@app/core/query/plan.lookup"; import { FilterService } from "@common/modules/text-filter/filter-service"; import { IsActive } from "@notification-service/core/enum/is-active.enum"; import { nameof } from "ts-simple-nameof"; +import { PlanStatusEnum } from "@app/core/common/enum/plan-status"; @Injectable() export class PlanStatusService { @@ -62,15 +63,17 @@ export class PlanStatusService { ids?: Guid[], lookupFields?: string[], size?: number, - order?: string[] + order?: string[], + internalStatuses?: PlanStatusEnum[] }): PlanStatusLookup { - const {like, excludedIds, ids, lookupFields, size = 100, order} = params; - const lookup = new PlanLookup(); + const {like, excludedIds, ids, lookupFields, size = 100, order, internalStatuses} = params; + const lookup = new PlanStatusLookup(); lookup.isActive = [IsActive.Active]; lookup.order = { items: order ?? [nameof(x => x.name)] }; lookup.page = { size, offset: 0 }; + if(internalStatuses?.length){ lookup.internalStatuses = internalStatuses }; if (excludedIds && excludedIds.length > 0) { lookup.excludedIds = excludedIds; } if (ids && ids.length > 0) { lookup.ids = ids; } if (like) { lookup.like = this.filterService.transformLike(like); } diff --git a/frontend/src/app/ui/admin/description-status/listing/description-status-listing-filters/description-status-listing-filters.component.html b/frontend/src/app/ui/admin/description-status/listing/description-status-listing-filters/description-status-listing-filters.component.html index 112f73933..0336f9338 100644 --- a/frontend/src/app/ui/admin/description-status/listing/description-status-listing-filters/description-status-listing-filters.component.html +++ b/frontend/src/app/ui/admin/description-status/listing/description-status-listing-filters/description-status-listing-filters.component.html @@ -27,6 +27,17 @@ + +
+
+ + {{'DESCRIPTION-STATUS-EDITOR.FIELDS.INTERNAL-STATUS' | translate}} + + {{enumUtils.toDescriptionStatusString(internalStatus)}} + + +
+
diff --git a/frontend/src/app/ui/admin/description-status/listing/description-status-listing-filters/description-status-listing-filters.component.ts b/frontend/src/app/ui/admin/description-status/listing/description-status-listing-filters/description-status-listing-filters.component.ts index 1ea84d4ca..e56cf5623 100644 --- a/frontend/src/app/ui/admin/description-status/listing/description-status-listing-filters/description-status-listing-filters.component.ts +++ b/frontend/src/app/ui/admin/description-status/listing/description-status-listing-filters/description-status-listing-filters.component.ts @@ -1,5 +1,7 @@ import { Component, effect, EventEmitter, input, Output } from '@angular/core'; +import { DescriptionStatusEnum } from '@app/core/common/enum/description-status'; import { DescriptionStatusFilter } from '@app/core/query/description-status.lookup'; +import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { BaseComponent } from '@common/base/base.component'; import { IsActive } from '@notification-service/core/enum/is-active.enum'; @@ -15,7 +17,9 @@ export class DescriptionStatusListingFiltersComponent extends BaseComponent{ internalFilters: DescriptionStatusListingFilters = this._getEmptyFilters(); appliedFilterCount: number = 0; - constructor(){ + internalStatusEnum = this.enumUtils.getEnumValues(DescriptionStatusEnum); + + constructor(protected enumUtils: EnumUtils){ super(); effect(() => { const newFilters = this.filter(); @@ -31,11 +35,12 @@ export class DescriptionStatusListingFiltersComponent extends BaseComponent{ return this._getEmptyFilters(); } - let { isActive, like } = inputFilter; + let { isActive, like, internalStatuses } = inputFilter; return { isActive: (isActive ?? [])?.includes(IsActive.Active) || !isActive?.length, - like: like, + like, + internalStatuses: internalStatuses?.length ? internalStatuses : null } } @@ -55,6 +60,7 @@ export class DescriptionStatusListingFiltersComponent extends BaseComponent{ return { isActive: true, like: null, + internalStatuses: null } } @@ -64,11 +70,12 @@ export class DescriptionStatusListingFiltersComponent extends BaseComponent{ } protected applyFilters(): void { - const { isActive, like } = this.internalFilters ?? {} + const { isActive, like, internalStatuses } = this.internalFilters ?? {} this.filterChange.emit({ ...this.filter(), like, - isActive: isActive ? [IsActive.Active] : [IsActive.Inactive] + isActive: isActive ? [IsActive.Active] : [IsActive.Inactive], + internalStatuses: internalStatuses?.length ? internalStatuses : null }) } @@ -85,4 +92,5 @@ export class DescriptionStatusListingFiltersComponent extends BaseComponent{ interface DescriptionStatusListingFilters { isActive: boolean; like: string; + internalStatuses: DescriptionStatusEnum[]; } diff --git a/frontend/src/app/ui/admin/plan-status/listing/plan-status-listing/plan-status-listing-filters/plan-status-listing-filters.component.html b/frontend/src/app/ui/admin/plan-status/listing/plan-status-listing/plan-status-listing-filters/plan-status-listing-filters.component.html index 112f73933..0b8fa785a 100644 --- a/frontend/src/app/ui/admin/plan-status/listing/plan-status-listing/plan-status-listing-filters/plan-status-listing-filters.component.html +++ b/frontend/src/app/ui/admin/plan-status/listing/plan-status-listing/plan-status-listing-filters/plan-status-listing-filters.component.html @@ -28,6 +28,16 @@
+
+
+ + {{'PLAN-STATUS-EDITOR.FIELDS.INTERNAL-STATUS' | translate}} + + {{enumUtils.toPlanStatusString(internalStatus)}} + + +
+
diff --git a/frontend/src/app/ui/admin/plan-status/listing/plan-status-listing/plan-status-listing-filters/plan-status-listing-filters.component.ts b/frontend/src/app/ui/admin/plan-status/listing/plan-status-listing/plan-status-listing-filters/plan-status-listing-filters.component.ts index 897a09dee..d39c66e4e 100644 --- a/frontend/src/app/ui/admin/plan-status/listing/plan-status-listing/plan-status-listing-filters/plan-status-listing-filters.component.ts +++ b/frontend/src/app/ui/admin/plan-status/listing/plan-status-listing/plan-status-listing-filters/plan-status-listing-filters.component.ts @@ -1,6 +1,8 @@ import { Component, effect, EventEmitter, input, Input, Output } from '@angular/core'; import { IsActive } from '@app/core/common/enum/is-active.enum'; +import { PlanStatusEnum } from '@app/core/common/enum/plan-status'; import { PlanStatusFilter } from '@app/core/query/plan-status.lookup'; +import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { BaseComponent } from '@common/base/base.component'; @Component({ @@ -14,8 +16,9 @@ export class PlanStatusListingFiltersComponent extends BaseComponent{ internalFilters: PlanStatusListingFilters = this._getEmptyFilters(); appliedFilterCount: number = 0; + internalStatusEnum = this.enumUtils.getEnumValues(PlanStatusEnum); - constructor(){ + constructor(protected enumUtils: EnumUtils){ super(); effect(() => { const newFilters = this.filter(); @@ -31,11 +34,12 @@ export class PlanStatusListingFiltersComponent extends BaseComponent{ return this._getEmptyFilters(); } - let { isActive, like } = inputFilter; + let { isActive, like, internalStatuses } = inputFilter; return { isActive: (isActive ?? [])?.includes(IsActive.Active) || !isActive?.length, - like: like, + like, + internalStatuses: internalStatuses?.length ? internalStatuses : null } } @@ -47,6 +51,9 @@ export class PlanStatusListingFiltersComponent extends BaseComponent{ } if(filters?.like){ count++; + } + if(filters?.internalStatuses?.length) { + count++; } return count; } @@ -55,6 +62,7 @@ export class PlanStatusListingFiltersComponent extends BaseComponent{ return { isActive: true, like: null, + internalStatuses: null } } @@ -64,11 +72,12 @@ export class PlanStatusListingFiltersComponent extends BaseComponent{ } protected applyFilters(): void { - const { isActive, like } = this.internalFilters ?? {} + const { isActive, like, internalStatuses } = this.internalFilters ?? {} this.filterChange.emit({ ...this.filter(), like, - isActive: isActive ? [IsActive.Active] : [IsActive.Inactive] + isActive: isActive ? [IsActive.Active] : [IsActive.Inactive], + internalStatuses: internalStatuses?.length ? internalStatuses : null }) } @@ -85,4 +94,5 @@ export class PlanStatusListingFiltersComponent extends BaseComponent{ interface PlanStatusListingFilters { isActive: boolean; like: string; + internalStatuses: PlanStatusEnum[]; } diff --git a/frontend/src/assets/i18n/baq.json b/frontend/src/assets/i18n/baq.json index bafd1baab..422ba2c46 100644 --- a/frontend/src/assets/i18n/baq.json +++ b/frontend/src/assets/i18n/baq.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/de.json b/frontend/src/assets/i18n/de.json index 6b9578b21..3453d5781 100644 --- a/frontend/src/assets/i18n/de.json +++ b/frontend/src/assets/i18n/de.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/en.json b/frontend/src/assets/i18n/en.json index feec2f456..86ef88a5b 100644 --- a/frontend/src/assets/i18n/en.json +++ b/frontend/src/assets/i18n/en.json @@ -453,6 +453,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "FIELDS": { "TIMEZONE": "Timezone", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/es.json b/frontend/src/assets/i18n/es.json index 9d18d3072..430f402ec 100644 --- a/frontend/src/assets/i18n/es.json +++ b/frontend/src/assets/i18n/es.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/gr.json b/frontend/src/assets/i18n/gr.json index 21aeee48f..82c177491 100644 --- a/frontend/src/assets/i18n/gr.json +++ b/frontend/src/assets/i18n/gr.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/hr.json b/frontend/src/assets/i18n/hr.json index 0c7b4fc3e..4a2fae919 100644 --- a/frontend/src/assets/i18n/hr.json +++ b/frontend/src/assets/i18n/hr.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/pl.json b/frontend/src/assets/i18n/pl.json index da42016d9..008a454e0 100644 --- a/frontend/src/assets/i18n/pl.json +++ b/frontend/src/assets/i18n/pl.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/pt.json b/frontend/src/assets/i18n/pt.json index 396bfdeb1..e23ab51a3 100644 --- a/frontend/src/assets/i18n/pt.json +++ b/frontend/src/assets/i18n/pt.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/sk.json b/frontend/src/assets/i18n/sk.json index f88cc639e..0a7bfcd8b 100644 --- a/frontend/src/assets/i18n/sk.json +++ b/frontend/src/assets/i18n/sk.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/sr.json b/frontend/src/assets/i18n/sr.json index 3d5df559d..1b79d5f02 100644 --- a/frontend/src/assets/i18n/sr.json +++ b/frontend/src/assets/i18n/sr.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" }, diff --git a/frontend/src/assets/i18n/tr.json b/frontend/src/assets/i18n/tr.json index 30eacf6be..79f774454 100644 --- a/frontend/src/assets/i18n/tr.json +++ b/frontend/src/assets/i18n/tr.json @@ -479,6 +479,10 @@ "PLAN-WORKFLOW": { "TITLE": "Plan Workflow", "HINT": "Configure the workflow for this tenant's plans" + }, + "DESCRIPTION-WORKFLOW": { + "TITLE": "Description Workflow", + "HINT": "Configure the workflow for this tenant's descriptions" }, "ACTIONS": { "SAVE": "Save", @@ -2527,9 +2531,10 @@ "CONFIRM": "Confirm" } }, - "PLAN-WORKFLOW-EDITOR": { + "WORKFLOW-EDITOR": { "ACTIONS": { "SELECT-PLAN-STATUS": "Select plan status", + "SELECT-DESCRIPTION-STATUS": "Select description status", "ADD-STATUS-TRANSITION": "Add status transition", "REMOVE-STATUS-TRANSITION": "Remove status transition" },