Files
cbsnexora/src/app/clients/clients-routing.module.ts
T
AdityaandClaude Opus 4.7 595054b0b8 feat(digital+toolbar): NEFT/RTGS module, AI menu, polished header icons
- Add /digital/neft-rtgs (entry) and /digital/neft-rtgs-report (analytics):
  KPIs, tabbed views (Trends, Bank-wise, Date-wise, Pending/Pass/Return,
  Branch/Mobile, User-wise), filterable transaction table with CSV export,
  and a non-dismissible Initiate dialog launched from a floating action.
- Make BANL verification mandatory before NEFT/RTGS submit; auto-fill and
  lock beneficiary name from the lookup response, invalidate match on
  A/C or IFSC edit, demo fallback for unknown accounts.
- Add Digital menu links (NEFT/RTGS + Report) in shell top-nav.
- Replace toolbar theme toggle with AI / Intelligence Modules mega menu:
  4 colour-coded columns covering Lending & Risk, Investment & Profit,
  Compliance & Advisory, Governance (9 modules total). Wire RBI
  Notifications Monitoring to /rbi-circulars.
- Unify notifications, settings, AI, and profile toolbar buttons into a
  26px ring style; colourful gradient bell SVG for notifications,
  custom gear+petals AI mark, online dot on the avatar.
- Trim ISO 27001 chip in the top bar.
- Add MPL header to generated .env.ts and its template in version.js.
- Bundles other pending working-tree changes (clients family/nominee
  tab tweaks, auth/2FA fixes, translations) into the same push.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 11:50:26 +05:30

360 lines
15 KiB
TypeScript

