From 50512daebd2f454490dcafb6d996787dade97c52 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:26:44 +0700 Subject: [PATCH 1/7] ref --- .../matez/src/lib/components/value/index.ts | 1 + .../shops-table/shops-table.component.ts | 148 +++--------------- .../utils/get-delegates-by-party.ts | 38 +++++ .../shops-table/utils/get-rr-by-party-item.ts | 128 +++++++++++++++ 4 files changed, 186 insertions(+), 129 deletions(-) create mode 100644 src/components/shops-table/utils/get-delegates-by-party.ts create mode 100644 src/components/shops-table/utils/get-rr-by-party-item.ts diff --git a/projects/matez/src/lib/components/value/index.ts b/projects/matez/src/lib/components/value/index.ts index 51a4af416..c511120ee 100644 --- a/projects/matez/src/lib/components/value/index.ts +++ b/projects/matez/src/lib/components/value/index.ts @@ -1,4 +1,5 @@ export * from './value.component'; export * from './components/value-list.component'; +export * from './components/menu-value.component'; export * from './types/value'; export * from './types/base-type'; diff --git a/src/components/shops-table/shops-table.component.ts b/src/components/shops-table/shops-table.component.ts index 8f80de51e..f2fdcbb29 100644 --- a/src/components/shops-table/shops-table.component.ts +++ b/src/components/shops-table/shops-table.component.ts @@ -1,6 +1,6 @@ import startCase from 'lodash-es/startCase'; -import { combineLatest, map, of, switchMap } from 'rxjs'; -import { filter, shareReplay, startWith } from 'rxjs/operators'; +import { map, switchMap } from 'rxjs'; +import { filter, shareReplay } from 'rxjs/operators'; import { MemoizeExpiring } from 'typescript-memoize'; import { @@ -12,13 +12,13 @@ import { booleanAttribute, inject, input, + runInInjectionContext, } from '@angular/core'; import { toObservable } from '@angular/core/rxjs-interop'; import { MatCardModule } from '@angular/material/card'; import { Router } from '@angular/router'; import { ShopConfigObject } from '@vality/domain-proto/domain'; -import { VersionedObject } from '@vality/domain-proto/domain_config_v2'; import { Column, ConfirmDialogComponent, @@ -37,14 +37,13 @@ import { PartiesStoreService, ShopWithInfo } from '~/api/payment-processing'; import { ThriftPartyManagementService } from '~/api/services'; import { createCurrencyColumn, createDomainObjectColumn, createPartyColumn } from '~/utils'; -import { - DelegateWithPaymentInstitution, - PartyDelegateRulesetsService, -} from '../../app/parties/party/routing-rules-old/party-delegate-rulesets'; +import { PartyDelegateRulesetsService } from '../../app/parties/party/routing-rules-old/party-delegate-rulesets'; import { RoutingRulesType } from '../../app/parties/party/routing-rules-old/types/routing-rules-type'; import { SidenavInfoService } from '../sidenav-info'; import { DomainObjectCardComponent } from '../thrift-api-crud/domain'; +import { getDelegatesByPartyItem } from './utils/get-rr-by-party-item'; + @Component({ selector: 'cc-shops-table', imports: [InputFieldModule, MatCardModule, TableModule], @@ -174,101 +173,21 @@ export class ShopsTableComponent { { header: 'Guarantee Available', isLazyCell: true }, ), createMenuColumn((d) => - this.getDelegatesByParty().pipe( - map((delegatesByParty) => - delegatesByParty.rulesetIds - .map( - (id) => - delegatesByParty.delegatesWithPaymentInstitutionByParty - ?.get?.(d.data.party_ref.id) - ?.find?.((v) => v?.partyDelegate?.ruleset?.id === id) - ?.partyDelegate?.ruleset, - ) - .filter(Boolean), - ), - switchMap((rulesets) => - rulesets?.length - ? combineLatest( - rulesets.map( - (ruleset) => - this.domainStoreService.getObject({ - routing_rules: { id: ruleset.id }, - }).value$, - ), - ) - : of([] as VersionedObject[]), + toObservable(this.shops, { injector: this.injector }).pipe( + switchMap((shops) => + runInInjectionContext(this.injector, () => + getDelegatesByPartyItem( + shops?.length ? shops.map((s) => s.data.party_ref.id) : [], + RoutingRulesType.Payment, + d.data.party_ref.id, + d.ref.id, + ), + ), ), - map((rulesetObjects) => { - const partyId = d.data.party_ref.id; - const shopId = d.ref.id; - const delegates = rulesetObjects.map( - (ruleset) => - ruleset?.object?.routing_rules?.data?.decisions?.delegates?.filter?.( - (delegate) => - delegate?.allowed?.condition?.party?.party_ref?.id === - partyId && - delegate?.allowed?.condition?.party?.definition?.shop_is === - shopId, - ) || [], - ); - const noShopRuleset = { - label: 'No routing rule', - disabled: true, - }; - if (rulesetObjects.length === 0) { - return [ - { - label: 'No party RR', - disabled: true, - }, - noShopRuleset, - ]; - } - return rulesetObjects.flatMap((ruleset, idx) => { - const rr = ruleset.object.routing_rules; - return [ - { - label: - 'Party RR' + - (rulesetObjects.length > 1 ? ` #${rr.ref.id}` : ''), - click: () => - this.router.navigate([ - '/parties', - partyId, - 'routing-rules', - 'payment', - rr.ref.id, - ]), - }, - ...(delegates[idx].length - ? delegates[idx].map((delegate) => ({ - label: - 'Routing rule' + - (delegates.length > 1 ? ` #${delegate.ruleset.id}` : ''), - click: () => - this.router.navigate([ - '/parties', - partyId, - 'routing-rules', - 'payment', - rr.ref.id, - 'delegate', - delegate.ruleset.id, - ]), - })) - : [noShopRuleset]), - ]; - }); - }), - startWith([ - { - label: 'Routing rule loading...', - disabled: true, - }, - ]), - map((rrItems) => ({ + map((rr) => ({ items: [ - ...rrItems, + ...rr.partyRr, + ...rr.itemRr, { label: getUnionKey(d.data.suspension) === 'suspended' @@ -344,35 +263,6 @@ export class ShopsTableComponent { }); } - private getDelegatesByParty() { - return toObservable(this.shops, { injector: this.injector }).pipe( - map((shops) => - shops?.length ? Array.from(new Set(shops.map((s) => s.data.party_ref.id))) : [], - ), - switchMap((parties) => - parties?.length - ? combineLatest( - parties.map((id) => - this.partyDelegateRulesetsService.getDelegatesWithPaymentInstitution( - RoutingRulesType.Payment, - id, - ), - ), - ).pipe(map((rules) => new Map(rules.map((r, idx) => [parties[idx], r])))) - : of(new Map()), - ), - map((delegatesWithPaymentInstitutionByParty) => ({ - delegatesWithPaymentInstitutionByParty, - rulesetIds: Array.from( - Array.from(delegatesWithPaymentInstitutionByParty.values()).reduce((acc, d) => { - d?.map((v) => v?.partyDelegate?.ruleset?.id).forEach((v) => acc.add(v)); - return acc; - }, new Set([])), - ), - })), - ); - } - @MemoizeExpiring(5 * 60_000) getSettlementAccountState(shop: ShopWithInfo) { return this.partyManagementService diff --git a/src/components/shops-table/utils/get-delegates-by-party.ts b/src/components/shops-table/utils/get-delegates-by-party.ts new file mode 100644 index 000000000..e082e4999 --- /dev/null +++ b/src/components/shops-table/utils/get-delegates-by-party.ts @@ -0,0 +1,38 @@ +import { Observable, combineLatest, map, of } from 'rxjs'; + +import { inject } from '@angular/core'; + +import { + DelegateWithPaymentInstitution, + PartyDelegateRulesetsService, +} from '../../../app/parties/party/routing-rules-old/party-delegate-rulesets'; +import { RoutingRulesType } from '../../../app/parties/party/routing-rules-old/types/routing-rules-type'; + +export function getDelegatesByParty( + parties: string[], + type: RoutingRulesType, +): Observable<{ + delegatesWithPaymentInstitutionByParty: Map; + rulesetIds: number[]; +}> { + const partyDelegateRulesetsService = inject(PartyDelegateRulesetsService); + return ( + parties?.length + ? combineLatest( + parties.map((id) => + partyDelegateRulesetsService.getDelegatesWithPaymentInstitution(type, id), + ), + ).pipe(map((rules) => new Map(rules.map((r, idx) => [parties[idx], r])))) + : of(new Map()) + ).pipe( + map((delegatesWithPaymentInstitutionByParty) => ({ + delegatesWithPaymentInstitutionByParty, + rulesetIds: Array.from( + Array.from(delegatesWithPaymentInstitutionByParty.values()).reduce((acc, d) => { + d?.map((v) => v?.partyDelegate?.ruleset?.id).forEach((v) => acc.add(v)); + return acc; + }, new Set([])), + ), + })), + ); +} diff --git a/src/components/shops-table/utils/get-rr-by-party-item.ts b/src/components/shops-table/utils/get-rr-by-party-item.ts new file mode 100644 index 000000000..945aceeaf --- /dev/null +++ b/src/components/shops-table/utils/get-rr-by-party-item.ts @@ -0,0 +1,128 @@ +import { Observable, combineLatest, map, of, startWith, switchMap } from 'rxjs'; + +import { inject } from '@angular/core'; +import { Router } from '@angular/router'; + +import { VersionedObject } from '@vality/domain-proto/domain_config_v2'; +import { MenuItem } from '@vality/matez'; + +import { DomainObjectsStoreService } from '~/api/domain-config'; + +import { RoutingRulesType } from '../../../app/parties/party/routing-rules-old/types/routing-rules-type'; + +import { getDelegatesByParty } from './get-delegates-by-party'; + +export function getDelegatesByPartyItem( + parties: string[], + type: RoutingRulesType, + partyId: string, + itemId: string, +): Observable<{ + partyRr: MenuItem[]; + itemRr: MenuItem[]; +}> { + const domainStoreService = inject(DomainObjectsStoreService); + const router = inject(Router); + + return getDelegatesByParty(Array.from(new Set(parties)), type).pipe( + map((delegatesByParty) => + delegatesByParty.rulesetIds + .map( + (id) => + delegatesByParty.delegatesWithPaymentInstitutionByParty + ?.get?.(partyId) + ?.find?.((v) => v?.partyDelegate?.ruleset?.id === id)?.partyDelegate + ?.ruleset, + ) + .filter(Boolean), + ), + switchMap((rulesets) => + rulesets?.length + ? combineLatest( + rulesets.map( + (ruleset) => + domainStoreService.getObject({ + routing_rules: { id: ruleset.id }, + }).value$, + ), + ) + : of([] as VersionedObject[]), + ), + map((rulesetObjects) => { + const delegates = rulesetObjects.map( + (ruleset) => + ruleset?.object?.routing_rules?.data?.decisions?.delegates?.filter?.( + (delegate) => + delegate?.allowed?.condition?.party?.party_ref?.id === partyId && + delegate?.allowed?.condition?.party?.definition?.[ + type === RoutingRulesType.Payment ? 'shop_is' : 'wallet_is' + ] === itemId, + ) || [], + ); + const res: { + partyRr: MenuItem[]; + itemRr: MenuItem[]; + } = { + partyRr: rulesetObjects.map((ruleset) => { + const rr = ruleset.object.routing_rules; + return { + label: `Party RR #${rr.ref.id}`, + click: () => + router.navigate([ + '/parties', + partyId, + 'routing-rules', + type === RoutingRulesType.Payment ? 'payment' : 'withdrawal', + rr.ref.id, + ]), + }; + }), + itemRr: rulesetObjects.flatMap((ruleset, idx) => { + const rr = ruleset.object.routing_rules; + return delegates[idx].length + ? delegates[idx].map((delegate) => ({ + label: `RR #${delegate.ruleset.id}`, + click: () => + router.navigate([ + '/parties', + partyId, + 'routing-rules', + type === RoutingRulesType.Payment ? 'payment' : 'withdrawal', + rr.ref.id, + 'delegate', + delegate.ruleset.id, + ]), + })) + : []; + }), + }; + if (!res.partyRr.length) { + res.partyRr.push({ + label: 'No Party RR', + disabled: true, + }); + } + if (!res.itemRr.length) { + res.itemRr.push({ + label: 'No RR', + disabled: true, + }); + } + return res; + }), + startWith({ + partyRr: [ + { + label: 'Party RR loading...', + disabled: true, + }, + ], + itemRr: [ + { + label: 'RR loading...', + disabled: true, + }, + ], + }), + ); +} From 4cf165dae48262f9a15854ce1ae7e2f3e3e90dd2 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:35:22 +0700 Subject: [PATCH 2/7] add methods --- .../stores/parties-store.service.ts | 68 ++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/src/api/payment-processing/stores/parties-store.service.ts b/src/api/payment-processing/stores/parties-store.service.ts index 9a0390c89..f06c4da9c 100644 --- a/src/api/payment-processing/stores/parties-store.service.ts +++ b/src/api/payment-processing/stores/parties-store.service.ts @@ -3,7 +3,13 @@ import { MemoizeExpiring } from 'typescript-memoize'; import { Injectable, inject } from '@angular/core'; -import { PartyConfigRef, ShopConfigObject, ShopID, WalletID } from '@vality/domain-proto/domain'; +import { + PartyConfigRef, + ShopConfigObject, + ShopID, + WalletConfigObject, + WalletID, +} from '@vality/domain-proto/domain'; import { VersionedObjectInfo } from '@vality/domain-proto/domain_config_v2'; import { DomainObjectsStoreService, DomainService } from '../../domain-config'; @@ -137,4 +143,64 @@ export class PartiesStoreService { }, ]); } + + blockWallet(wallet: WalletConfigObject, reason: string) { + const newWalletConfig = cloneDeep(wallet); + newWalletConfig.data.block = { blocked: { reason, since: new Date().toISOString() } }; + + return this.domainService.commit([ + { + update: { + object: { + wallet_config: newWalletConfig, + }, + }, + }, + ]); + } + + unblockWallet(wallet: WalletConfigObject, reason: string) { + const newWalletConfig = cloneDeep(wallet); + newWalletConfig.data.block = { unblocked: { reason, since: new Date().toISOString() } }; + + return this.domainService.commit([ + { + update: { + object: { + wallet_config: newWalletConfig, + }, + }, + }, + ]); + } + + suspendWallet(wallet: WalletConfigObject) { + const newWalletConfig = cloneDeep(wallet); + newWalletConfig.data.suspension = { suspended: { since: new Date().toISOString() } }; + + return this.domainService.commit([ + { + update: { + object: { + wallet_config: newWalletConfig, + }, + }, + }, + ]); + } + + activateWallet(wallet: WalletConfigObject) { + const newWalletConfig = cloneDeep(wallet); + newWalletConfig.data.suspension = { active: { since: new Date().toISOString() } }; + + return this.domainService.commit([ + { + update: { + object: { + wallet_config: newWalletConfig, + }, + }, + }, + ]); + } } From 8b0b43185855c24a538fbbae823a7a8f3cf1330a Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:35:31 +0700 Subject: [PATCH 3/7] clean --- src/components/shops-table/shops-table.component.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/shops-table/shops-table.component.ts b/src/components/shops-table/shops-table.component.ts index f2fdcbb29..67acb1bcf 100644 --- a/src/components/shops-table/shops-table.component.ts +++ b/src/components/shops-table/shops-table.component.ts @@ -16,7 +16,6 @@ import { } from '@angular/core'; import { toObservable } from '@angular/core/rxjs-interop'; import { MatCardModule } from '@angular/material/card'; -import { Router } from '@angular/router'; import { ShopConfigObject } from '@vality/domain-proto/domain'; import { @@ -32,7 +31,6 @@ import { } from '@vality/matez'; import { getUnionKey } from '@vality/ng-thrift'; -import { DomainObjectsStoreService } from '~/api/domain-config'; import { PartiesStoreService, ShopWithInfo } from '~/api/payment-processing'; import { ThriftPartyManagementService } from '~/api/services'; import { createCurrencyColumn, createDomainObjectColumn, createPartyColumn } from '~/utils'; @@ -55,9 +53,6 @@ export class ShopsTableComponent { private partiesStoreService = inject(PartiesStoreService); private dialogService = inject(DialogService); private log = inject(NotifyLogService); - private router = inject(Router); - private partyDelegateRulesetsService = inject(PartyDelegateRulesetsService); - private domainStoreService = inject(DomainObjectsStoreService); private injector = inject(Injector); private partyManagementService = inject(ThriftPartyManagementService); From 5eb2fac1e14521ab1b90b7a30188c302a4d4e049 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:38:01 +0700 Subject: [PATCH 4/7] add wallets menu --- src/app/wallets/wallets.component.ts | 118 ++++++++++++++++++++++++++- 1 file changed, 115 insertions(+), 3 deletions(-) diff --git a/src/app/wallets/wallets.component.ts b/src/app/wallets/wallets.component.ts index 103bf9e65..db41e6af6 100644 --- a/src/app/wallets/wallets.component.ts +++ b/src/app/wallets/wallets.component.ts @@ -1,9 +1,9 @@ import { startCase } from 'lodash-es'; -import { map, shareReplay } from 'rxjs/operators'; +import { filter, map, shareReplay, switchMap } from 'rxjs/operators'; import { MemoizeExpiring } from 'typescript-memoize'; import { CommonModule } from '@angular/common'; -import { Component, inject } from '@angular/core'; +import { Component, Injector, inject, runInInjectionContext } from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; @@ -14,26 +14,35 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { VersionedObject } from '@vality/domain-proto/domain_config_v2'; import { Column, + ConfirmDialogComponent, + DialogResponseStatus, + DialogService, FiltersModule, ListFieldModule, + NotifyLogService, SwitchButtonModule, TableModule, UpdateOptions, + createMenuColumn, } from '@vality/matez'; import { ThriftFormModule, getUnionKey } from '@vality/ng-thrift'; import { DomainObjectsStoreService, FetchFullDomainObjectsService } from '~/api/domain-config'; +import { PartiesStoreService } from '~/api/payment-processing'; import { ThriftPartyManagementService } from '~/api/services'; import { MerchantFieldModule } from '~/components/merchant-field'; import { PageLayoutModule } from '~/components/page-layout'; +import { getDelegatesByPartyItem } from '~/components/shops-table/utils/get-rr-by-party-item'; import { createCurrencyColumn, createDomainObjectColumn, createPartyColumn } from '~/utils'; import { PartyStoreService } from '../parties/party'; +import { PartyDelegateRulesetsService } from '../parties/party/routing-rules-old/party-delegate-rulesets'; +import { RoutingRulesType } from '../parties/party/routing-rules-old/types/routing-rules-type'; @Component({ selector: 'cc-wallets', templateUrl: './wallets.component.html', - providers: [PartyStoreService, FetchFullDomainObjectsService], + providers: [PartyStoreService, FetchFullDomainObjectsService, PartyDelegateRulesetsService], imports: [ CommonModule, MatCardModule, @@ -55,6 +64,10 @@ export class WalletsComponent { private domainObjectsStoreService = inject(DomainObjectsStoreService); private partyStoreService = inject(PartyStoreService); private partyManagementService = inject(ThriftPartyManagementService); + private injector = inject(Injector); + private log = inject(NotifyLogService); + private dialogService = inject(DialogService); + private partiesStoreService = inject(PartiesStoreService); wallets = this.domainObjectsStoreService .getObjects('wallet_config') @@ -132,6 +145,46 @@ export class WalletsComponent { ), { header: 'Available', isLazyCell: true }, ), + createMenuColumn((d) => + this.wallets.value$.pipe( + switchMap((wallets) => + runInInjectionContext(this.injector, () => + getDelegatesByPartyItem( + wallets?.length + ? wallets.map((w) => w.object.wallet_config.data.party_ref.id) + : [], + RoutingRulesType.Withdrawal, + d.object.wallet_config.data.party_ref.id, + d.object.wallet_config.ref.id, + ), + ), + ), + map((rr) => ({ + items: [ + ...rr.partyRr, + ...rr.itemRr, + { + label: + getUnionKey(d.object.wallet_config.data.suspension) === 'suspended' + ? 'Activate' + : 'Suspend', + click: () => { + this.toggleSuspension(d); + }, + }, + { + label: + getUnionKey(d.object.wallet_config.data.block) === 'blocked' + ? 'Unblock' + : 'Block', + click: () => { + this.toggleBlocking(d); + }, + }, + ], + })), + ), + ), ]; party$ = this.partyStoreService.party$; @@ -149,4 +202,63 @@ export class WalletsComponent { ) .pipe(shareReplay({ refCount: true, bufferSize: 1 })); } + + toggleBlocking(obj: VersionedObject) { + const wallet = obj.object.wallet_config; + this.dialogService + .open(ConfirmDialogComponent, { + title: + getUnionKey(wallet.data.block) === 'unblocked' + ? 'Block wallet' + : 'Unblock wallet', + hasReason: true, + }) + .afterClosed() + .pipe( + filter((r) => r.status === DialogResponseStatus.Success), + switchMap((r) => + getUnionKey(wallet.data.block) === 'unblocked' + ? this.partiesStoreService.blockWallet(wallet, r.data.reason) + : this.partiesStoreService.unblockWallet(wallet, r.data.reason), + ), + ) + .subscribe({ + next: () => { + this.wallets.reload(); + this.log.success(); + }, + error: (err) => { + this.log.error(err); + }, + }); + } + + toggleSuspension(obj: VersionedObject) { + const wallet = obj.object.wallet_config; + this.dialogService + .open(ConfirmDialogComponent, { + title: + getUnionKey(wallet.data.suspension) === 'active' + ? 'Suspend wallet' + : 'Activate wallet', + }) + .afterClosed() + .pipe( + filter((r) => r.status === DialogResponseStatus.Success), + switchMap(() => + getUnionKey(wallet.data.suspension) === 'active' + ? this.partiesStoreService.suspendWallet(wallet) + : this.partiesStoreService.activateWallet(wallet), + ), + ) + .subscribe({ + next: () => { + this.wallets.reload(); + this.log.success(); + }, + error: (err) => { + this.log.error(err); + }, + }); + } } From d8d83066fa36846ad98c36c40cd73f854007fbaa Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:39:49 +0700 Subject: [PATCH 5/7] rem in dev rr --- src/app/app.component.ts | 14 +- src/app/parties/party/party-routing.module.ts | 5 - ...nge-delegate-ruleset-dialog.component.html | 22 - ...hange-delegate-ruleset-dialog.component.ts | 60 --- .../change-delegate-ruleset-dialog.module.ts | 26 -- .../change-delegate-ruleset-dialog/index.ts | 2 - .../change-target-dialog.component.html | 14 - .../change-target-dialog.component.ts | 56 --- .../change-target-dialog.module.ts | 23 -- .../components/change-target-dialog/index.ts | 2 - .../components/routing-rules-list/index.ts | 2 - .../routing-rules-list.component.html | 7 - .../routing-rules-list.component.ts | 154 ------- .../routing-rules-list.module.ts | 26 -- .../components/target-ruleset-form/index.ts | 4 - .../target-ruleset-form.component.html | 60 --- .../target-ruleset-form.component.ts | 133 ------ .../target-ruleset-form.module.ts | 27 -- .../types/target-ruleset.ts | 4 - .../target-ruleset-form/types/target.ts | 4 - src/app/parties/party/routing-rules/index.ts | 1 - .../attach-new-ruleset-dialog.component.html | 36 -- .../attach-new-ruleset-dialog.component.ts | 51 --- .../attach-new-ruleset-dialog/index.ts | 1 - .../party-delegate-rulesets/index.ts | 3 - .../party-delegate-rulesets-routing.module.ts | 43 -- .../party-delegate-rulesets.component.html | 15 - .../party-delegate-rulesets.component.ts | 111 ------ .../party-delegate-rulesets.module.ts | 57 --- .../party-delegate-rulesets.service.ts | 104 ----- .../party-delegate-rulesets/routing-config.ts | 5 - ...d-party-routing-rule-dialog.component.html | 39 -- ...add-party-routing-rule-dialog.component.ts | 73 ---- .../add-party-routing-rule-dialog.module.ts | 37 -- .../add-party-routing-rule-dialog/index.ts | 2 - .../party-routing-ruleset/index.ts | 1 - .../initialize-routing-rules-dialog/index.ts | 2 - ...ialize-routing-rules-dialog.component.html | 29 -- ...itialize-routing-rules-dialog.component.ts | 41 -- .../initialize-routing-rules-dialog.module.ts | 36 -- .../party-routing-ruleset-routing.module.ts | 21 - .../party-routing-ruleset.component.html | 28 -- .../party-routing-ruleset.component.scss | 10 - .../party-routing-ruleset.component.ts | 278 ------------- .../party-routing-ruleset.module.ts | 56 --- .../party-routing-ruleset.service.ts | 69 ---- .../party-routing-ruleset/routing-config.ts | 5 - .../routing-rules-type.service.ts | 18 - .../routing-rules/routing-rules.module.ts | 8 - .../routing-rules/routing-ruleset/index.ts | 1 - .../routing-ruleset/routing-config.ts | 5 - .../routing-ruleset-routing.module.ts | 21 - .../routing-ruleset.component.html | 27 -- .../routing-ruleset.component.ts | 377 ------------------ .../routing-ruleset/routing-ruleset.module.ts | 55 --- .../routing-ruleset.service.ts | 68 ---- .../services/routing-rules/index.ts | 1 - .../routing-rules/routing-rules.service.ts | 377 ------------------ .../routing-rules/types/candidate-id.ts | 4 - .../routing-rules/utils/get-delegate.ts | 8 - .../utils/get-update-rules-candidates.ts | 27 -- .../routing-rules/types/routing-rules-type.ts | 4 - .../utils/get-changed-predicate.ts | 20 - .../utils/get-policies-id-by-type.ts | 20 - .../utils/toggle-candidate-allowed.ts | 89 ----- 65 files changed, 1 insertion(+), 2928 deletions(-) delete mode 100644 src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html delete mode 100644 src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts delete mode 100644 src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts delete mode 100644 src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/index.ts delete mode 100644 src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.html delete mode 100644 src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.ts delete mode 100644 src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.module.ts delete mode 100644 src/app/parties/party/routing-rules/components/change-target-dialog/index.ts delete mode 100644 src/app/parties/party/routing-rules/components/routing-rules-list/index.ts delete mode 100644 src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.html delete mode 100644 src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.ts delete mode 100644 src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.module.ts delete mode 100644 src/app/parties/party/routing-rules/components/target-ruleset-form/index.ts delete mode 100644 src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.html delete mode 100644 src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.ts delete mode 100644 src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.module.ts delete mode 100644 src/app/parties/party/routing-rules/components/target-ruleset-form/types/target-ruleset.ts delete mode 100644 src/app/parties/party/routing-rules/components/target-ruleset-form/types/target.ts delete mode 100644 src/app/parties/party/routing-rules/index.ts delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/index.ts delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.html delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.ts delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.module.ts delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.service.ts delete mode 100644 src/app/parties/party/routing-rules/party-delegate-rulesets/routing-config.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/index.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/index.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/index.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset-routing.module.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.html delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.scss delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.module.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.service.ts delete mode 100644 src/app/parties/party/routing-rules/party-routing-ruleset/routing-config.ts delete mode 100644 src/app/parties/party/routing-rules/routing-rules-type.service.ts delete mode 100644 src/app/parties/party/routing-rules/routing-rules.module.ts delete mode 100644 src/app/parties/party/routing-rules/routing-ruleset/index.ts delete mode 100644 src/app/parties/party/routing-rules/routing-ruleset/routing-config.ts delete mode 100644 src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset-routing.module.ts delete mode 100644 src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.html delete mode 100644 src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.ts delete mode 100644 src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.module.ts delete mode 100644 src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.service.ts delete mode 100644 src/app/parties/party/routing-rules/services/routing-rules/index.ts delete mode 100644 src/app/parties/party/routing-rules/services/routing-rules/routing-rules.service.ts delete mode 100644 src/app/parties/party/routing-rules/services/routing-rules/types/candidate-id.ts delete mode 100644 src/app/parties/party/routing-rules/services/routing-rules/utils/get-delegate.ts delete mode 100644 src/app/parties/party/routing-rules/services/routing-rules/utils/get-update-rules-candidates.ts delete mode 100644 src/app/parties/party/routing-rules/types/routing-rules-type.ts delete mode 100644 src/app/parties/party/routing-rules/utils/get-changed-predicate.ts delete mode 100644 src/app/parties/party/routing-rules/utils/get-policies-id-by-type.ts delete mode 100644 src/app/parties/party/routing-rules/utils/toggle-candidate-allowed.ts diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 9d2489577..eb80c99a6 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -2,7 +2,7 @@ import Keycloak from 'keycloak-js'; import { debounceTime, map, of, shareReplay, switchMap, tap } from 'rxjs'; import { CommonModule } from '@angular/common'; -import { Component, DestroyRef, inject, isDevMode, signal } from '@angular/core'; +import { Component, DestroyRef, inject, signal } from '@angular/core'; import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; @@ -127,18 +127,6 @@ const createNavLinks = (): Link[] => [ url: `${partyPath}/routing-rules/withdrawal/main`, checkUrl: `${partyPath}/routing-rules/withdrawal`, }, - { - label: 'Payment RR (in dev)', - url: `${partyPath}/rr/payment/main`, - checkUrl: `${partyPath}/rr/payment`, - isHidden: !isDevMode, - }, - { - label: 'Withdrawal RR (in dev)', - url: `${partyPath}/rr/withdrawal/main`, - checkUrl: `${partyPath}/rr/withdrawal`, - isHidden: !isDevMode, - }, ] : [], }; diff --git a/src/app/parties/party/party-routing.module.ts b/src/app/parties/party/party-routing.module.ts index c3ef6f426..fbafc5a83 100644 --- a/src/app/parties/party/party-routing.module.ts +++ b/src/app/parties/party/party-routing.module.ts @@ -23,11 +23,6 @@ import { ROUTING_CONFIG as WEBHOOKS_ROUTING_CONFIG } from './webhooks/routing-co path: 'shops', loadChildren: () => import('./shops').then((m) => m.PartyShopsModule), }, - { - path: 'rr', - loadChildren: () => - import('./routing-rules').then((m) => m.RoutingRulesModule), - }, { path: 'routing-rules', loadChildren: () => diff --git a/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html deleted file mode 100644 index de9df7077..000000000 --- a/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html +++ /dev/null @@ -1,22 +0,0 @@ - -
- - Delegate Ruleset - - @for (i of rulesets$ | async; track i) { - #{{ i.ref.id }} {{ i.data.name }} - } - - - - - - -
- - - - -
diff --git a/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts deleted file mode 100644 index d90f04d2e..000000000 --- a/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { map } from 'rxjs/operators'; - -import { ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { UntypedFormBuilder } from '@angular/forms'; - -import { DialogSuperclass } from '@vality/matez'; - -import { RoutingRulesService } from '../../services/routing-rules'; - -@Component({ - selector: 'cc-change-delegate-ruleset-dialog', - templateUrl: 'change-delegate-ruleset-dialog.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class ChangeDelegateRulesetDialogComponent - extends DialogSuperclass< - ChangeDelegateRulesetDialogComponent, - { mainRulesetRefID: number; delegateIdx: number } - > - implements OnInit -{ - private fb = inject(UntypedFormBuilder); - private routingRulesService = inject(RoutingRulesService); - private destroyRef = inject(DestroyRef); - form = this.fb.group({ - rulesetRefId: [], - description: '', - }); - - rulesets$ = this.routingRulesService.rulesets$; - - ngOnInit() { - this.routingRulesService - .getRuleset(this.dialogData.mainRulesetRefID) - .pipe( - map((r) => r?.data?.decisions?.delegates?.[this.dialogData?.delegateIdx]), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe((delegate) => { - this.form.patchValue({ - rulesetRefId: delegate?.ruleset?.id, - description: delegate?.description, - }); - }); - } - - changeRuleset() { - this.routingRulesService - .changeDelegateRuleset({ - mainRulesetRefID: this.dialogData.mainRulesetRefID, - delegateIdx: this.dialogData.delegateIdx, - newDelegateRulesetRefID: this.form.value.rulesetRefId, - description: this.form.value.description, - }) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe(() => this.dialogRef.close()); - } -} diff --git a/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts deleted file mode 100644 index 2ac5e241a..000000000 --- a/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; - -import { DialogModule } from '@vality/matez'; - -import { ChangeDelegateRulesetDialogComponent } from './change-delegate-ruleset-dialog.component'; - -@NgModule({ - imports: [ - CommonModule, - ReactiveFormsModule, - FormsModule, - MatInputModule, - MatButtonModule, - MatSelectModule, - DialogModule, - ], - declarations: [ChangeDelegateRulesetDialogComponent], - exports: [ChangeDelegateRulesetDialogComponent], - providers: [], -}) -export class ChangeDelegateRulesetDialogModule {} diff --git a/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/index.ts b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/index.ts deleted file mode 100644 index 49cda7e1f..000000000 --- a/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './change-delegate-ruleset-dialog.component'; -export * from './change-delegate-ruleset-dialog.module'; diff --git a/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.html b/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.html deleted file mode 100644 index a9c90a594..000000000 --- a/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.ts b/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.ts deleted file mode 100644 index fe9121743..000000000 --- a/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { BehaviorSubject } from 'rxjs'; - -import { ChangeDetectionStrategy, Component, DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; - -import { DialogSuperclass, NotifyLogService } from '@vality/matez'; - -import { RoutingRulesService } from '../../services/routing-rules'; -import { RoutingRulesType } from '../../types/routing-rules-type'; -import { TargetRuleset } from '../target-ruleset-form'; - -@Component({ - templateUrl: 'change-target-dialog.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class ChangeTargetDialogComponent extends DialogSuperclass< - ChangeTargetDialogComponent, - { mainRulesetRefID: number; delegateIdx: number; type: RoutingRulesType } -> { - private routingRulesService = inject(RoutingRulesService); - private log = inject(NotifyLogService); - private destroyRef = inject(DestroyRef); - targetRuleset$ = new BehaviorSubject(undefined); - targetRulesetValid$ = new BehaviorSubject(undefined); - initValue: Partial = {}; - - constructor() { - super(); - this.routingRulesService - .getRuleset(this.dialogData?.mainRulesetRefID) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe((ruleset) => { - this.initValue = { - mainRulesetRefID: ruleset.ref.id, - mainDelegateDescription: - ruleset?.data?.decisions?.delegates?.[this.dialogData?.delegateIdx] - ?.description, - }; - }); - } - - changeTarget() { - const { mainRulesetRefID, mainDelegateDescription } = this.targetRuleset$.value; - const { mainRulesetRefID: previousMainRulesetRefID, delegateIdx } = this.dialogData; - this.routingRulesService - .changeMainRuleset({ - previousMainRulesetRefID, - mainRulesetRefID, - mainDelegateDescription, - delegateIdx, - }) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe(() => this.dialogRef.close(), this.log.error); - } -} diff --git a/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.module.ts b/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.module.ts deleted file mode 100644 index a41c7b7c6..000000000 --- a/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.module.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDialogModule } from '@angular/material/dialog'; - -import { DialogModule } from '@vality/matez'; - -import { TargetRulesetFormModule } from '../target-ruleset-form'; - -import { ChangeTargetDialogComponent } from './change-target-dialog.component'; - -@NgModule({ - imports: [ - CommonModule, - TargetRulesetFormModule, - MatDialogModule, - MatButtonModule, - DialogModule, - ], - declarations: [ChangeTargetDialogComponent], - exports: [ChangeTargetDialogComponent], -}) -export class ChangeTargetDialogModule {} diff --git a/src/app/parties/party/routing-rules/components/change-target-dialog/index.ts b/src/app/parties/party/routing-rules/components/change-target-dialog/index.ts deleted file mode 100644 index 727776f3f..000000000 --- a/src/app/parties/party/routing-rules/components/change-target-dialog/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './change-target-dialog.component'; -export * from './change-target-dialog.module'; diff --git a/src/app/parties/party/routing-rules/components/routing-rules-list/index.ts b/src/app/parties/party/routing-rules/components/routing-rules-list/index.ts deleted file mode 100644 index 48780c453..000000000 --- a/src/app/parties/party/routing-rules/components/routing-rules-list/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './routing-rules-list.component'; -export * from './routing-rules-list.module'; diff --git a/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.html b/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.html deleted file mode 100644 index ddb6448fc..000000000 --- a/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.html +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.ts b/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.ts deleted file mode 100644 index ae2782714..000000000 --- a/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { catchError, filter, switchMap } from 'rxjs/operators'; - -import { - ChangeDetectionStrategy, - Component, - DestroyRef, - EventEmitter, - Injector, - Input, - Output, - booleanAttribute, - computed, - inject, - input, - runInInjectionContext, -} from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { ActivatedRoute } from '@angular/router'; - -import { - Column, - ConfirmDialogComponent, - DialogResponseStatus, - DialogService, - NotifyLogService, - createMenuColumn, -} from '@vality/matez'; - -import { RoutingRulesService } from '../../services/routing-rules'; -import { ChangeDelegateRulesetDialogComponent } from '../change-delegate-ruleset-dialog'; -import { ChangeTargetDialogComponent } from '../change-target-dialog'; - -interface DelegateId { - parentRefId: number; - delegateIdx: number; -} - -export type RoutingRulesListItem = DelegateId & { item: T }; - -@Component({ - selector: 'cc-routing-rules-list', - templateUrl: 'routing-rules-list.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class RoutingRulesListComponent { - private dialogService = inject(DialogService); - private log = inject(NotifyLogService); - private routingRulesService = inject(RoutingRulesService); - private route = inject(ActivatedRoute); - private destroyRef = inject(DestroyRef); - private injector = inject(Injector); - @Input() data: RoutingRulesListItem[]; - displayedColumns = input>[]>([]); - @Input({ transform: booleanAttribute }) progress: boolean = false; - @Output() toDetails = new EventEmitter(); - - columns = computed>[]>(() => - runInInjectionContext(this.injector, () => [ - ...this.displayedColumns(), - createMenuColumn((d) => ({ - items: [ - { - label: 'Details', - click: () => - this.toDetails.emit({ - parentRefId: d?.parentRefId, - delegateIdx: d?.delegateIdx, - }), - }, - { - label: 'Change delegate ruleset', - click: () => this.changeDelegateRuleset(d), - }, - { - label: 'Change main ruleset', - click: () => this.changeTarget(d), - }, - { - label: 'Clone delegate ruleset', - click: () => this.cloneDelegateRuleset(d), - }, - { - label: 'Delete', - click: () => this.delete(d), - }, - ], - })), - ]), - ); - - changeDelegateRuleset(delegateId: DelegateId) { - this.dialogService - .open(ChangeDelegateRulesetDialogComponent, { - mainRulesetRefID: delegateId.parentRefId, - delegateIdx: delegateId.delegateIdx, - }) - .afterClosed() - .pipe( - catchError((err) => { - this.log.error(err); - throw err; - }), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe(); - } - - changeTarget(delegateId: DelegateId) { - this.dialogService - .open(ChangeTargetDialogComponent, { - mainRulesetRefID: delegateId.parentRefId, - delegateIdx: delegateId.delegateIdx, - type: this.route.snapshot.params['type'], - }) - .afterClosed() - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe({ error: this.log.error }); - } - - cloneDelegateRuleset(delegateId: DelegateId) { - this.dialogService - .open(ConfirmDialogComponent, { title: 'Clone delegate ruleset' }) - .afterClosed() - .pipe( - filter(({ status }) => status === DialogResponseStatus.Success), - switchMap(() => - this.routingRulesService.cloneDelegateRuleset({ - mainRulesetRefID: delegateId.parentRefId, - delegateIdx: delegateId.delegateIdx, - }), - ), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe({ error: this.log.error }); - } - - delete(delegateId: DelegateId) { - this.dialogService - .open(ConfirmDialogComponent, { title: 'Delete delegate' }) - .afterClosed() - .pipe( - filter(({ status }) => status === DialogResponseStatus.Success), - switchMap(() => - this.routingRulesService.deleteDelegate({ - mainRulesetRefID: delegateId.parentRefId, - delegateIdx: delegateId.delegateIdx, - }), - ), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe({ error: this.log.error }); - } -} diff --git a/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.module.ts b/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.module.ts deleted file mode 100644 index 208d0809e..000000000 --- a/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; -import { MatIconModule } from '@angular/material/icon'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatPaginatorModule } from '@angular/material/paginator'; - -import { TableModule } from '@vality/matez'; - -import { RoutingRulesListComponent } from './routing-rules-list.component'; - -@NgModule({ - imports: [ - CommonModule, - MatMenuModule, - MatCardModule, - MatPaginatorModule, - MatIconModule, - MatButtonModule, - TableModule, - ], - declarations: [RoutingRulesListComponent], - exports: [RoutingRulesListComponent], -}) -export class RoutingRulesListModule {} diff --git a/src/app/parties/party/routing-rules/components/target-ruleset-form/index.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/index.ts deleted file mode 100644 index fcfabea1e..000000000 --- a/src/app/parties/party/routing-rules/components/target-ruleset-form/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './target-ruleset-form.component'; -export * from './target-ruleset-form.module'; -export * from './types/target'; -export * from './types/target-ruleset'; diff --git a/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.html b/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.html deleted file mode 100644 index e08989630..000000000 --- a/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.html +++ /dev/null @@ -1,60 +0,0 @@ -
-
Change Main Ruleset
- -
- - Payment Institution - Manual Target - - - @if (form.controls['target'].value === target.PaymentInstitution) { -
- - Payment Institution - - @for (i of paymentInstitutions$ | async; track i) { - #{{ i.ref.id }} {{ i.data.name }} - } - - - @if (form.value.paymentInstitution; as paymentInstitution) { -
- Routing Ruleset (policies) -
-
- @if (policiesId) { - #{{ policiesId }} {{ (getRulesetById(policiesId) | async)?.data?.name }} - } @else { - Not found - } -
- - } -
- } - @if (form.controls['target'].value === target.Manual) { - - Main Ruleset - - @for (i of rulesets$ | async; track i) { - - #{{ i.ref.id }} {{ i.data.name }} - - } - - - } -
- - - - -
diff --git a/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.ts deleted file mode 100644 index e28cb6f9d..000000000 --- a/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.ts +++ /dev/null @@ -1,133 +0,0 @@ -import sortBy from 'lodash-es/sortBy'; -import { map, startWith } from 'rxjs/operators'; - -import { - ChangeDetectionStrategy, - Component, - DestroyRef, - EventEmitter, - Input, - OnChanges, - Output, - inject, -} from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { UntypedFormBuilder } from '@angular/forms'; - -import { PaymentInstitutionObject } from '@vality/domain-proto/domain'; -import { ComponentChanges } from '@vality/matez'; - -import { PaymentInstitutionsStoreService } from '~/api/domain-config'; - -import { RoutingRulesService } from '../../services/routing-rules'; -import { RoutingRulesType } from '../../types/routing-rules-type'; -import { getPoliciesIdByType } from '../../utils/get-policies-id-by-type'; - -import { Target } from './types/target'; -import { TargetRuleset } from './types/target-ruleset'; - -@Component({ - selector: 'cc-target-ruleset-form', - templateUrl: 'target-ruleset-form.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class TargetRulesetFormComponent implements OnChanges { - private fb = inject(UntypedFormBuilder); - private paymentInstitutionsStoreService = inject(PaymentInstitutionsStoreService); - private routingRulesService = inject(RoutingRulesService); - private destroyRef = inject(DestroyRef); - @Output() valid = new EventEmitter(); - @Output() valueChanges = new EventEmitter(); - @Input() value: Partial; - @Input() type: RoutingRulesType; - - form = this.fb.group({ - target: Target.PaymentInstitution, - paymentInstitution: '', - mainRulesetRefID: '', - mainDelegateDescription: 'Main delegate[party]', - }); - - target = Target; - - paymentInstitutions$ = this.paymentInstitutionsStoreService.paymentInstitutions$.pipe( - map((r) => sortBy(r, ['ref.id'])), - ); - rulesets$ = this.routingRulesService.rulesets$; - - get policiesId() { - return getPoliciesIdByType( - (this.form.value.paymentInstitution as PaymentInstitutionObject)?.data, - this.type, - ); - } - - constructor() { - this.form.controls['target'].valueChanges - .pipe(startWith(this.form.value.target), takeUntilDestroyed(this.destroyRef)) - .subscribe((target) => { - switch (target) { - case Target.Manual: - this.form.controls['paymentInstitution'].disable(); - this.form.controls['mainRulesetRefID'].enable(); - break; - case Target.PaymentInstitution: - this.form.controls['paymentInstitution'].enable(); - this.form.controls['mainRulesetRefID'].disable(); - break; - } - }); - this.form.valueChanges - .pipe( - startWith(this.form.value), - map( - ({ - target, - mainRulesetRefID, - paymentInstitution, - mainDelegateDescription, - }) => ({ - mainRulesetRefID: - target === Target.PaymentInstitution - ? getPoliciesIdByType( - (paymentInstitution as PaymentInstitutionObject)?.data, - this.type, - ) - : mainRulesetRefID, - paymentInstitutionRefID: - target === Target.PaymentInstitution - ? paymentInstitution?.ref?.id - : undefined, - mainDelegateDescription, - }), - ), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe((value) => this.valueChanges.emit(value)); - this.form.statusChanges - .pipe( - startWith(this.form.valid), - map(() => this.form.valid), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe((valid) => this.valid.emit(valid)); - } - - ngOnChanges({ value }: ComponentChanges) { - if (value) { - const { mainRulesetRefID, mainDelegateDescription } = value.currentValue || {}; - this.form.patchValue( - Object.assign( - {}, - !!mainRulesetRefID && { mainRulesetRefID, target: Target.Manual }, - !!mainDelegateDescription && { mainDelegateDescription }, - ), - ); - } - } - - getRulesetById(id: number) { - return this.routingRulesService.getRuleset(id); - } -} diff --git a/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.module.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.module.ts deleted file mode 100644 index 9769955b6..000000000 --- a/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { MatRadioModule } from '@angular/material/radio'; -import { MatSelectModule } from '@angular/material/select'; - -import { TargetRulesetFormComponent } from './target-ruleset-form.component'; - -@NgModule({ - imports: [ - CommonModule, - ReactiveFormsModule, - MatRadioModule, - MatFormFieldModule, - MatSelectModule, - MatDividerModule, - MatInputModule, - MatButtonModule, - ], - declarations: [TargetRulesetFormComponent], - exports: [TargetRulesetFormComponent], -}) -export class TargetRulesetFormModule {} diff --git a/src/app/parties/party/routing-rules/components/target-ruleset-form/types/target-ruleset.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/types/target-ruleset.ts deleted file mode 100644 index 1b31aa951..000000000 --- a/src/app/parties/party/routing-rules/components/target-ruleset-form/types/target-ruleset.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface TargetRuleset { - mainRulesetRefID: number; - mainDelegateDescription?: string; -} diff --git a/src/app/parties/party/routing-rules/components/target-ruleset-form/types/target.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/types/target.ts deleted file mode 100644 index 4b4bd0e2b..000000000 --- a/src/app/parties/party/routing-rules/components/target-ruleset-form/types/target.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum Target { - Manual = 'manual', - PaymentInstitution = 'paymentInstitution', -} diff --git a/src/app/parties/party/routing-rules/index.ts b/src/app/parties/party/routing-rules/index.ts deleted file mode 100644 index efccb17d6..000000000 --- a/src/app/parties/party/routing-rules/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './routing-rules.module'; diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html b/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html deleted file mode 100644 index b3281a633..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html +++ /dev/null @@ -1,36 +0,0 @@ - -
- - - - -
Routing ruleset
-
- - - - - - -
-
-
- - - - -
diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts deleted file mode 100644 index f108c9482..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { BehaviorSubject } from 'rxjs'; - -import { ChangeDetectionStrategy, Component, DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { UntypedFormBuilder } from '@angular/forms'; - -import { DialogSuperclass, NotifyLogService } from '@vality/matez'; - -import { TargetRuleset } from '../../components/target-ruleset-form'; -import { RoutingRulesService } from '../../services/routing-rules'; -import { RoutingRulesType } from '../../types/routing-rules-type'; - -@Component({ - templateUrl: 'attach-new-ruleset-dialog.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class AttachNewRulesetDialogComponent extends DialogSuperclass< - AttachNewRulesetDialogComponent, - { partyID: string; type: RoutingRulesType } -> { - private fb = inject(UntypedFormBuilder); - private routingRulesService = inject(RoutingRulesService); - private log = inject(NotifyLogService); - private destroyRef = inject(DestroyRef); - form = this.fb.group({ - ruleset: this.fb.group({ - name: 'submain ruleset[by shop id]', - description: '', - }), - }); - - targetRuleset$ = new BehaviorSubject(undefined); - targetRulesetValid$ = new BehaviorSubject(undefined); - - attach() { - const { mainRulesetRefID, mainDelegateDescription } = this.targetRuleset$.value; - this.routingRulesService - .attachPartyDelegateRuleset({ - partyID: this.dialogData.partyID, - mainRulesetRefID, - mainDelegateDescription, - ruleset: this.form.value.ruleset, - }) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe({ - next: () => this.dialogRef.close(), - error: (err) => this.log.error(err), - }); - } -} diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts deleted file mode 100644 index 7e2fdfe0a..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './attach-new-ruleset-dialog.component'; diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/index.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/index.ts deleted file mode 100644 index f00ef2c95..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './party-delegate-rulesets.component'; -export * from './party-delegate-rulesets.module'; -export * from './party-delegate-rulesets.service'; diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts deleted file mode 100644 index 65a285a9d..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { canActivateAuthRole } from '~/services'; - -import { PartyDelegateRulesetsComponent } from './party-delegate-rulesets.component'; -import { ROUTING_CONFIG } from './routing-config'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { - path: ':type', - children: [ - { - path: '', - component: PartyDelegateRulesetsComponent, - canActivate: [canActivateAuthRole], - data: ROUTING_CONFIG, - }, - { - path: '', - loadChildren: () => - import('../party-routing-ruleset').then( - (m) => m.PartyRoutingRulesetModule, - ), - }, - { - path: '', - loadChildren: () => - import('../routing-ruleset').then((m) => m.RoutingRulesetModule), - }, - ], - }, - { - path: '', - redirectTo: 'payment', - pathMatch: 'prefix', - }, - ]), - ], -}) -export class PartyDelegateRulesetsRoutingModule {} diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.html b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.html deleted file mode 100644 index 5179446bc..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.ts deleted file mode 100644 index 25ebfcc46..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { catchError, first, map } from 'rxjs/operators'; - -import { ChangeDetectionStrategy, Component, DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { ActivatedRoute, Router } from '@angular/router'; - -import { Column, DialogService, NotifyLogService } from '@vality/matez'; - -import { RoutingRulesStoreService } from '~/api/domain-config'; -import { createDomainObjectColumn } from '~/utils'; - -import { RoutingRulesListItem } from '../components/routing-rules-list'; -import { RoutingRulesTypeService } from '../routing-rules-type.service'; -import { RoutingRulesService } from '../services/routing-rules'; -import { RoutingRulesType } from '../types/routing-rules-type'; - -import { AttachNewRulesetDialogComponent } from './attach-new-ruleset-dialog'; -import { - DelegateWithPaymentInstitution, - PartyDelegateRulesetsService, -} from './party-delegate-rulesets.service'; - -@Component({ - selector: 'cc-party-delegate-rulesets', - templateUrl: 'party-delegate-rulesets.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - providers: [PartyDelegateRulesetsService, RoutingRulesTypeService], - standalone: false, -}) -export class PartyDelegateRulesetsComponent { - private partyDelegateRulesetsService = inject(PartyDelegateRulesetsService); - private routingRulesService = inject(RoutingRulesService); - private router = inject(Router); - private dialogService = inject(DialogService); - private routingRulesStoreService = inject(RoutingRulesStoreService); - private log = inject(NotifyLogService); - private route = inject(ActivatedRoute); - private destroyRef = inject(DestroyRef); - protected routingRulesTypeService = inject(RoutingRulesTypeService); - - columns: Column>[] = [ - { - field: 'partyDelegate', - cell: (d) => ({ - value: d.item.partyDelegate?.description || `#${d.item.partyDelegate?.ruleset?.id}`, - description: d.item.partyDelegate?.ruleset?.id, - click: () => this.navigateToPartyRuleset(d.parentRefId, d.delegateIdx), - }), - }, - createDomainObjectColumn( - (d) => ({ - ref: { payment_institution: d.item.paymentInstitution.ref }, - }), - { header: 'Payment Institution' }, - ), - createDomainObjectColumn( - (d) => ({ - ref: { routing_rules: d.item.mainRoutingRule.ref }, - }), - { header: 'Main Ruleset' }, - ), - ]; - isLoading$ = this.routingRulesStoreService.isLoading$; - data$ = this.partyDelegateRulesetsService.getDelegatesWithPaymentInstitution().pipe( - map((rules): RoutingRulesListItem[] => - rules.map((item) => ({ - parentRefId: item.mainRoutingRule?.ref?.id, - delegateIdx: item.mainRoutingRule?.data?.decisions?.delegates?.findIndex( - (d) => d === item.partyDelegate, - ), - item, - })), - ), - ); - - private get partyID() { - return this.route.snapshot.params['partyID'] as string; - } - - attachNewRuleset() { - this.dialogService - .open(AttachNewRulesetDialogComponent, { - partyID: this.partyID, - type: this.route.snapshot.params['type'], - }) - .afterClosed() - .pipe( - catchError((err) => { - this.log.error(err); - throw err; - }), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe(); - } - - navigateToPartyRuleset(parentRefId: number, delegateIdx: number) { - this.routingRulesService - .getRuleset(parentRefId) - .pipe(first(), takeUntilDestroyed(this.destroyRef)) - .subscribe((parent) => { - void this.router.navigate([ - 'parties', - this.partyID, - 'rr', - this.route.snapshot.params['type'] as RoutingRulesType, - parent.data.decisions.delegates[delegateIdx].ruleset.id, - ]); - }); - } -} diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.module.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.module.ts deleted file mode 100644 index 518ff0c26..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.module.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatPaginatorModule } from '@angular/material/paginator'; -import { MatProgressBarModule } from '@angular/material/progress-bar'; -import { MatRadioModule } from '@angular/material/radio'; -import { MatSelectModule } from '@angular/material/select'; -import { RouterModule } from '@angular/router'; - -import { DialogModule } from '@vality/matez'; - -import { PageLayoutModule } from '~/components/page-layout'; - -import { ChangeTargetDialogModule } from '../components/change-target-dialog'; -import { RoutingRulesListModule } from '../components/routing-rules-list'; -import { TargetRulesetFormModule } from '../components/target-ruleset-form'; - -import { AttachNewRulesetDialogComponent } from './attach-new-ruleset-dialog'; -import { PartyDelegateRulesetsRoutingModule } from './party-delegate-rulesets-routing.module'; -import { PartyDelegateRulesetsComponent } from './party-delegate-rulesets.component'; - -const EXPORTED_DECLARATIONS = [PartyDelegateRulesetsComponent, AttachNewRulesetDialogComponent]; - -@NgModule({ - imports: [ - PartyDelegateRulesetsRoutingModule, - MatButtonModule, - CommonModule, - RouterModule, - MatCardModule, - MatIconModule, - MatPaginatorModule, - MatMenuModule, - ReactiveFormsModule, - MatFormFieldModule, - MatDividerModule, - MatSelectModule, - MatRadioModule, - MatInputModule, - MatProgressBarModule, - ChangeTargetDialogModule, - TargetRulesetFormModule, - RoutingRulesListModule, - DialogModule, - PageLayoutModule, - ], - declarations: EXPORTED_DECLARATIONS, - exports: EXPORTED_DECLARATIONS, -}) -export class PartyDelegateRulesetsModule {} diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.service.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.service.ts deleted file mode 100644 index fa87b8fc1..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.service.ts +++ /dev/null @@ -1,104 +0,0 @@ -import isNil from 'lodash-es/isNil'; -import { Observable, combineLatest, of } from 'rxjs'; -import { map, startWith, switchMap } from 'rxjs/operators'; - -import { Injectable, inject } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; - -import { - PartyConfigRef, - PaymentInstitutionObject, - RoutingDelegate, - RoutingRulesObject, -} from '@vality/domain-proto/domain'; - -import { PaymentInstitutionsStoreService } from '~/api/domain-config'; - -import { RoutingRulesService } from '../services/routing-rules'; -import { RoutingRulesType } from '../types/routing-rules-type'; -import { getPoliciesIdByType } from '../utils/get-policies-id-by-type'; - -export interface DelegateWithPaymentInstitution { - partyDelegate: RoutingDelegate; - paymentInstitution: PaymentInstitutionObject; - mainRoutingRule: RoutingRulesObject; -} - -@Injectable() -export class PartyDelegateRulesetsService { - private paymentInstitutionsStoreService = inject(PaymentInstitutionsStoreService); - private route = inject(ActivatedRoute); - private routingRulesService = inject(RoutingRulesService); - - private partyID$ = this.route.params.pipe( - startWith(this.route.snapshot.params), - map((p) => p['partyID']), - ) as Observable; - private routingRulesType$ = this.route.params.pipe( - startWith(this.route.snapshot.params), - map((p) => p['type']), - ) as Observable; - - getDelegatesWithPaymentInstitution( - type?: RoutingRulesType, - partyId?: PartyConfigRef['id'], - ): Observable { - return combineLatest([ - this.getPaymentInstitutionsWithRoutingRule(type), - isNil(partyId) ? this.partyID$ : of(partyId), - ]).pipe( - map(([paymentInstitutionsWithRoutingRule, partyID]) => - paymentInstitutionsWithRoutingRule - .map(({ routingRule: mainRoutingRule, paymentInstitution }) => ({ - mainRoutingRule, - paymentInstitution, - delegates: mainRoutingRule?.data?.decisions?.delegates - ?.map((d) => - d?.allowed?.condition?.party?.party_ref?.id === partyID - ? d - : undefined, - ) - ?.filter((d) => d), - })) - .filter(({ delegates }) => delegates?.length) - .reduce< - { - partyDelegate: RoutingDelegate; - paymentInstitution: PaymentInstitutionObject; - mainRoutingRule: RoutingRulesObject; - }[] - >( - (acc, { delegates, ...rest }) => [ - ...acc, - ...delegates.map((partyDelegate) => ({ ...rest, partyDelegate })), - ], - [], - ), - ), - ); - } - - private getPaymentInstitutionsWithRoutingRule(type?: RoutingRulesType) { - return combineLatest([ - this.paymentInstitutionsStoreService.paymentInstitutions$, - this.routingRulesType$.pipe(map((routeType) => type ?? routeType)), - ]).pipe( - switchMap(([paymentInstitutions, routingRulesType]) => { - return combineLatest( - paymentInstitutions.map((paymentInstitution) => - this.routingRulesService - .getRuleset( - getPoliciesIdByType(paymentInstitution?.data, routingRulesType), - ) - .pipe( - map((routingRule) => ({ - paymentInstitution, - routingRule, - })), - ), - ), - ); - }), - ); - } -} diff --git a/src/app/parties/party/routing-rules/party-delegate-rulesets/routing-config.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/routing-config.ts deleted file mode 100644 index 919ab96d5..000000000 --- a/src/app/parties/party/routing-rules/party-delegate-rulesets/routing-config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { RoutingConfig, Services } from '~/services'; - -export const ROUTING_CONFIG: RoutingConfig = { - services: [Services.DMT], -}; diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html b/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html deleted file mode 100644 index c97328bbb..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html +++ /dev/null @@ -1,39 +0,0 @@ - -
- @if (dialogData.type === 'payment') { - - } - @if (dialogData.type === 'withdrawal') { - - } - -
Routing ruleset
-
- - - - - - -
-
- - - - -
diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts deleted file mode 100644 index 244c54077..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { Component, DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { FormBuilder } from '@angular/forms'; - -import { - ShopConfigObject, - ShopID, - WalletConfigObject, - WalletID, -} from '@vality/domain-proto/domain'; -import { DialogResponseStatus, DialogSuperclass, NotifyLogService, Option } from '@vality/matez'; - -import { RoutingRulesService } from '../../services/routing-rules'; -import { RoutingRulesType } from '../../types/routing-rules-type'; - -@Component({ - templateUrl: 'add-party-routing-rule-dialog.component.html', - standalone: false, -}) -export class AddPartyRoutingRuleDialogComponent extends DialogSuperclass< - AddPartyRoutingRuleDialogComponent, - { - refID: number; - partyID: string; - shops: ShopConfigObject[]; - wallets: WalletConfigObject[]; - type: RoutingRulesType; - } -> { - private fb = inject(FormBuilder); - private routingRulesService = inject(RoutingRulesService); - private log = inject(NotifyLogService); - private dr = inject(DestroyRef); - - form = this.fb.group<{ shopID: string; walletID: string; name: string; description: string }>({ - shopID: null, - walletID: null, - name: 'Ruleset[candidates]', - description: '', - }); - - shopsOptions: Option[] = this.dialogData.shops.map((s) => ({ - value: s.ref.id, - label: s.data.name, - description: s.ref.id, - })); - - walletsOptions: Option[] = this.dialogData.wallets.map((s) => ({ - value: s.ref.id, - label: s.data.name, - description: s.ref.id, - })); - - add() { - const { shopID, walletID, name, description } = this.form.value; - this.routingRulesService - .addRuleset({ - name, - description, - partyRulesetRefID: this.dialogData.refID, - partyID: this.dialogData.partyID, - definition: - this.dialogData.type === RoutingRulesType.Payment - ? { shop_is: shopID } - : { wallet_is: walletID }, - }) - .pipe(takeUntilDestroyed(this.dr)) - .subscribe({ - next: () => this.dialogRef.close({ status: DialogResponseStatus.Success }), - error: this.log.error, - }); - } -} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts deleted file mode 100644 index 4e6701f79..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatRadioModule } from '@angular/material/radio'; -import { MatSelectModule } from '@angular/material/select'; - -import { DialogModule, SelectFieldModule } from '@vality/matez'; - -import { AddPartyRoutingRuleDialogComponent } from './add-party-routing-rule-dialog.component'; - -@NgModule({ - imports: [ - CommonModule, - MatButtonModule, - MatDialogModule, - MatDividerModule, - ReactiveFormsModule, - MatFormFieldModule, - MatInputModule, - MatIconModule, - MatSelectModule, - MatRadioModule, - MatAutocompleteModule, - DialogModule, - SelectFieldModule, - ], - declarations: [AddPartyRoutingRuleDialogComponent], - exports: [AddPartyRoutingRuleDialogComponent], -}) -export class AddPartyRoutingRuleDialogModule {} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/index.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/index.ts deleted file mode 100644 index 84f89ef6f..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './add-party-routing-rule-dialog.component'; -export * from './add-party-routing-rule-dialog.module'; diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/index.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/index.ts deleted file mode 100644 index 924738305..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './party-routing-ruleset.module'; diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/index.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/index.ts deleted file mode 100644 index 1ce706119..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './initialize-routing-rules-dialog.component'; -export * from './initialize-routing-rules-dialog.module'; diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html b/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html deleted file mode 100644 index 0606b140b..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html +++ /dev/null @@ -1,29 +0,0 @@ - -
- - - - -
Routing ruleset
-
- - - - - - -
-
- - - - -
diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts deleted file mode 100644 index a4e5159fa..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Component, DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { UntypedFormBuilder } from '@angular/forms'; - -import { DialogSuperclass, NotifyLogService } from '@vality/matez'; - -import { RoutingRulesService } from '../../services/routing-rules'; - -@Component({ - selector: 'cc-initialize-routing-rules-dialog', - templateUrl: 'initialize-routing-rules-dialog.component.html', - standalone: false, -}) -export class InitializeRoutingRulesDialogComponent extends DialogSuperclass< - InitializeRoutingRulesDialogComponent, - { partyID: string; refID: number } -> { - private fb = inject(UntypedFormBuilder); - private routingRulesService = inject(RoutingRulesService); - private log = inject(NotifyLogService); - private destroyRef = inject(DestroyRef); - form = this.fb.group({ - delegateDescription: 'Main delegate[party]', - name: 'submain ruleset[by shop id]', - description: '', - }); - - init() { - const { delegateDescription, name, description } = this.form.value; - this.routingRulesService - .addPartyRuleset({ - name, - partyID: this.dialogData.partyID, - mainRulesetRefID: this.dialogData.refID, - description, - delegateDescription, - }) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe(() => this.dialogRef.close(), this.log.error); - } -} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts deleted file mode 100644 index a4814cbba..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatRadioModule } from '@angular/material/radio'; -import { MatSelectModule } from '@angular/material/select'; - -import { DialogModule } from '@vality/matez'; - -import { InitializeRoutingRulesDialogComponent } from './initialize-routing-rules-dialog.component'; - -@NgModule({ - imports: [ - CommonModule, - MatButtonModule, - MatDialogModule, - MatDividerModule, - ReactiveFormsModule, - MatFormFieldModule, - MatInputModule, - MatIconModule, - MatSelectModule, - MatRadioModule, - MatAutocompleteModule, - DialogModule, - ], - declarations: [InitializeRoutingRulesDialogComponent], - exports: [InitializeRoutingRulesDialogComponent], -}) -export class InitializeRoutingRulesDialogModule {} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset-routing.module.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset-routing.module.ts deleted file mode 100644 index da00ef86e..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset-routing.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { canActivateAuthRole } from '~/services'; - -import { PartyRoutingRulesetComponent } from './party-routing-ruleset.component'; -import { ROUTING_CONFIG } from './routing-config'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { - path: ':partyRefID', - component: PartyRoutingRulesetComponent, - canActivate: [canActivateAuthRole], - data: ROUTING_CONFIG, - }, - ]), - ], -}) -export class PartyRoutingRulesetRoutingModule {} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.html b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.html deleted file mode 100644 index 35f5c78aa..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - @if ((routingRulesTypeService.routingRulesType$ | async) === 'payment') { - - } - @if ((routingRulesTypeService.routingRulesType$ | async) === 'withdrawal') { - - } - diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.scss b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.scss deleted file mode 100644 index 2b3372bad..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.scss +++ /dev/null @@ -1,10 +0,0 @@ -.empty-party-delegate { - display: flex; - flex-direction: column; - align-items: center; - gap: 24px; -} - -.init { - width: 168px; -} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.ts deleted file mode 100644 index a82ccb79e..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.ts +++ /dev/null @@ -1,278 +0,0 @@ -import { combineLatest } from 'rxjs'; -import { filter, first, map, shareReplay, startWith, switchMap, take } from 'rxjs/operators'; - -import { Component, DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { ActivatedRoute, Router } from '@angular/router'; - -import { RoutingDelegate } from '@vality/domain-proto/domain'; -import { - Column, - DialogResponseStatus, - DialogService, - NotifyLogService, - compareDifferentTypes, -} from '@vality/matez'; - -import { RoutingRulesStoreService } from '~/api/domain-config'; -import { SidenavInfoService } from '~/components/sidenav-info'; -import { DomainObjectCardComponent } from '~/components/thrift-api-crud/domain'; -import { createDomainObjectColumn, createShopColumn, createWalletColumn } from '~/utils'; - -import { RoutingRulesListItem } from '../components/routing-rules-list'; -import { PartyDelegateRulesetsService } from '../party-delegate-rulesets'; -import { RoutingRulesTypeService } from '../routing-rules-type.service'; - -import { AddPartyRoutingRuleDialogComponent } from './add-party-routing-rule-dialog'; -import { InitializeRoutingRulesDialogComponent } from './initialize-routing-rules-dialog'; -import { PartyRoutingRulesetService } from './party-routing-ruleset.service'; - -@Component({ - selector: 'cc-party-routing-ruleset', - templateUrl: 'party-routing-ruleset.component.html', - styleUrls: ['party-routing-ruleset.component.scss'], - providers: [PartyRoutingRulesetService, RoutingRulesTypeService, PartyDelegateRulesetsService], - standalone: false, -}) -export class PartyRoutingRulesetComponent { - private dialogService = inject(DialogService); - private partyRoutingRulesetService = inject(PartyRoutingRulesetService); - private router = inject(Router); - private route = inject(ActivatedRoute); - private routingRulesStoreService = inject(RoutingRulesStoreService); - private destroyRef = inject(DestroyRef); - private sidenavInfoService = inject(SidenavInfoService); - private log = inject(NotifyLogService); - protected routingRulesTypeService = inject(RoutingRulesTypeService); - - partyRuleset$ = this.partyRoutingRulesetService.partyRuleset$; - partyID$ = this.partyRoutingRulesetService.partyID$; - isLoading$ = this.routingRulesStoreService.isLoading$; - upLink$ = combineLatest([this.partyID$, this.routingRulesTypeService.routingRulesType$]).pipe( - map(([partyID, routingRulesType]) => `/parties/${partyID}/rr/${routingRulesType}`), - shareReplay({ refCount: true, bufferSize: 1 }), - ); - - shopsDisplayedColumns: Column>[] = [ - createShopColumn( - (d) => - this.getShopByDelegate(d.item).pipe( - map((shop) => ({ shopId: shop?.ref.id, partyId: shop?.data.party_ref.id })), - ), - { - cell: (d) => ({ - click: () => this.navigateToDelegate(d.parentRefId, d.delegateIdx), - }), - }, - ), - { - field: 'currency', - cell: (d) => - this.getShopByDelegate(d.item).pipe( - map((shop) => ({ - value: shop.data.account.currency.symbolic_code, - })), - ), - }, - createDomainObjectColumn( - (d) => - this.getShopByDelegate(d.item).pipe( - map((shop) => ({ ref: { term_set_hierarchy: shop.data.terms } })), - ), - { - field: 'terms', - }, - ), - { - field: 'id', - header: 'Delegate (Ruleset Ref ID)', - cell: (d) => ({ - value: d.item?.description || `#${d.item?.ruleset?.id}`, - description: d.item?.ruleset?.id, - click: () => this.navigateToDelegate(d.parentRefId, d.delegateIdx), - }), - hidden: true, - }, - ]; - walletsDisplayedColumns: Column>[] = [ - createWalletColumn( - (d) => - this.partyRoutingRulesetService.partyID$.pipe( - map((partyId) => ({ - id: d.item?.allowed?.condition?.party?.definition?.wallet_is, - partyId, - })), - ), - { - cell: (d) => ({ - click: () => this.navigateToDelegate(d.parentRefId, d.delegateIdx), - }), - }, - ), - { - field: 'id', - header: 'Delegate (Ruleset Ref ID)', - cell: (d) => ({ - value: d.item?.description || `#${d.item?.ruleset?.id}`, - description: d.item?.ruleset?.id, - click: () => this.navigateToDelegate(d.parentRefId, d.delegateIdx), - }), - hidden: true, - }, - ]; - shopsData$ = this.partyRuleset$.pipe( - filter(Boolean), - map((ruleset): RoutingRulesListItem[] => - ruleset.data.decisions.delegates - .filter((d) => d?.allowed?.condition?.party?.definition?.shop_is) - .map((delegate, delegateIdx) => ({ - parentRefId: ruleset.ref.id, - delegateIdx, - item: delegate, - })), - ), - startWith([]), - takeUntilDestroyed(this.destroyRef), - shareReplay(1), - ); - walletsData$ = this.partyRuleset$.pipe( - filter(Boolean), - map((ruleset): RoutingRulesListItem[] => - ruleset.data.decisions.delegates - .filter((d) => d?.allowed?.condition?.party?.definition?.wallet_is) - .map((delegate, delegateIdx) => ({ - parentRefId: ruleset.ref.id, - delegateIdx, - item: delegate, - })), - ), - startWith([]), - takeUntilDestroyed(this.destroyRef), - shareReplay(1), - ); - - constructor() { - combineLatest([this.partyRoutingRulesetService.refID$, this.upLink$]) - .pipe(first()) - .subscribe(([refID, upLink]) => { - if (!refID) { - this.log.error('Main ref id not found'); - this.router.navigate([upLink]); - } - }); - } - - add() { - this.partyRuleset$.pipe(take(1)).subscribe((partyRuleset) => { - if (partyRuleset) { - this.addPartyRule(); - } else { - this.initialize(); - } - }); - } - - navigateToDelegate(parentRefId: number, delegateIdx: number) { - this.partyRoutingRulesetService.partyRuleset$ - .pipe(take(1), takeUntilDestroyed(this.destroyRef)) - .subscribe((ruleset) => - this.router.navigate([ - 'parties', - this.route.snapshot.params['partyID'], - 'rr', - this.route.snapshot.params['type'], - parentRefId, - 'delegate', - ruleset?.data?.decisions?.delegates?.[delegateIdx]?.ruleset?.id, - ]), - ); - } - - openRefId() { - this.partyRuleset$.pipe(take(1), filter(Boolean)).subscribe(({ ref }) => { - this.sidenavInfoService.toggle(DomainObjectCardComponent, { - ref: { routing_rules: { id: Number(ref.id) } }, - }); - }); - } - - private initialize() { - combineLatest([ - this.partyRoutingRulesetService.partyID$, - this.partyRoutingRulesetService.refID$, - ]) - .pipe( - take(1), - switchMap(([partyID, refID]) => - this.dialogService - .open(InitializeRoutingRulesDialogComponent, { partyID, refID }) - .afterClosed(), - ), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe({ - next: () => { - this.partyRoutingRulesetService.reload(); - }, - }); - } - - private addPartyRule() { - combineLatest([ - this.partyRoutingRulesetService.refID$, - this.partyRoutingRulesetService.shops$, - this.partyRoutingRulesetService.wallets$, - this.routingRulesTypeService.routingRulesType$, - this.partyRoutingRulesetService.partyID$, - this.partyRuleset$, - ]) - .pipe( - take(1), - switchMap(([refID, shops, wallets, type, partyID, ruleset]) => { - return this.dialogService - .open(AddPartyRoutingRuleDialogComponent, { - refID, - shops: shops - .filter((s) => - ruleset.data.decisions.delegates.every( - (d) => - d?.allowed?.condition?.party?.definition?.shop_is !== - s.ref.id, - ), - ) - .sort((a, b) => compareDifferentTypes(a.data.name, b.data.name)), - wallets: wallets - .filter((w) => - ruleset.data.decisions.delegates.every( - (d) => - d?.allowed?.condition?.party?.definition?.wallet_is !== - w.ref.id, - ), - ) - .sort((a, b) => compareDifferentTypes(a.data.name, b.data.name)), - type, - partyID, - }) - .afterClosed(); - }), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe({ - next: (res) => { - if (res.status === DialogResponseStatus.Success) { - this.partyRoutingRulesetService.reload(); - } - }, - }); - } - - private getShopByDelegate(delegate: RoutingDelegate) { - return this.partyRoutingRulesetService.shops$.pipe( - map((shops) => - shops.find( - (s) => s.ref.id === delegate?.allowed?.condition?.party?.definition?.shop_is, - ), - ), - ); - } -} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.module.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.module.ts deleted file mode 100644 index a8bfa5120..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.module.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatPaginatorModule } from '@angular/material/paginator'; -import { MatProgressBarModule } from '@angular/material/progress-bar'; -import { MatRadioModule } from '@angular/material/radio'; -import { MatSelectModule } from '@angular/material/select'; -import { RouterModule } from '@angular/router'; - -import { PageLayoutModule } from '~/components/page-layout'; - -import { ChangeTargetDialogModule } from '../components/change-target-dialog'; -import { RoutingRulesListModule } from '../components/routing-rules-list'; - -import { AddPartyRoutingRuleDialogModule } from './add-party-routing-rule-dialog'; -import { InitializeRoutingRulesDialogModule } from './initialize-routing-rules-dialog'; -import { PartyRoutingRulesetRoutingModule } from './party-routing-ruleset-routing.module'; -import { PartyRoutingRulesetComponent } from './party-routing-ruleset.component'; - -@NgModule({ - imports: [ - PartyRoutingRulesetRoutingModule, - CommonModule, - MatButtonModule, - MatDialogModule, - MatDividerModule, - ReactiveFormsModule, - MatFormFieldModule, - MatInputModule, - RouterModule, - MatIconModule, - MatMenuModule, - MatPaginatorModule, - MatCardModule, - MatSelectModule, - MatRadioModule, - MatExpansionModule, - AddPartyRoutingRuleDialogModule, - InitializeRoutingRulesDialogModule, - MatProgressBarModule, - ChangeTargetDialogModule, - RoutingRulesListModule, - PageLayoutModule, - ], - declarations: [PartyRoutingRulesetComponent], -}) -export class PartyRoutingRulesetModule {} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.service.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.service.ts deleted file mode 100644 index 36c7c878b..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.service.ts +++ /dev/null @@ -1,69 +0,0 @@ -import isNil from 'lodash-es/isNil'; -import { Observable, combineLatest, of } from 'rxjs'; -import { map, shareReplay, switchMap, take, tap } from 'rxjs/operators'; - -import { DestroyRef, Injectable, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { ActivatedRoute } from '@angular/router'; - -import { NotifyLogService } from '@vality/matez'; - -import { PartiesStoreService } from '~/api/payment-processing'; - -import { PartyDelegateRulesetsService } from '../party-delegate-rulesets'; -import { RoutingRulesService } from '../services/routing-rules'; - -export const MAIN_REF = 'main'; - -@Injectable() -export class PartyRoutingRulesetService { - private route = inject(ActivatedRoute); - private partiesStoreService = inject(PartiesStoreService); - private routingRulesService = inject(RoutingRulesService); - private dr = inject(DestroyRef); - private partyDelegateRulesetsService = inject(PartyDelegateRulesetsService); - private log = inject(NotifyLogService); - - partyID$ = this.route.params.pipe( - map((r) => r['partyID']), - takeUntilDestroyed(this.dr), - shareReplay(1), - ) as Observable; - refID$ = this.route.params.pipe( - map((r) => r['partyRefID']), - switchMap((r) => - r === MAIN_REF - ? this.partyDelegateRulesetsService.getDelegatesWithPaymentInstitution().pipe( - take(1), - map((r) => (r.length === 1 ? r[0].partyDelegate.ruleset.id : null)), - ) - : of(Number(r)), - ), - tap((id) => { - if (isNaN(id) || isNil(id)) { - this.log.error('Unknown delegate'); - } - }), - takeUntilDestroyed(this.dr), - shareReplay(1), - ); - - shops$ = this.partyID$.pipe( - switchMap((id) => this.partiesStoreService.getPartyShops(id).value$), - shareReplay({ refCount: true, bufferSize: 1 }), - ); - wallets$ = this.partyID$.pipe( - switchMap((id) => this.partiesStoreService.getPartyWallets(id).value$), - shareReplay({ refCount: true, bufferSize: 1 }), - ); - - partyRuleset$ = combineLatest([this.routingRulesService.rulesets$, this.refID$]).pipe( - map(([rules, refID]) => rules.find((r) => r?.ref?.id === refID)), - takeUntilDestroyed(this.dr), - shareReplay(1), - ); - - reload() { - this.routingRulesService.reload(); - } -} diff --git a/src/app/parties/party/routing-rules/party-routing-ruleset/routing-config.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/routing-config.ts deleted file mode 100644 index 919ab96d5..000000000 --- a/src/app/parties/party/routing-rules/party-routing-ruleset/routing-config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { RoutingConfig, Services } from '~/services'; - -export const ROUTING_CONFIG: RoutingConfig = { - services: [Services.DMT], -}; diff --git a/src/app/parties/party/routing-rules/routing-rules-type.service.ts b/src/app/parties/party/routing-rules/routing-rules-type.service.ts deleted file mode 100644 index 132f471b0..000000000 --- a/src/app/parties/party/routing-rules/routing-rules-type.service.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Observable } from 'rxjs'; -import { map, startWith } from 'rxjs/operators'; - -import { Injectable, inject } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; - -import { getEnumValues } from '@vality/matez'; - -import { RoutingRulesType } from './types/routing-rules-type'; - -@Injectable() -export class RoutingRulesTypeService { - private route = inject(ActivatedRoute); - routingRulesType$ = this.route.params.pipe( - startWith(this.route.snapshot.params), - map((p) => (getEnumValues(RoutingRulesType).includes(p['type']) ? p['type'] : null)), - ) as Observable; -} diff --git a/src/app/parties/party/routing-rules/routing-rules.module.ts b/src/app/parties/party/routing-rules/routing-rules.module.ts deleted file mode 100644 index cdfb7e1b9..000000000 --- a/src/app/parties/party/routing-rules/routing-rules.module.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { NgModule } from '@angular/core'; - -import { PartyDelegateRulesetsModule } from './party-delegate-rulesets'; - -@NgModule({ - imports: [PartyDelegateRulesetsModule], -}) -export class RoutingRulesModule {} diff --git a/src/app/parties/party/routing-rules/routing-ruleset/index.ts b/src/app/parties/party/routing-rules/routing-ruleset/index.ts deleted file mode 100644 index 9b2055501..000000000 --- a/src/app/parties/party/routing-rules/routing-ruleset/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './routing-ruleset.module'; diff --git a/src/app/parties/party/routing-rules/routing-ruleset/routing-config.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-config.ts deleted file mode 100644 index 919ab96d5..000000000 --- a/src/app/parties/party/routing-rules/routing-ruleset/routing-config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { RoutingConfig, Services } from '~/services'; - -export const ROUTING_CONFIG: RoutingConfig = { - services: [Services.DMT], -}; diff --git a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset-routing.module.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset-routing.module.ts deleted file mode 100644 index ff5979916..000000000 --- a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset-routing.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { canActivateAuthRole } from '~/services'; - -import { ROUTING_CONFIG } from './routing-config'; -import { RoutingRulesetComponent } from './routing-ruleset.component'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { - path: ':partyRefID/delegate/:refID', - component: RoutingRulesetComponent, - canActivate: [canActivateAuthRole], - data: ROUTING_CONFIG, - }, - ]), - ], -}) -export class RoutingRulesetRoutingModule {} diff --git a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.html b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.html deleted file mode 100644 index 8de5cfc70..000000000 --- a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.ts deleted file mode 100644 index 654aca32d..000000000 --- a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.ts +++ /dev/null @@ -1,377 +0,0 @@ -import { round } from 'lodash-es'; -import cloneDeep from 'lodash-es/cloneDeep'; -import { Observable, combineLatest, filter } from 'rxjs'; -import { first, map, switchMap, take, withLatestFrom } from 'rxjs/operators'; - -import { Component, DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { Sort } from '@angular/material/sort'; -import { ActivatedRoute } from '@angular/router'; - -import { RoutingCandidate } from '@vality/domain-proto/domain'; -import { - Column, - DialogResponseStatus, - DialogService, - DragDrop, - NotifyLogService, - correctPriorities, - createMenuColumn, -} from '@vality/matez'; -import { toJson } from '@vality/ng-thrift'; - -import { DomainService, RoutingRulesStoreService } from '~/api/domain-config'; -import { CandidateCardComponent } from '~/components/candidate-card/candidate-card.component'; -import { SidenavInfoService } from '~/components/sidenav-info'; -import { - DomainThriftFormDialogComponent, - UpdateThriftDialogComponent, -} from '~/components/thrift-api-crud'; -import { DomainObjectCardComponent } from '~/components/thrift-api-crud/domain'; -import { createDomainObjectColumn, createPredicateColumn, getPredicateBoolean } from '~/utils'; - -import { RoutingRulesService } from '../services/routing-rules'; -import { RoutingRulesType } from '../types/routing-rules-type'; -import { changeCandidatesAllowed } from '../utils/toggle-candidate-allowed'; - -import { RoutingRulesetService } from './routing-ruleset.service'; - -@Component({ - templateUrl: 'routing-ruleset.component.html', - providers: [RoutingRulesetService], - standalone: false, -}) -export class RoutingRulesetComponent { - private dialog = inject(DialogService); - private routingRulesetService = inject(RoutingRulesetService); - private routingRulesService = inject(RoutingRulesService); - private routingRulesStoreService = inject(RoutingRulesStoreService); - private domainService = inject(DomainService); - private log = inject(NotifyLogService); - private route = inject(ActivatedRoute); - private sidenavInfoService = inject(SidenavInfoService); - private destroyRef = inject(DestroyRef); - - ruleset$ = this.routingRulesetService.ruleset$; - partyID$ = this.routingRulesetService.partyID$; - partyRulesetRefID$ = this.routingRulesetService.partyRulesetRefID$; - routingRulesType$ = this.route.params.pipe( - map((p) => p['type']), - ) as Observable; - candidates$ = this.routingRulesetService.ruleset$.pipe(map((r) => r.data.decisions.candidates)); - isLoading$ = this.routingRulesStoreService.isLoading$; - - columns: Column[] = [ - createDomainObjectColumn((d) => ({ ref: { terminal: d.terminal } }), { - header: 'Terminal', - cell: (d) => - this.getCandidateIdx(d).pipe( - map((idx) => ({ - click: () => { - this.routingRulesetService.ruleset$ - .pipe(first()) - .subscribe((ruleset) => { - this.sidenavInfoService.toggle(CandidateCardComponent, { - idx, - ref: ruleset.ref, - }); - }); - }, - })), - ), - }), - { field: 'priority' }, - { - field: 'weight', - cell: (d) => - this.candidates$.pipe( - map((candidates) => ({ - value: `${round( - ((d.weight || 0) / - candidates - .filter((c) => c.priority === d.priority) - .reduce((sum, c) => sum + (c.weight || 0), 0)) * - 100, - 2, - )}%`, - })), - ), - }, - { - field: 'candidate', - cell: (d) => - this.getCandidateIdx(d).pipe( - map((idx) => ({ - value: `#${idx + 1}`, - description: d.description, - click: () => { - this.routingRulesetService.ruleset$ - .pipe(first()) - .subscribe((ruleset) => { - this.sidenavInfoService.toggle(CandidateCardComponent, { - idx, - ref: ruleset.ref, - }); - }); - }, - })), - ), - hidden: true, - }, - createPredicateColumn( - (d) => - combineLatest([ - this.domainService.get({ terminal: { id: d.terminal.id } }), - this.routingRulesType$, - ]).pipe( - map(([terminal, type]) => { - const terms = terminal?.object?.terminal?.data?.terms; - return { - predicate: - type === RoutingRulesType.Payment - ? terms?.payments?.global_allow - : terms?.wallet?.withdrawals?.global_allow, - }; - }), - ), - { header: 'Global Allow' }, - ), - createPredicateColumn( - (d) => ({ - predicate: d.allowed, - toggle: () => { - this.getCandidateIdx(d) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe((idx) => { - void this.toggleAllow(idx); - }); - }, - }), - { - header: 'Allowed', - }, - ), - { - field: 'pin', - cell: (d) => ({ - value: JSON.stringify(toJson(d.pin?.features)), - }), - hidden: true, - }, - createMenuColumn((d) => ({ - items: [ - { - label: 'Edit', - click: () => { - this.getCandidateIdx(d) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe((idx) => { - this.editRule(idx); - }); - }, - }, - { - label: 'Duplicate', - click: () => { - this.getCandidateIdx(d) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe((idx) => { - void this.duplicateRule(idx); - }); - }, - }, - { - label: getPredicateBoolean(d.allowed) ? 'Deny' : 'Allow', - click: () => { - this.getCandidateIdx(d) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe((idx) => { - void this.toggleAllow(idx); - }); - }, - }, - { - label: 'Remove', - click: () => { - this.getCandidateIdx(d) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe((idx) => { - void this.removeRule(idx); - }); - }, - }, - ], - })), - ]; - sort: Sort = { active: 'priority', direction: 'desc' }; - - addRule() { - this.routingRulesetService.refID$ - .pipe( - first(), - switchMap((refId) => - this.dialog - .open(DomainThriftFormDialogComponent, { - type: 'RoutingCandidate', - title: 'Add routing candidate', - object: { allowed: { all_of: new Set([{ constant: true }]) } }, - action: (params) => this.routingRulesService.addRule(refId, params), - }) - .afterClosed(), - ), - ) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe({ - next: (res) => { - if (res.status === DialogResponseStatus.Success) { - this.routingRulesStoreService.reload(); - this.log.successOperation('create', 'Routing rule'); - } - }, - error: (err) => { - this.log.error(err, 'Error while adding routing rule'); - }, - }); - } - - editRule(idx: number) { - this.routingRulesetService.refID$ - .pipe( - first(), - switchMap((refId) => this.routingRulesService.getCandidate(refId, idx)), - withLatestFrom(this.routingRulesetService.refID$), - switchMap(([candidate, refId]) => - this.dialog - .open(DomainThriftFormDialogComponent, { - type: 'RoutingCandidate', - title: `Edit routing candidate #${idx + 1}`, - object: candidate, - action: (newCandidate) => - this.routingRulesService.updateRules([ - { refId, candidateIdx: idx, newCandidate }, - ]), - }) - .afterClosed(), - ), - ) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe({ - next: (res) => { - if (res.status === DialogResponseStatus.Success) { - this.routingRulesStoreService.reload(); - this.log.successOperation('update', 'Routing rule'); - } - }, - error: (err) => { - this.log.error(err); - }, - }); - } - - duplicateRule(idx: number) { - this.routingRulesetService.refID$ - .pipe( - first(), - switchMap((refId) => this.routingRulesService.getCandidate(refId, idx)), - withLatestFrom(this.routingRulesetService.refID$), - switchMap(([candidate, refId]) => - this.dialog - .open(DomainThriftFormDialogComponent, { - type: 'RoutingCandidate', - title: 'Add routing candidate', - object: candidate, - actionType: 'create', - action: (params) => this.routingRulesService.addRule(refId, params), - }) - .afterClosed(), - ), - ) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe({ - next: (res) => { - if (res.status === DialogResponseStatus.Success) { - this.routingRulesStoreService.reload(); - this.log.successOperation('create', 'Routing rule'); - } - }, - error: (err) => { - this.log.error(err); - }, - }); - } - - toggleAllow(candidateIdx: number) { - this.routingRulesetService.refID$ - .pipe(first(), takeUntilDestroyed(this.destroyRef)) - .subscribe((refId) => { - changeCandidatesAllowed([{ refId, candidateIdx }]); - }); - } - - removeRule(idx: number) { - this.routingRulesetService.removeRule(idx); - } - - getCandidateIdx(candidate: RoutingCandidate) { - return this.candidates$.pipe( - map((candidates) => candidates.findIndex((c) => c === candidate)), - first(), - ); - } - - drop(e: DragDrop) { - const prevPriorities = e.currentData.map((d) => d.priority); - const resPriorities = - e.sort.direction === 'desc' - ? correctPriorities(prevPriorities) - : correctPriorities(prevPriorities.reverse()).reverse(); - this.candidates$ - .pipe( - first(), - switchMap((candidates) => - this.dialog - .open(UpdateThriftDialogComponent, { - object: candidates.map((c) => ({ - ...c, - priority: resPriorities[e.currentData.findIndex((d) => d === c)], - })), - prevObject: candidates, - }) - .afterClosed() - .pipe(filter((res) => res.status === DialogResponseStatus.Success)), - ), - withLatestFrom(this.routingRulesetService.ruleset$), - switchMap( - ([ - { - data: { object: candidates }, - }, - ruleset, - ]) => { - const newRuleset = cloneDeep(ruleset); - newRuleset.data.decisions.candidates = candidates as RoutingCandidate[]; - return this.routingRulesStoreService.commit([ - { update: { object: { routing_rules: newRuleset } } }, - ]); - }, - ), - ) - .subscribe({ - next: () => { - this.log.successOperation('update', 'candidates'); - this.routingRulesStoreService.reload(); - }, - error: (err) => { - this.log.error(err); - }, - }); - } - - openRefId() { - this.ruleset$.pipe(take(1), filter(Boolean)).subscribe(({ ref }) => { - this.sidenavInfoService.toggle(DomainObjectCardComponent, { - ref: { routing_rules: { id: Number(ref.id) } }, - }); - }); - } -} diff --git a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.module.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.module.ts deleted file mode 100644 index e5471d289..000000000 --- a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.module.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatPaginatorModule } from '@angular/material/paginator'; -import { MatRadioModule } from '@angular/material/radio'; -import { MatSelectModule } from '@angular/material/select'; -import { RouterModule } from '@angular/router'; - -import { DialogModule, TableModule } from '@vality/matez'; -import { ThriftViewerModule } from '@vality/ng-thrift'; - -import { PageLayoutModule } from '~/components/page-layout'; -import { DomainThriftViewerComponent } from '~/components/thrift-api-crud'; - -import { RoutingRulesetRoutingModule } from './routing-ruleset-routing.module'; -import { RoutingRulesetComponent } from './routing-ruleset.component'; - -@NgModule({ - imports: [ - RoutingRulesetRoutingModule, - CommonModule, - MatButtonModule, - MatDialogModule, - MatDividerModule, - ReactiveFormsModule, - MatFormFieldModule, - MatInputModule, - RouterModule, - MatIconModule, - MatMenuModule, - MatPaginatorModule, - MatCardModule, - MatSelectModule, - MatRadioModule, - MatExpansionModule, - MatAutocompleteModule, - TableModule, - DomainThriftViewerComponent, - ThriftViewerModule, - DialogModule, - PageLayoutModule, - ], - declarations: [RoutingRulesetComponent], -}) -export class RoutingRulesetModule {} diff --git a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.service.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.service.ts deleted file mode 100644 index 874331f3a..000000000 --- a/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.service.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Observable, filter } from 'rxjs'; -import { map, shareReplay, switchMap, take, withLatestFrom } from 'rxjs/operators'; - -import { DestroyRef, Injectable, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { ActivatedRoute } from '@angular/router'; - -import { - ConfirmDialogComponent, - DialogResponseStatus, - DialogService, - NotifyLogService, -} from '@vality/matez'; - -import { RoutingRulesService as RoutingRulesDamselService } from '../services/routing-rules'; - -@Injectable() -export class RoutingRulesetService { - private routingRulesService = inject(RoutingRulesDamselService); - private route = inject(ActivatedRoute); - private log = inject(NotifyLogService); - private dialog = inject(DialogService); - private destroyRef = inject(DestroyRef); - partyID$: Observable = this.route.params.pipe( - map((r) => r['partyID']), - shareReplay(1), - ); - partyRulesetRefID$: Observable = this.route.params.pipe( - map((r) => r['partyRefID']), - map((p) => +p), - shareReplay(1), - ); - refID$: Observable = this.route.params.pipe( - map((r) => r['refID']), - map((p) => +p), - shareReplay(1), - ); - ruleset$ = this.refID$.pipe( - switchMap((refID) => this.routingRulesService.getRuleset(refID)), - shareReplay(1), - ); - - removeRule(candidateIdx: number) { - this.dialog - .open(ConfirmDialogComponent) - .afterClosed() - .pipe( - filter((r) => r.status === DialogResponseStatus.Success), - withLatestFrom(this.refID$), - take(1), - switchMap(([, refID]) => - this.routingRulesService.removeShopRule({ - refID, - candidateIdx, - }), - ), - takeUntilDestroyed(this.destroyRef), - ) - .subscribe({ - next: () => { - this.log.successOperation('delete', 'Shop routing candidate'); - }, - error: (err) => { - this.log.error(err); - }, - }); - } -} diff --git a/src/app/parties/party/routing-rules/services/routing-rules/index.ts b/src/app/parties/party/routing-rules/services/routing-rules/index.ts deleted file mode 100644 index 4c4fb7da0..000000000 --- a/src/app/parties/party/routing-rules/services/routing-rules/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './routing-rules.service'; diff --git a/src/app/parties/party/routing-rules/services/routing-rules/routing-rules.service.ts b/src/app/parties/party/routing-rules/services/routing-rules/routing-rules.service.ts deleted file mode 100644 index 55477e357..000000000 --- a/src/app/parties/party/routing-rules/services/routing-rules/routing-rules.service.ts +++ /dev/null @@ -1,377 +0,0 @@ -import { uniq } from 'lodash-es'; -import cloneDeep from 'lodash-es/cloneDeep'; -import { Observable, combineLatest, concat } from 'rxjs'; -import { map, shareReplay, switchMap, take } from 'rxjs/operators'; - -import { Injectable, inject } from '@angular/core'; - -import { - PartyConditionDefinition, - RoutingCandidate, - RoutingDelegate, - RoutingRulesObject, - RoutingRuleset, -} from '@vality/domain-proto/domain'; - -import { RoutingRulesStoreService } from '~/api/domain-config'; -import { createNextId } from '~/utils'; - -import { CandidateId } from './types/candidate-id'; -import { getDelegate } from './utils/get-delegate'; -import { getUpdateRulesCandidates } from './utils/get-update-rules-candidates'; - -@Injectable({ - providedIn: 'root', -}) -export class RoutingRulesService { - private routingRulesStoreService = inject(RoutingRulesStoreService); - - rulesets$: Observable = this.routingRulesStoreService.routingRules$.pipe( - map((r) => r.sort((a, b) => a.ref.id - b.ref.id)), - shareReplay(1), - ); - - nextRefID$ = this.rulesets$.pipe( - map((rulesets) => rulesets.map(({ ref }) => ref.id)), - map(createNextId), - ); - - getRuleset(refID: number): Observable { - return this.rulesets$.pipe(map((rulesets) => rulesets.find((r) => r?.ref?.id === refID))); - } - - getCandidate(refID: number, candidateIdx: number): Observable { - return this.getRuleset(refID).pipe( - take(1), - map((ruleset) => cloneDeep(ruleset.data.decisions.candidates.at(candidateIdx))), - ); - } - - addPartyRuleset({ - name, - mainRulesetRefID, - partyID, - description, - delegateDescription, - }: { - name: string; - mainRulesetRefID: number; - partyID: string; - description?: string; - delegateDescription?: string; - }) { - return combineLatest([this.getRuleset(mainRulesetRefID), this.nextRefID$]).pipe( - take(1), - switchMap(([mainRuleset, id]) => { - const ruleset: RoutingRuleset = { - name, - description, - decisions: { - delegates: [], - }, - }; - const newMainRuleset = this.cloneRulesetAndPushDelegate(mainRuleset, { - ruleset: { id }, - description: delegateDescription, - allowed: { - condition: { - party: { - party_ref: { id: partyID }, - }, - }, - }, - }); - return this.routingRulesStoreService.commit([ - { - insert: { - object: { routing_rules: ruleset }, - force_ref: { routing_rules: { id } }, - }, - }, - { update: { object: { routing_rules: newMainRuleset } } }, - ]); - }), - ); - } - - addRuleset({ - name, - definition, - partyID, - partyRulesetRefID, - description, - }: { - name: string; - definition: PartyConditionDefinition; - partyID: string; - partyRulesetRefID: number; - description?: string; - }) { - return combineLatest([this.getRuleset(partyRulesetRefID), this.nextRefID$]).pipe( - take(1), - switchMap(([partyRuleset, id]) => { - const ruleset: RoutingRuleset = { - name, - description, - decisions: { - candidates: [], - }, - }; - const newPartyRuleset = this.cloneRulesetAndPushDelegate(partyRuleset, { - ruleset: { id }, - allowed: { - condition: { - party: { - party_ref: { id: partyID }, - definition, - }, - }, - }, - }); - return this.routingRulesStoreService.commit([ - { - insert: { - object: { routing_rules: ruleset }, - force_ref: { routing_rules: { id } }, - }, - }, - { - update: { object: { routing_rules: newPartyRuleset } }, - }, - ]); - }), - ); - } - - addRule(refID: number, params: RoutingCandidate) { - return this.getRuleset(refID).pipe( - take(1), - switchMap((ruleset) => { - const newShopRuleset = this.cloneRulesetAndPushCandidate(ruleset, params); - return this.routingRulesStoreService.commit([ - { update: { object: { routing_rules: newShopRuleset } } }, - ]); - }), - ); - } - - updateRules(candidates: (CandidateId & { newCandidate: RoutingCandidate })[]) { - return combineLatest( - uniq(candidates.map((c) => c.refId)).map((refId) => - this.getRuleset(refId).pipe(take(1)), - ), - ).pipe( - switchMap((rulesets) => - this.routingRulesStoreService.commit( - getUpdateRulesCandidates(rulesets, candidates).map((update) => ({ update })), - ), - ), - ); - } - - attachPartyDelegateRuleset({ - mainRulesetRefID, - partyID, - mainDelegateDescription, - ruleset: { name, description }, - }: { - mainRulesetRefID: number; - partyID: string; - mainDelegateDescription?: string; - ruleset: { name: string; description?: string }; - }) { - return combineLatest([this.getRuleset(mainRulesetRefID), this.nextRefID$]).pipe( - take(1), - switchMap(([mainRuleset, id]) => { - const newMainPaymentRoutingRuleset = this.cloneRulesetAndPushDelegate(mainRuleset, { - description: mainDelegateDescription, - allowed: { - condition: { - party: { party_ref: { id: partyID } }, - }, - }, - ruleset: { id }, - }); - const ruleset: RoutingRulesObject = { - ref: { id }, - data: { - name, - description, - decisions: { delegates: [] }, - }, - }; - return this.routingRulesStoreService.commit([ - { - insert: { - object: { routing_rules: ruleset.data }, - force_ref: { routing_rules: { id } }, - }, - }, - { - update: { object: { routing_rules: newMainPaymentRoutingRuleset } }, - }, - ]); - }), - ); - } - - removeShopRule({ refID, candidateIdx }: { refID: number; candidateIdx: number }) { - return this.getRuleset(refID).pipe( - take(1), - switchMap((shopRuleset) => { - const newShopRule = cloneDeep(shopRuleset); - newShopRule.data.decisions.candidates.splice(candidateIdx, 1); - return this.routingRulesStoreService.commit([ - { update: { object: { routing_rules: newShopRule } } }, - ]); - }), - ); - } - - deleteDelegate({ - mainRulesetRefID, - delegateIdx, - }: { - mainRulesetRefID: number; - delegateIdx: number; - }) { - return this.getRuleset(mainRulesetRefID).pipe( - take(1), - switchMap((mainRuleset) => { - const newMainPaymentRoutingRuleset = cloneDeep(mainRuleset); - newMainPaymentRoutingRuleset.data.decisions.delegates.splice(delegateIdx, 1); - return this.routingRulesStoreService.commit([ - { update: { object: { routing_rules: newMainPaymentRoutingRuleset } } }, - ]); - }), - ); - } - - changeMainRuleset({ - previousMainRulesetRefID, - mainRulesetRefID, - delegateIdx, - mainDelegateDescription, - }: { - previousMainRulesetRefID: number; - mainRulesetRefID: number; - delegateIdx: number; - mainDelegateDescription?: string; - }) { - return combineLatest([ - this.getRuleset(mainRulesetRefID), - this.getRuleset(previousMainRulesetRefID), - ]).pipe( - take(1), - switchMap(([mainRuleset, previousMainRuleset]) => { - const newPreviousMainRuleset = cloneDeep(previousMainRuleset); - const [delegate] = newPreviousMainRuleset.data.decisions.delegates.splice( - delegateIdx, - 1, - ); - const newMainPaymentRoutingRuleset = cloneDeep(mainRuleset); - if (!newMainPaymentRoutingRuleset.data.decisions.delegates) { - newMainPaymentRoutingRuleset.data.decisions.delegates = []; - } - newMainPaymentRoutingRuleset.data.decisions.delegates.push({ - ...delegate, - description: mainDelegateDescription, - }); - return this.routingRulesStoreService.commit([ - { - update: { object: { routing_rules: newPreviousMainRuleset } }, - }, - { - update: { object: { routing_rules: newMainPaymentRoutingRuleset } }, - }, - ]); - }), - ); - } - - changeDelegateRuleset({ - mainRulesetRefID, - delegateIdx, - newDelegateRulesetRefID, - description, - }: { - mainRulesetRefID: number; - delegateIdx: number; - newDelegateRulesetRefID: number; - description?: string; - }) { - return this.getRuleset(mainRulesetRefID).pipe( - take(1), - switchMap((mainRuleset) => { - const newMainRuleset = cloneDeep(mainRuleset); - newMainRuleset.data.decisions.delegates[delegateIdx].ruleset.id = - newDelegateRulesetRefID; - if (description !== undefined) { - newMainRuleset.data.decisions.delegates[delegateIdx].description = description; - } - return this.routingRulesStoreService.commit([ - { update: { object: { routing_rules: newMainRuleset } } }, - ]); - }), - ); - } - - cloneDelegateRuleset({ - mainRulesetRefID, - delegateIdx, - }: { - mainRulesetRefID: number; - delegateIdx: number; - }) { - return combineLatest([ - this.getRuleset(mainRulesetRefID), - this.getRuleset(mainRulesetRefID).pipe( - switchMap((r) => this.getRuleset(getDelegate(r, delegateIdx).ruleset.id)), - ), - this.nextRefID$, - ]).pipe( - take(1), - switchMap(([mainRuleset, delegateRuleset, nextRefID]) => { - const newMainRuleset = cloneDeep(mainRuleset); - getDelegate(newMainRuleset, delegateIdx).ruleset.id = nextRefID; - const newDelegateRuleset = cloneDeep(delegateRuleset); - newDelegateRuleset.ref.id = nextRefID; - return concat( - this.routingRulesStoreService.commit([ - { - insert: { - object: { routing_rules: newDelegateRuleset.data }, - force_ref: { routing_rules: newDelegateRuleset.ref }, - }, - }, - ]), - this.routingRulesStoreService.commit([ - { update: { object: { routing_rules: newMainRuleset } } }, - ]), - ); - }), - ); - } - - reload(): void { - this.routingRulesStoreService.reload(); - } - - private cloneRulesetAndPushDelegate(ruleset: RoutingRulesObject, delegate: RoutingDelegate) { - const newRuleset = cloneDeep(ruleset); - if (!Array.isArray(newRuleset.data.decisions.delegates)) { - newRuleset.data.decisions.delegates = []; - } - newRuleset.data.decisions.delegates.push(delegate); - return newRuleset; - } - - private cloneRulesetAndPushCandidate(ruleset: RoutingRulesObject, candidate: RoutingCandidate) { - const newRuleset = cloneDeep(ruleset); - if (!Array.isArray(newRuleset.data.decisions.candidates)) { - newRuleset.data.decisions.candidates = []; - } - newRuleset.data.decisions.candidates.push(candidate); - return newRuleset; - } -} diff --git a/src/app/parties/party/routing-rules/services/routing-rules/types/candidate-id.ts b/src/app/parties/party/routing-rules/services/routing-rules/types/candidate-id.ts deleted file mode 100644 index 1e9dfb1e1..000000000 --- a/src/app/parties/party/routing-rules/services/routing-rules/types/candidate-id.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface CandidateId { - refId: number; - candidateIdx: number; -} diff --git a/src/app/parties/party/routing-rules/services/routing-rules/utils/get-delegate.ts b/src/app/parties/party/routing-rules/services/routing-rules/utils/get-delegate.ts deleted file mode 100644 index 43e90608c..000000000 --- a/src/app/parties/party/routing-rules/services/routing-rules/utils/get-delegate.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { RoutingDelegate, RoutingRulesObject } from '@vality/domain-proto/domain'; - -export function getDelegate( - ruleset: RoutingRulesObject, - delegateIdx: number, -): RoutingDelegate | undefined { - return ruleset?.data?.decisions?.delegates?.[delegateIdx]; -} diff --git a/src/app/parties/party/routing-rules/services/routing-rules/utils/get-update-rules-candidates.ts b/src/app/parties/party/routing-rules/services/routing-rules/utils/get-update-rules-candidates.ts deleted file mode 100644 index 22347efcc..000000000 --- a/src/app/parties/party/routing-rules/services/routing-rules/utils/get-update-rules-candidates.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { cloneDeep } from 'lodash-es'; - -import { RoutingCandidate, RoutingRulesObject } from '@vality/domain-proto/domain'; -import { UpdateOp } from '@vality/domain-proto/domain_config_v2'; - -import { CandidateId } from '../types/candidate-id'; - -export function getUpdateRulesCandidates( - rulesets: RoutingRulesObject[], - candidates: (CandidateId & { newCandidate: RoutingCandidate })[], -): UpdateOp[] { - const newRulesets = rulesets.map(cloneDeep); - for (const ruleset of newRulesets) { - for (const candidate of candidates) { - if (candidate.refId === ruleset.ref.id) { - ruleset.data.decisions.candidates.splice( - candidate.candidateIdx, - 1, - candidate.newCandidate, - ); - } - } - } - return rulesets.map((_, idx) => ({ - object: { routing_rules: newRulesets[idx] }, - })); -} diff --git a/src/app/parties/party/routing-rules/types/routing-rules-type.ts b/src/app/parties/party/routing-rules/types/routing-rules-type.ts deleted file mode 100644 index b691f078b..000000000 --- a/src/app/parties/party/routing-rules/types/routing-rules-type.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum RoutingRulesType { - Payment = 'payment', - Withdrawal = 'withdrawal', -} diff --git a/src/app/parties/party/routing-rules/utils/get-changed-predicate.ts b/src/app/parties/party/routing-rules/utils/get-changed-predicate.ts deleted file mode 100644 index f541e52da..000000000 --- a/src/app/parties/party/routing-rules/utils/get-changed-predicate.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Predicate } from '@vality/domain-proto/domain'; -import { getUnionKey } from '@vality/ng-thrift'; - -import { getPredicateBoolean } from '~/utils'; - -/** - * @param allowedOrToggle - If provided, sets the constant to this value. If not provided, toggles the current constant value (acts as a toggle) - */ -export function getChangedPredicate(predicate: Predicate, allowedOrToggle?: boolean): Predicate { - const predicates: Predicate[] = - getUnionKey(predicate) === 'all_of' ? Array.from(predicate.all_of) : [predicate]; - const idx = predicates.findIndex((a) => getUnionKey(a) === 'constant'); - if (idx !== -1) { - predicates.splice(idx, 1); - } - predicates.unshift({ - constant: allowedOrToggle !== undefined ? allowedOrToggle : !getPredicateBoolean(predicate), - }); - return { all_of: new Set(predicates) }; -} diff --git a/src/app/parties/party/routing-rules/utils/get-policies-id-by-type.ts b/src/app/parties/party/routing-rules/utils/get-policies-id-by-type.ts deleted file mode 100644 index 95b36ffb0..000000000 --- a/src/app/parties/party/routing-rules/utils/get-policies-id-by-type.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { PickByValue } from 'utility-types'; - -import { PaymentInstitution, RoutingRules } from '@vality/domain-proto/domain'; - -import { RoutingRulesType } from '../types/routing-rules-type'; - -const TYPE_TO_PAYMENT_INSTITUTION_KEY: Record< - RoutingRulesType, - keyof PickByValue -> = { - [RoutingRulesType.Payment]: 'payment_routing_rules', - [RoutingRulesType.Withdrawal]: 'withdrawal_routing_rules', -}; - -export function getPoliciesIdByType( - paymentInstitution: PaymentInstitution, - type: RoutingRulesType, -) { - return paymentInstitution?.[TYPE_TO_PAYMENT_INSTITUTION_KEY[type]]?.policies?.id; -} diff --git a/src/app/parties/party/routing-rules/utils/toggle-candidate-allowed.ts b/src/app/parties/party/routing-rules/utils/toggle-candidate-allowed.ts deleted file mode 100644 index e2de0c76d..000000000 --- a/src/app/parties/party/routing-rules/utils/toggle-candidate-allowed.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { uniq } from 'lodash-es'; -import { combineLatest, switchMap, take } from 'rxjs'; - -import { DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; - -import { RoutingCandidate } from '@vality/domain-proto/domain'; -import { DialogResponseStatus, DialogService, NotifyLogService } from '@vality/matez'; - -import { RoutingRulesStoreService } from '~/api/domain-config'; -import { UpdateThriftDialogComponent } from '~/components/thrift-api-crud'; - -import { RoutingRulesService } from '../services/routing-rules'; -import { CandidateId } from '../services/routing-rules/types/candidate-id'; -import { getUpdateRulesCandidates } from '../services/routing-rules/utils/get-update-rules-candidates'; - -import { getChangedPredicate } from './get-changed-predicate'; - -function getCandidateIdLabel({ refId, candidateIdx }: CandidateId) { - return `#${refId}/${candidateIdx}`; -} - -export function changeCandidatesAllowed(candidateIds: CandidateId[], allowedOrToggle?: boolean) { - const routingRulesService = inject(RoutingRulesService); - const dr = inject(DestroyRef); - const routingRulesStoreService = inject(RoutingRulesStoreService); - const log = inject(NotifyLogService); - const dialogService = inject(DialogService); - - combineLatest([ - combineLatest( - candidateIds.map(({ refId, candidateIdx }) => - routingRulesService.getCandidate(refId, candidateIdx), - ), - ), - combineLatest( - uniq(candidateIds.map((c) => c.refId)).map((refId) => - routingRulesService.getRuleset(refId).pipe(take(1)), - ), - ), - ]) - .pipe( - switchMap(([candidates, rulesets]) => { - const candidatesForUpdate: (CandidateId & { newCandidate: RoutingCandidate })[] = - candidates.map((candidate, idx) => ({ - refId: candidateIds[idx].refId, - candidateIdx: candidateIds[idx].candidateIdx, - newCandidate: { - ...candidate, - allowed: getChangedPredicate(candidate.allowed, allowedOrToggle), - }, - })); - const reviewObjects = getUpdateRulesCandidates(rulesets, candidatesForUpdate); - return dialogService - .open(UpdateThriftDialogComponent, { - title: 'Toggle allowed', - prevObject: - candidates.length > 1 - ? candidates.map((candidate, idx) => [ - getCandidateIdLabel(candidateIds[idx]), - candidate.allowed, - ]) - : candidates[0].allowed, - object: - candidates.length > 1 - ? candidates.map((candidate, idx) => [ - getCandidateIdLabel(candidateIds[idx]), - getChangedPredicate(candidate.allowed, allowedOrToggle), - ]) - : getChangedPredicate(candidates[0].allowed, allowedOrToggle), - prevReviewObject: - candidates.length > 1 ? rulesets.map((r) => r) : undefined, - reviewObject: - candidates.length > 1 - ? reviewObjects.map((r) => r.object.routing_rules) - : undefined, - action: () => routingRulesService.updateRules(candidatesForUpdate), - }) - .afterClosed(); - }), - takeUntilDestroyed(dr), - ) - .subscribe((res) => { - if (res.status === DialogResponseStatus.Success) { - routingRulesStoreService.reload(); - log.successOperation('update', 'Allowed'); - } - }); -} From 2eb6dba6a6d1c3788f9bd0c880a0e3f2d108d899 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:40:10 +0700 Subject: [PATCH 6/7] rename --- src/app/parties/party/party-routing.module.ts | 2 +- .../change-delegate-ruleset-dialog.component.html | 0 .../change-delegate-ruleset-dialog.component.spec.ts | 0 .../change-delegate-ruleset-dialog.component.ts | 0 .../change-delegate-ruleset-dialog.module.ts | 0 .../components/change-delegate-ruleset-dialog/index.ts | 0 .../change-target-dialog/change-target-dialog.component.html | 0 .../change-target-dialog/change-target-dialog.component.ts | 0 .../change-target-dialog/change-target-dialog.module.ts | 0 .../components/change-target-dialog/index.ts | 0 .../components/routing-rules-list/index.ts | 0 .../routing-rules-list/routing-rules-list.component.html | 0 .../routing-rules-list/routing-rules-list.component.ts | 0 .../routing-rules-list/routing-rules-list.module.ts | 0 .../components/target-ruleset-form/index.ts | 0 .../target-ruleset-form/target-ruleset-form.component.html | 0 .../target-ruleset-form/target-ruleset-form.component.ts | 0 .../target-ruleset-form/target-ruleset-form.module.ts | 0 .../components/target-ruleset-form/types/target-ruleset.ts | 0 .../components/target-ruleset-form/types/target.ts | 0 .../party/{routing-rules-old => routing-rules}/index.ts | 0 .../attach-new-ruleset-dialog.component.html | 0 .../attach-new-ruleset-dialog.component.ts | 0 .../attach-new-ruleset-dialog/index.ts | 0 .../party-delegate-rulesets/index.ts | 0 .../party-delegate-rulesets-routing.module.ts | 0 .../party-delegate-rulesets.component.html | 0 .../party-delegate-rulesets.component.ts | 0 .../party-delegate-rulesets/party-delegate-rulesets.module.ts | 0 .../party-delegate-rulesets.service.ts | 0 .../party-delegate-rulesets/routing-config.ts | 0 .../add-party-routing-rule-dialog.component.html | 0 .../add-party-routing-rule-dialog.component.ts | 0 .../add-party-routing-rule-dialog.module.ts | 0 .../add-party-routing-rule-dialog/index.ts | 0 .../party-routing-ruleset/index.ts | 0 .../initialize-routing-rules-dialog/index.ts | 0 .../initialize-routing-rules-dialog.component.html | 0 .../initialize-routing-rules-dialog.component.ts | 0 .../initialize-routing-rules-dialog.module.ts | 0 .../party-routing-ruleset-routing.module.ts | 0 .../party-routing-ruleset.component.html | 0 .../party-routing-ruleset.component.scss | 0 .../party-routing-ruleset/party-routing-ruleset.component.ts | 0 .../party-routing-ruleset/party-routing-ruleset.module.ts | 0 .../party-routing-ruleset/party-routing-ruleset.service.ts | 0 .../party-routing-ruleset/routing-config.ts | 0 .../routing-rules-type.service.ts | 0 .../routing-rules.module.ts | 0 .../routing-ruleset/index.ts | 0 .../routing-ruleset/routing-config.ts | 0 .../routing-ruleset/routing-ruleset-routing.module.ts | 0 .../routing-ruleset/routing-ruleset.component.html | 0 .../routing-ruleset/routing-ruleset.component.ts | 0 .../routing-ruleset/routing-ruleset.module.ts | 0 .../routing-ruleset/routing-ruleset.service.ts | 0 .../services/routing-rules/index.ts | 0 .../services/routing-rules/routing-rules.service.ts | 0 .../services/routing-rules/types/candidate-id.ts | 0 .../services/routing-rules/utils/get-delegate.ts | 0 .../routing-rules/utils/get-update-rules-candidates.ts | 0 .../types/routing-rules-type.ts | 0 .../utils/get-changed-predicate.ts | 0 .../utils/get-policies-id-by-type.ts | 0 .../utils/toggle-candidate-allowed.ts | 0 src/app/wallets/wallets.component.ts | 4 ++-- src/components/shops-table/shops-table.component.ts | 4 ++-- src/components/shops-table/utils/get-delegates-by-party.ts | 4 ++-- src/components/shops-table/utils/get-rr-by-party-item.ts | 2 +- .../terminal-delegates-card.component.ts | 2 +- 70 files changed, 9 insertions(+), 9 deletions(-) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.spec.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-delegate-ruleset-dialog/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-target-dialog/change-target-dialog.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-target-dialog/change-target-dialog.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-target-dialog/change-target-dialog.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/change-target-dialog/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/routing-rules-list/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/routing-rules-list/routing-rules-list.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/routing-rules-list/routing-rules-list.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/routing-rules-list/routing-rules-list.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/target-ruleset-form/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/target-ruleset-form/target-ruleset-form.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/target-ruleset-form/target-ruleset-form.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/target-ruleset-form/target-ruleset-form.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/target-ruleset-form/types/target-ruleset.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/components/target-ruleset-form/types/target.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/party-delegate-rulesets.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/party-delegate-rulesets.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/party-delegate-rulesets.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/party-delegate-rulesets.service.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-delegate-rulesets/routing-config.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/add-party-routing-rule-dialog/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/initialize-routing-rules-dialog/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/party-routing-ruleset-routing.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/party-routing-ruleset.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/party-routing-ruleset.component.scss (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/party-routing-ruleset.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/party-routing-ruleset.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/party-routing-ruleset.service.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/party-routing-ruleset/routing-config.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-rules-type.service.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-rules.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-ruleset/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-ruleset/routing-config.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-ruleset/routing-ruleset-routing.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-ruleset/routing-ruleset.component.html (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-ruleset/routing-ruleset.component.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-ruleset/routing-ruleset.module.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/routing-ruleset/routing-ruleset.service.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/services/routing-rules/index.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/services/routing-rules/routing-rules.service.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/services/routing-rules/types/candidate-id.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/services/routing-rules/utils/get-delegate.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/services/routing-rules/utils/get-update-rules-candidates.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/types/routing-rules-type.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/utils/get-changed-predicate.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/utils/get-policies-id-by-type.ts (100%) rename src/app/parties/party/{routing-rules-old => routing-rules}/utils/toggle-candidate-allowed.ts (100%) diff --git a/src/app/parties/party/party-routing.module.ts b/src/app/parties/party/party-routing.module.ts index fbafc5a83..524ca963e 100644 --- a/src/app/parties/party/party-routing.module.ts +++ b/src/app/parties/party/party-routing.module.ts @@ -26,7 +26,7 @@ import { ROUTING_CONFIG as WEBHOOKS_ROUTING_CONFIG } from './webhooks/routing-co { path: 'routing-rules', loadChildren: () => - import('./routing-rules-old').then((m) => m.RoutingRulesModule), + import('./routing-rules').then((m) => m.RoutingRulesModule), }, { path: 'wallets', diff --git a/src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html rename to src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.html diff --git a/src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.spec.ts b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.spec.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.spec.ts rename to src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.spec.ts diff --git a/src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts rename to src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.component.ts diff --git a/src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts rename to src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/change-delegate-ruleset-dialog.module.ts diff --git a/src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/index.ts b/src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-delegate-ruleset-dialog/index.ts rename to src/app/parties/party/routing-rules/components/change-delegate-ruleset-dialog/index.ts diff --git a/src/app/parties/party/routing-rules-old/components/change-target-dialog/change-target-dialog.component.html b/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-target-dialog/change-target-dialog.component.html rename to src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.html diff --git a/src/app/parties/party/routing-rules-old/components/change-target-dialog/change-target-dialog.component.ts b/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-target-dialog/change-target-dialog.component.ts rename to src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.component.ts diff --git a/src/app/parties/party/routing-rules-old/components/change-target-dialog/change-target-dialog.module.ts b/src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-target-dialog/change-target-dialog.module.ts rename to src/app/parties/party/routing-rules/components/change-target-dialog/change-target-dialog.module.ts diff --git a/src/app/parties/party/routing-rules-old/components/change-target-dialog/index.ts b/src/app/parties/party/routing-rules/components/change-target-dialog/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/change-target-dialog/index.ts rename to src/app/parties/party/routing-rules/components/change-target-dialog/index.ts diff --git a/src/app/parties/party/routing-rules-old/components/routing-rules-list/index.ts b/src/app/parties/party/routing-rules/components/routing-rules-list/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/routing-rules-list/index.ts rename to src/app/parties/party/routing-rules/components/routing-rules-list/index.ts diff --git a/src/app/parties/party/routing-rules-old/components/routing-rules-list/routing-rules-list.component.html b/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/components/routing-rules-list/routing-rules-list.component.html rename to src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.html diff --git a/src/app/parties/party/routing-rules-old/components/routing-rules-list/routing-rules-list.component.ts b/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/routing-rules-list/routing-rules-list.component.ts rename to src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.component.ts diff --git a/src/app/parties/party/routing-rules-old/components/routing-rules-list/routing-rules-list.module.ts b/src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/routing-rules-list/routing-rules-list.module.ts rename to src/app/parties/party/routing-rules/components/routing-rules-list/routing-rules-list.module.ts diff --git a/src/app/parties/party/routing-rules-old/components/target-ruleset-form/index.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/target-ruleset-form/index.ts rename to src/app/parties/party/routing-rules/components/target-ruleset-form/index.ts diff --git a/src/app/parties/party/routing-rules-old/components/target-ruleset-form/target-ruleset-form.component.html b/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/components/target-ruleset-form/target-ruleset-form.component.html rename to src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.html diff --git a/src/app/parties/party/routing-rules-old/components/target-ruleset-form/target-ruleset-form.component.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/target-ruleset-form/target-ruleset-form.component.ts rename to src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.component.ts diff --git a/src/app/parties/party/routing-rules-old/components/target-ruleset-form/target-ruleset-form.module.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/target-ruleset-form/target-ruleset-form.module.ts rename to src/app/parties/party/routing-rules/components/target-ruleset-form/target-ruleset-form.module.ts diff --git a/src/app/parties/party/routing-rules-old/components/target-ruleset-form/types/target-ruleset.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/types/target-ruleset.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/target-ruleset-form/types/target-ruleset.ts rename to src/app/parties/party/routing-rules/components/target-ruleset-form/types/target-ruleset.ts diff --git a/src/app/parties/party/routing-rules-old/components/target-ruleset-form/types/target.ts b/src/app/parties/party/routing-rules/components/target-ruleset-form/types/target.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/components/target-ruleset-form/types/target.ts rename to src/app/parties/party/routing-rules/components/target-ruleset-form/types/target.ts diff --git a/src/app/parties/party/routing-rules-old/index.ts b/src/app/parties/party/routing-rules/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/index.ts rename to src/app/parties/party/routing-rules/index.ts diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html b/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html rename to src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.html diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts rename to src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/attach-new-ruleset-dialog.component.ts diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts rename to src/app/parties/party/routing-rules/party-delegate-rulesets/attach-new-ruleset-dialog/index.ts diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/index.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/index.ts rename to src/app/parties/party/routing-rules/party-delegate-rulesets/index.ts diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts rename to src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets-routing.module.ts diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets.component.html b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets.component.html rename to src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.html diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets.component.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets.component.ts rename to src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.component.ts diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets.module.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets.module.ts rename to src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.module.ts diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets.service.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.service.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/party-delegate-rulesets.service.ts rename to src/app/parties/party/routing-rules/party-delegate-rulesets/party-delegate-rulesets.service.ts diff --git a/src/app/parties/party/routing-rules-old/party-delegate-rulesets/routing-config.ts b/src/app/parties/party/routing-rules/party-delegate-rulesets/routing-config.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-delegate-rulesets/routing-config.ts rename to src/app/parties/party/routing-rules/party-delegate-rulesets/routing-config.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html b/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html rename to src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.html diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.component.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/add-party-routing-rule-dialog.module.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/add-party-routing-rule-dialog/index.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/add-party-routing-rule-dialog/index.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/add-party-routing-rule-dialog/index.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/index.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/index.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/index.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/initialize-routing-rules-dialog/index.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/initialize-routing-rules-dialog/index.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/index.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html b/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html rename to src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.html diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.component.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/initialize-routing-rules-dialog/initialize-routing-rules-dialog.module.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset-routing.module.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset-routing.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset-routing.module.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset-routing.module.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.component.html b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.component.html rename to src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.html diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.component.scss b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.scss similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.component.scss rename to src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.scss diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.component.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.component.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.component.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.module.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.module.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.module.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.service.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.service.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/party-routing-ruleset.service.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/party-routing-ruleset.service.ts diff --git a/src/app/parties/party/routing-rules-old/party-routing-ruleset/routing-config.ts b/src/app/parties/party/routing-rules/party-routing-ruleset/routing-config.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/party-routing-ruleset/routing-config.ts rename to src/app/parties/party/routing-rules/party-routing-ruleset/routing-config.ts diff --git a/src/app/parties/party/routing-rules-old/routing-rules-type.service.ts b/src/app/parties/party/routing-rules/routing-rules-type.service.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-rules-type.service.ts rename to src/app/parties/party/routing-rules/routing-rules-type.service.ts diff --git a/src/app/parties/party/routing-rules-old/routing-rules.module.ts b/src/app/parties/party/routing-rules/routing-rules.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-rules.module.ts rename to src/app/parties/party/routing-rules/routing-rules.module.ts diff --git a/src/app/parties/party/routing-rules-old/routing-ruleset/index.ts b/src/app/parties/party/routing-rules/routing-ruleset/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-ruleset/index.ts rename to src/app/parties/party/routing-rules/routing-ruleset/index.ts diff --git a/src/app/parties/party/routing-rules-old/routing-ruleset/routing-config.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-config.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-ruleset/routing-config.ts rename to src/app/parties/party/routing-rules/routing-ruleset/routing-config.ts diff --git a/src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset-routing.module.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset-routing.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset-routing.module.ts rename to src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset-routing.module.ts diff --git a/src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset.component.html b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.html similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset.component.html rename to src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.html diff --git a/src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset.component.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset.component.ts rename to src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.component.ts diff --git a/src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset.module.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.module.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset.module.ts rename to src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.module.ts diff --git a/src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset.service.ts b/src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.service.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/routing-ruleset/routing-ruleset.service.ts rename to src/app/parties/party/routing-rules/routing-ruleset/routing-ruleset.service.ts diff --git a/src/app/parties/party/routing-rules-old/services/routing-rules/index.ts b/src/app/parties/party/routing-rules/services/routing-rules/index.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/services/routing-rules/index.ts rename to src/app/parties/party/routing-rules/services/routing-rules/index.ts diff --git a/src/app/parties/party/routing-rules-old/services/routing-rules/routing-rules.service.ts b/src/app/parties/party/routing-rules/services/routing-rules/routing-rules.service.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/services/routing-rules/routing-rules.service.ts rename to src/app/parties/party/routing-rules/services/routing-rules/routing-rules.service.ts diff --git a/src/app/parties/party/routing-rules-old/services/routing-rules/types/candidate-id.ts b/src/app/parties/party/routing-rules/services/routing-rules/types/candidate-id.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/services/routing-rules/types/candidate-id.ts rename to src/app/parties/party/routing-rules/services/routing-rules/types/candidate-id.ts diff --git a/src/app/parties/party/routing-rules-old/services/routing-rules/utils/get-delegate.ts b/src/app/parties/party/routing-rules/services/routing-rules/utils/get-delegate.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/services/routing-rules/utils/get-delegate.ts rename to src/app/parties/party/routing-rules/services/routing-rules/utils/get-delegate.ts diff --git a/src/app/parties/party/routing-rules-old/services/routing-rules/utils/get-update-rules-candidates.ts b/src/app/parties/party/routing-rules/services/routing-rules/utils/get-update-rules-candidates.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/services/routing-rules/utils/get-update-rules-candidates.ts rename to src/app/parties/party/routing-rules/services/routing-rules/utils/get-update-rules-candidates.ts diff --git a/src/app/parties/party/routing-rules-old/types/routing-rules-type.ts b/src/app/parties/party/routing-rules/types/routing-rules-type.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/types/routing-rules-type.ts rename to src/app/parties/party/routing-rules/types/routing-rules-type.ts diff --git a/src/app/parties/party/routing-rules-old/utils/get-changed-predicate.ts b/src/app/parties/party/routing-rules/utils/get-changed-predicate.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/utils/get-changed-predicate.ts rename to src/app/parties/party/routing-rules/utils/get-changed-predicate.ts diff --git a/src/app/parties/party/routing-rules-old/utils/get-policies-id-by-type.ts b/src/app/parties/party/routing-rules/utils/get-policies-id-by-type.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/utils/get-policies-id-by-type.ts rename to src/app/parties/party/routing-rules/utils/get-policies-id-by-type.ts diff --git a/src/app/parties/party/routing-rules-old/utils/toggle-candidate-allowed.ts b/src/app/parties/party/routing-rules/utils/toggle-candidate-allowed.ts similarity index 100% rename from src/app/parties/party/routing-rules-old/utils/toggle-candidate-allowed.ts rename to src/app/parties/party/routing-rules/utils/toggle-candidate-allowed.ts diff --git a/src/app/wallets/wallets.component.ts b/src/app/wallets/wallets.component.ts index db41e6af6..66f69b236 100644 --- a/src/app/wallets/wallets.component.ts +++ b/src/app/wallets/wallets.component.ts @@ -36,8 +36,8 @@ import { getDelegatesByPartyItem } from '~/components/shops-table/utils/get-rr-b import { createCurrencyColumn, createDomainObjectColumn, createPartyColumn } from '~/utils'; import { PartyStoreService } from '../parties/party'; -import { PartyDelegateRulesetsService } from '../parties/party/routing-rules-old/party-delegate-rulesets'; -import { RoutingRulesType } from '../parties/party/routing-rules-old/types/routing-rules-type'; +import { PartyDelegateRulesetsService } from '../parties/party/routing-rules/party-delegate-rulesets'; +import { RoutingRulesType } from '../parties/party/routing-rules/types/routing-rules-type'; @Component({ selector: 'cc-wallets', diff --git a/src/components/shops-table/shops-table.component.ts b/src/components/shops-table/shops-table.component.ts index 67acb1bcf..b62afabbb 100644 --- a/src/components/shops-table/shops-table.component.ts +++ b/src/components/shops-table/shops-table.component.ts @@ -35,8 +35,8 @@ import { PartiesStoreService, ShopWithInfo } from '~/api/payment-processing'; import { ThriftPartyManagementService } from '~/api/services'; import { createCurrencyColumn, createDomainObjectColumn, createPartyColumn } from '~/utils'; -import { PartyDelegateRulesetsService } from '../../app/parties/party/routing-rules-old/party-delegate-rulesets'; -import { RoutingRulesType } from '../../app/parties/party/routing-rules-old/types/routing-rules-type'; +import { PartyDelegateRulesetsService } from '../../app/parties/party/routing-rules/party-delegate-rulesets'; +import { RoutingRulesType } from '../../app/parties/party/routing-rules/types/routing-rules-type'; import { SidenavInfoService } from '../sidenav-info'; import { DomainObjectCardComponent } from '../thrift-api-crud/domain'; diff --git a/src/components/shops-table/utils/get-delegates-by-party.ts b/src/components/shops-table/utils/get-delegates-by-party.ts index e082e4999..54e5a5714 100644 --- a/src/components/shops-table/utils/get-delegates-by-party.ts +++ b/src/components/shops-table/utils/get-delegates-by-party.ts @@ -5,8 +5,8 @@ import { inject } from '@angular/core'; import { DelegateWithPaymentInstitution, PartyDelegateRulesetsService, -} from '../../../app/parties/party/routing-rules-old/party-delegate-rulesets'; -import { RoutingRulesType } from '../../../app/parties/party/routing-rules-old/types/routing-rules-type'; +} from '../../../app/parties/party/routing-rules/party-delegate-rulesets'; +import { RoutingRulesType } from '../../../app/parties/party/routing-rules/types/routing-rules-type'; export function getDelegatesByParty( parties: string[], diff --git a/src/components/shops-table/utils/get-rr-by-party-item.ts b/src/components/shops-table/utils/get-rr-by-party-item.ts index 945aceeaf..188ce8d54 100644 --- a/src/components/shops-table/utils/get-rr-by-party-item.ts +++ b/src/components/shops-table/utils/get-rr-by-party-item.ts @@ -8,7 +8,7 @@ import { MenuItem } from '@vality/matez'; import { DomainObjectsStoreService } from '~/api/domain-config'; -import { RoutingRulesType } from '../../../app/parties/party/routing-rules-old/types/routing-rules-type'; +import { RoutingRulesType } from '../../../app/parties/party/routing-rules/types/routing-rules-type'; import { getDelegatesByParty } from './get-delegates-by-party'; diff --git a/src/components/terminal-delegates-card/terminal-delegates-card.component.ts b/src/components/terminal-delegates-card/terminal-delegates-card.component.ts index c5dbc3c59..07a10a3fd 100644 --- a/src/components/terminal-delegates-card/terminal-delegates-card.component.ts +++ b/src/components/terminal-delegates-card/terminal-delegates-card.component.ts @@ -26,7 +26,7 @@ import { DomainService, RoutingRulesStoreService } from '~/api/domain-config'; import { PartiesStoreService } from '~/api/payment-processing'; import { createPartyColumn, createPredicateColumn, getPredicateBoolean } from '~/utils'; -import { changeCandidatesAllowed } from '../../app/parties/party/routing-rules-old/utils/toggle-candidate-allowed'; +import { changeCandidatesAllowed } from '../../app/parties/party/routing-rules/utils/toggle-candidate-allowed'; import { TerminalShopWalletDelegate, getTerminalShopWalletDelegates, From abf88aa40f00fd70fc2b5cf9b2ae095a4fad7d22 Mon Sep 17 00:00:00 2001 From: Rinat Arsaev <11846445+A77AY@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:41:21 +0700 Subject: [PATCH 7/7] fix --- .../matez/src/lib/components/table/presets/create-menu-column.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/matez/src/lib/components/table/presets/create-menu-column.ts b/projects/matez/src/lib/components/table/presets/create-menu-column.ts index 6ee0ac713..f8cb35291 100644 --- a/projects/matez/src/lib/components/table/presets/create-menu-column.ts +++ b/projects/matez/src/lib/components/table/presets/create-menu-column.ts @@ -19,5 +19,6 @@ export const createMenuColumn = createColumn( padding: 0, width: '0', }, + sort: false, }, );