/**
* Copyright since 2025 Mifos Initiative
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
/** Routing Imports */
import { Route } from '../core/route/route.service';
/** Custom Components */
import { ClientsComponent } from './clients.component';
import { ClientsViewComponent } from './clients-view/clients-view.component';
import { GeneralTabComponent } from './clients-view/general-tab/general-tab.component';
import { FamilyMembersTabComponent } from './clients-view/family-members-tab/family-members-tab.component';
import { NomineeTabComponent } from './clients-view/nominee-tab/nominee-tab.component';
import { AddFamilyMemberComponent } from './clients-view/family-members-tab/add-family-member/add-family-member.component';
import { EditFamilyMemberComponent } from './clients-view/family-members-tab/edit-family-member/edit-family-member.component';
import { IdentitiesTabComponent } from './clients-view/identities-tab/identities-tab.component';
import { NotesTabComponent } from './clients-view/notes-tab/notes-tab.component';
import { DocumentsTabComponent } from './clients-view/documents-tab/documents-tab.component';
import { DatatableTabComponent } from './clients-view/datatable-tab/datatable-tab.component';
import { AddressTabComponent } from './clients-view/address-tab/address-tab.component';
import { PersonalDataTabComponent } from './clients-view/personal-data-tab/personal-data-tab.component';
import { ClientActionsComponent } from './clients-view/client-actions/client-actions.component';
import { ViewChargeComponent } from './clients-view/charges/view-charge/view-charge.component';
import { ClientPayChargesComponent } from './clients-view/charges/client-pay-charges/client-pay-charges.component';
import { EditClientComponent } from './edit-client/edit-client.component';
import { CreateClientComponent } from './create-client/create-client.component';
/** Custom Resolvers */
import { ClientViewResolver } from './common-resolvers/client-view.resolver';
import { ClientAccountsResolver } from './common-resolvers/client-accounts.resolver';
import { ClientAddressResolver } from './common-resolvers/client-address.resolver';
import { ClientChargesResolver } from './common-resolvers/client-charges.resolver';
import { ClientSummaryResolver } from './common-resolvers/client-summary.resolver';
import { ClientFamilyMembersResolver } from './common-resolvers/client-family-members.resolver';
import { ClientFamilyMemberResolver } from './common-resolvers/client-family-member.resolver';
import { ClientTemplateResolver } from './common-resolvers/client-template.resolver';
import { ClientIdentitiesResolver } from './common-resolvers/client-identities.resolver';
import { ClientNotesResolver } from './common-resolvers/client-notes.resolver';
import { ClientDocumentsResolver } from './common-resolvers/client-document.resolver';
import { ClientDatatablesResolver } from './common-resolvers/client-datatables.resolver';
import { ClientDatatableResolver } from './common-resolvers/client-datatable.resolver';
import { ClientIdentifierTemplateResolver } from './common-resolvers/client-identifier-template.resolver';
import { ClientAddressFieldConfigurationResolver } from './common-resolvers/client-address-fieldconfiguration.resolver';
import { ClientAddressTemplateResolver } from './common-resolvers/client-address-template.resolver';
import { ChargesOverviewComponent } from './clients-view/charges/charges-overview/charges-overview.component';
import { ClientChargeOverviewResolver } from './clients-view/charges/charges-overview/charge-overview.resolver';
import { ClientActionsResolver } from './common-resolvers/client-actions.resolver';
import { ClientChargeViewResolver } from './common-resolvers/client-charge-view.resolver';
import { ClientTransactionPayResolver } from './common-resolvers/client-transaction-pay.resolver';
import { ClientDataAndTemplateResolver } from './common-resolvers/client-and-template.resolver';
import { ClientCollateralResolver } from './common-resolvers/client-collateral.resolver';
import { KycTabComponent } from './clients-view/kyc-tab/kyc-tab.component';
import { CkycTabComponent } from './clients-view/ckyc-tab/ckyc-tab.component';
import { Form60TabComponent } from './clients-view/form60-tab/form60-tab.component';
import { EntityClassificationTabComponent } from './clients-view/entity-classification-tab/entity-classification-tab.component';
const routes: Routes = [
Route.withShell([
{
path: 'clients',
data: { title: 'Clients', breadcrumb: 'Clients', routeParamBreadcrumb: false },
children: [
{
path: '',
component: ClientsComponent
},
{
path: 'create',
data: { title: 'Create Client', breadcrumb: 'Create Client', routeParamBreadcrumb: false },
component: CreateClientComponent,
resolve: {
clientAddressFieldConfig: ClientAddressFieldConfigurationResolver,
clientTemplate: ClientTemplateResolver
}
},
{
path: ':clientId',
component: ClientsViewComponent,
data: { title: 'Clients View', routeParamBreadcrumb: 'clientId' },
resolve: {
clientViewData: ClientViewResolver,
clientTemplateData: ClientTemplateResolver,
clientDatatables: ClientDatatablesResolver
},
children: [
{
path: '',
redirectTo: 'general',
pathMatch: 'full'
},
{
path: 'general',
component: GeneralTabComponent,
data: { title: 'General', breadcrumb: 'General', routeParamBreadcrumb: false },
resolve: {
clientAccountsData: ClientAccountsResolver,
clientChargesData: ClientChargesResolver,
clientCollateralData: ClientCollateralResolver
}
},
{
path: 'personal-data',
component: PersonalDataTabComponent,
data: { title: 'Personal Data', breadcrumb: 'Personal Data', routeParamBreadcrumb: false }
},
{
path: 'address',
component: AddressTabComponent,
data: { title: 'Address', breadcrumb: 'Address', routeParamBreadcrumb: false },
resolve: {
clientAddressFieldConfig: ClientAddressFieldConfigurationResolver,
clientAddressTemplateData: ClientAddressTemplateResolver,
clientAddressData: ClientAddressResolver
}
},
{
path: 'nominees',
component: NomineeTabComponent,
data: { title: 'Nominees', breadcrumb: 'Nominees', routeParamBreadcrumb: false }
},
{
path: 'family-members',
data: { title: 'Family Members', breadcrumb: 'Family Members', routeParamBreadcrumb: false },
children: [
{
path: '',
component: FamilyMembersTabComponent,
resolve: {
clientFamilyMembers: ClientFamilyMembersResolver
}
},
{
path: 'add',
component: AddFamilyMemberComponent,
data: { title: 'Add', breadcrumb: 'Add', routeParamBreadcrumb: false },
resolve: {
clientTemplate: ClientTemplateResolver
}
},
{
path: ':familyMemberId',
children: [
{
path: 'edit',
component: EditFamilyMemberComponent,
data: { title: 'Family Member View', routeParamBreadcrumb: 'familyMemberId' },
resolve: {
clientTemplate: ClientTemplateResolver,
editFamilyMember: ClientFamilyMemberResolver
}
}
]
}
]
},
{
path: 'identities',
component: IdentitiesTabComponent,
data: { title: 'Identities', breadcrumb: 'Identities', routeParamBreadcrumb: false },
resolve: {
clientIdentities: ClientIdentitiesResolver,
clientIdentifierTemplate: ClientIdentifierTemplateResolver
}
},
{
path: 'kyc',
component: KycTabComponent,
data: { title: 'KYC', breadcrumb: 'KYC', routeParamBreadcrumb: false }
},
{
path: 'entity-classification',
component: EntityClassificationTabComponent,
data: { title: 'Scheme & Sector', breadcrumb: 'Scheme & Sector', routeParamBreadcrumb: false }
},
{
path: 'ckyc',
component: CkycTabComponent,
data: { title: 'CKYC', breadcrumb: 'CKYC', routeParamBreadcrumb: false }
},
{
path: 'form60',
component: Form60TabComponent,
data: { title: 'Form 60', breadcrumb: 'Form 60', routeParamBreadcrumb: false }
},
{
path: 'documents',
component: DocumentsTabComponent,
data: { title: 'Documents', breadcrumb: 'Documents', routeParamBreadcrumb: false },
resolve: {
clientDocuments: ClientDocumentsResolver
}
},
{
path: 'notes',
component: NotesTabComponent,
data: { title: 'Notes', breadcrumb: 'Notes', routeParamBreadcrumb: false },
resolve: {
clientNotes: ClientNotesResolver
}
},
{
path: 'datatables',
children: [
{
path: ':datatableName',
component: DatatableTabComponent,
data: { title: 'Data Table View', routeParamBreadcrumb: 'datatableName' },
resolve: {
clientDatatable: ClientDatatableResolver
}
}
]
}
]
}
]
},
{
path: 'clients',
data: { title: 'Clients', breadcrumb: 'Clients', routeParamBreadcrumb: false },
children: [
{
path: ':clientId',
data: { title: 'Clients View', routeParamBreadcrumb: 'clientId' },
resolve: {
clientViewData: ClientViewResolver
},
children: [
{
path: 'edit',
data: { title: 'Edit Client', breadcrumb: 'Edit', routeParamBreadcrumb: false },
component: EditClientComponent,
resolve: {
clientDataAndTemplate: ClientDataAndTemplateResolver
}
},
{
path: 'actions/:name',
data: { title: 'Client Actions', routeParamBreadcrumb: 'name' },
component: ClientActionsComponent,
resolve: {
clientActionData: ClientActionsResolver
}
},
{
path: 'charges',
children: [
{
path: 'overview',
data: { title: 'Charges Overview', breadcrumb: 'Charges Overview' },
component: ChargesOverviewComponent,
resolve: {
clientChargesData: ClientChargeOverviewResolver
}
},
{
path: ':chargeId',
data: { title: 'Charges', routeParamBreadcrumb: 'chargeId' },
children: [
{
path: '',
component: ViewChargeComponent,
resolve: {
clientChargeData: ClientChargeViewResolver
}
},
{
path: 'pay',
data: { title: 'Pay Charge', routeParamBreadcrumb: false },
component: ClientPayChargesComponent,
resolve: {
transactionData: ClientTransactionPayResolver
}
}
]
}
]
},
{
path: 'loans-accounts',
loadChildren: () => import('../loans/loans.module').then((m) => m.LoansModule)
},
{
path: 'client-collateral',
loadChildren: () => import('../collaterals/collaterals.module').then((m) => m.CollateralsModule)
},
{
path: 'fixed-deposits-accounts',
loadChildren: () =>
import('../deposits/fixed-deposits/fixed-deposits.module').then((m) => m.FixedDepositsModule)
},
{
path: 'savings-accounts',
loadChildren: () => import('../savings/savings.module').then((m) => m.SavingsModule)
},
{
path: 'current-accounts',
loadChildren: () =>
import('../current-accounts/current-accounts.module').then((m) => m.CurrentAccountsModule)
},
{
path: 'recurring-deposits-accounts',
loadChildren: () =>
import('../deposits/recurring-deposits/recurring-deposits.module').then(
(m) => m.RecurringDepositsModule
)
},
{
path: 'shares-accounts',
loadChildren: () => import('../shares/shares.module').then((m) => m.SharesModule)
},
{
path: 'standing-instructions',
loadChildren: () =>
import('../account-transfers/account-transfers.module').then((m) => m.AccountTransfersModule)
}
]
}
]
}
])
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
providers: [
ClientViewResolver,
ClientAccountsResolver,
ClientAddressResolver,
ClientChargesResolver,
ClientSummaryResolver,
ClientFamilyMembersResolver,
ClientFamilyMemberResolver,
ClientTemplateResolver,
ClientIdentitiesResolver,
ClientNotesResolver,
ClientDocumentsResolver,
ClientDatatablesResolver,
ClientDatatableResolver,
ClientIdentifierTemplateResolver,
ClientAddressFieldConfigurationResolver,
ClientAddressTemplateResolver,
ClientChargeOverviewResolver,
ClientActionsResolver,
ClientChargeViewResolver,
ClientTransactionPayResolver,
ClientDataAndTemplateResolver,
ClientCollateralResolver
]
})
export class ClientsRoutingModule {}