@traxionpay/cbsmiddleware 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/.prettierrc +4 -0
  2. package/Dockerfile +26 -0
  3. package/README.md +109 -0
  4. package/dist/app.module.d.ts +3 -0
  5. package/dist/app.module.d.ts.map +1 -0
  6. package/dist/app.module.js +44 -0
  7. package/dist/app.module.js.map +1 -0
  8. package/dist/auth/apikey.guard.d.ts +9 -0
  9. package/dist/auth/apikey.guard.d.ts.map +1 -0
  10. package/dist/auth/apikey.guard.js +86 -0
  11. package/dist/auth/apikey.guard.js.map +1 -0
  12. package/dist/auth/auth.controller.d.ts +10 -0
  13. package/dist/auth/auth.controller.d.ts.map +1 -0
  14. package/dist/auth/auth.controller.js +65 -0
  15. package/dist/auth/auth.controller.js.map +1 -0
  16. package/dist/auth/auth.interface.d.ts +8 -0
  17. package/dist/auth/auth.interface.d.ts.map +1 -0
  18. package/dist/auth/auth.interface.js +3 -0
  19. package/dist/auth/auth.interface.js.map +1 -0
  20. package/dist/auth/auth.module.d.ts +6 -0
  21. package/dist/auth/auth.module.d.ts.map +1 -0
  22. package/dist/auth/auth.module.js +81 -0
  23. package/dist/auth/auth.module.js.map +1 -0
  24. package/dist/auth/constant.d.ts +2 -0
  25. package/dist/auth/constant.d.ts.map +1 -0
  26. package/dist/auth/constant.js +5 -0
  27. package/dist/auth/constant.js.map +1 -0
  28. package/dist/auth/jwt-constant.d.ts +8 -0
  29. package/dist/auth/jwt-constant.d.ts.map +1 -0
  30. package/dist/auth/jwt-constant.js +60 -0
  31. package/dist/auth/jwt-constant.js.map +1 -0
  32. package/dist/auth/jwt-guard.d.ts +5 -0
  33. package/dist/auth/jwt-guard.d.ts.map +1 -0
  34. package/dist/auth/jwt-guard.js +18 -0
  35. package/dist/auth/jwt-guard.js.map +1 -0
  36. package/dist/auth/jwt-strategy.d.ts +16 -0
  37. package/dist/auth/jwt-strategy.d.ts.map +1 -0
  38. package/dist/auth/jwt-strategy.js +59 -0
  39. package/dist/auth/jwt-strategy.js.map +1 -0
  40. package/dist/auth/services/auth.service.d.ts +14 -0
  41. package/dist/auth/services/auth.service.d.ts.map +1 -0
  42. package/dist/auth/services/auth.service.js +56 -0
  43. package/dist/auth/services/auth.service.js.map +1 -0
  44. package/dist/auth/services/encryption.service.d.ts +11 -0
  45. package/dist/auth/services/encryption.service.d.ts.map +1 -0
  46. package/dist/auth/services/encryption.service.js +49 -0
  47. package/dist/auth/services/encryption.service.js.map +1 -0
  48. package/dist/auth.config.d.ts +29 -0
  49. package/dist/auth.config.d.ts.map +1 -0
  50. package/dist/auth.config.js +71 -0
  51. package/dist/auth.config.js.map +1 -0
  52. package/dist/banking/banking.controller.d.ts +18 -0
  53. package/dist/banking/banking.controller.d.ts.map +1 -0
  54. package/dist/banking/banking.controller.js +146 -0
  55. package/dist/banking/banking.controller.js.map +1 -0
  56. package/dist/banking/banking.module.d.ts +6 -0
  57. package/dist/banking/banking.module.d.ts.map +1 -0
  58. package/dist/banking/banking.module.js +90 -0
  59. package/dist/banking/banking.module.js.map +1 -0
  60. package/dist/banking/dto/account-transfer.dto.d.ts +17 -0
  61. package/dist/banking/dto/account-transfer.dto.d.ts.map +1 -0
  62. package/dist/banking/dto/account-transfer.dto.js +101 -0
  63. package/dist/banking/dto/account-transfer.dto.js.map +1 -0
  64. package/dist/banking/dto/account.dto.d.ts +19 -0
  65. package/dist/banking/dto/account.dto.d.ts.map +1 -0
  66. package/dist/banking/dto/account.dto.js +104 -0
  67. package/dist/banking/dto/account.dto.js.map +1 -0
  68. package/dist/banking/dto/fetch-bank-balance.dto.d.ts +12 -0
  69. package/dist/banking/dto/fetch-bank-balance.dto.d.ts.map +1 -0
  70. package/dist/banking/dto/fetch-bank-balance.dto.js +71 -0
  71. package/dist/banking/dto/fetch-bank-balance.dto.js.map +1 -0
  72. package/dist/banking/dto/transaction-history.dto.d.ts +15 -0
  73. package/dist/banking/dto/transaction-history.dto.d.ts.map +1 -0
  74. package/dist/banking/dto/transaction-history.dto.js +89 -0
  75. package/dist/banking/dto/transaction-history.dto.js.map +1 -0
  76. package/dist/banking/factory/bank-strategy.factory.d.ts +9 -0
  77. package/dist/banking/factory/bank-strategy.factory.d.ts.map +1 -0
  78. package/dist/banking/factory/bank-strategy.factory.js +48 -0
  79. package/dist/banking/factory/bank-strategy.factory.js.map +1 -0
  80. package/dist/banking/interfaces/bank-config.interface.d.ts +22 -0
  81. package/dist/banking/interfaces/bank-config.interface.d.ts.map +1 -0
  82. package/dist/banking/interfaces/bank-config.interface.js +3 -0
  83. package/dist/banking/interfaces/bank-config.interface.js.map +1 -0
  84. package/dist/banking/interfaces/bank-service.interface.d.ts +19 -0
  85. package/dist/banking/interfaces/bank-service.interface.d.ts.map +1 -0
  86. package/dist/banking/interfaces/bank-service.interface.js +3 -0
  87. package/dist/banking/interfaces/bank-service.interface.js.map +1 -0
  88. package/dist/banking/services/ASPAC.service.d.ts +25 -0
  89. package/dist/banking/services/ASPAC.service.d.ts.map +1 -0
  90. package/dist/banking/services/ASPAC.service.js +498 -0
  91. package/dist/banking/services/ASPAC.service.js.map +1 -0
  92. package/dist/banking/services/BankGateway.service.d.ts +18 -0
  93. package/dist/banking/services/BankGateway.service.d.ts.map +1 -0
  94. package/dist/banking/services/BankGateway.service.js +71 -0
  95. package/dist/banking/services/BankGateway.service.js.map +1 -0
  96. package/dist/banking/services/MBWIN.service.d.ts +25 -0
  97. package/dist/banking/services/MBWIN.service.d.ts.map +1 -0
  98. package/dist/banking/services/MBWIN.service.js +655 -0
  99. package/dist/banking/services/MBWIN.service.js.map +1 -0
  100. package/dist/banking/services/WelcomeBank.service.d.ts +29 -0
  101. package/dist/banking/services/WelcomeBank.service.d.ts.map +1 -0
  102. package/dist/banking/services/WelcomeBank.service.js +840 -0
  103. package/dist/banking/services/WelcomeBank.service.js.map +1 -0
  104. package/dist/banking/services/sms.service.d.ts +10 -0
  105. package/dist/banking/services/sms.service.d.ts.map +1 -0
  106. package/dist/banking/services/sms.service.js +97 -0
  107. package/dist/banking/services/sms.service.js.map +1 -0
  108. package/dist/banking/tokens/bank-service.tokens.d.ts +5 -0
  109. package/dist/banking/tokens/bank-service.tokens.d.ts.map +1 -0
  110. package/dist/banking/tokens/bank-service.tokens.js +8 -0
  111. package/dist/banking/tokens/bank-service.tokens.js.map +1 -0
  112. package/dist/banking/types.d.ts +10 -0
  113. package/dist/banking/types.d.ts.map +1 -0
  114. package/dist/banking/types.js +3 -0
  115. package/dist/banking/types.js.map +1 -0
  116. package/dist/decorators/response_message.decorator.d.ts +2 -0
  117. package/dist/decorators/response_message.decorator.d.ts.map +1 -0
  118. package/dist/decorators/response_message.decorator.js +7 -0
  119. package/dist/decorators/response_message.decorator.js.map +1 -0
  120. package/dist/helpers/axios-error.helper.d.ts +6 -0
  121. package/dist/helpers/axios-error.helper.d.ts.map +1 -0
  122. package/dist/helpers/axios-error.helper.js +78 -0
  123. package/dist/helpers/axios-error.helper.js.map +1 -0
  124. package/dist/helpers/response-format.helper.d.ts +4 -0
  125. package/dist/helpers/response-format.helper.d.ts.map +1 -0
  126. package/dist/helpers/response-format.helper.js +15 -0
  127. package/dist/helpers/response-format.helper.js.map +1 -0
  128. package/dist/index.d.ts +10 -0
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +26 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/interceptors/response.interceptor.d.ts +16 -0
  133. package/dist/interceptors/response.interceptor.d.ts.map +1 -0
  134. package/dist/interceptors/response.interceptor.js +80 -0
  135. package/dist/interceptors/response.interceptor.js.map +1 -0
  136. package/dist/logger/logger-interceptor.d.ts +14 -0
  137. package/dist/logger/logger-interceptor.d.ts.map +1 -0
  138. package/dist/logger/logger-interceptor.js +60 -0
  139. package/dist/logger/logger-interceptor.js.map +1 -0
  140. package/dist/logger/logger-option.d.ts +6 -0
  141. package/dist/logger/logger-option.d.ts.map +1 -0
  142. package/dist/logger/logger-option.js +103 -0
  143. package/dist/logger/logger-option.js.map +1 -0
  144. package/dist/logger/logger.config.d.ts +3 -0
  145. package/dist/logger/logger.config.d.ts.map +1 -0
  146. package/dist/logger/logger.config.js +31 -0
  147. package/dist/logger/logger.config.js.map +1 -0
  148. package/dist/logger/logger.module.d.ts +3 -0
  149. package/dist/logger/logger.module.d.ts.map +1 -0
  150. package/dist/logger/logger.module.js +76 -0
  151. package/dist/logger/logger.module.js.map +1 -0
  152. package/dist/main.d.ts +2 -0
  153. package/dist/main.d.ts.map +1 -0
  154. package/dist/main.js +13 -0
  155. package/dist/main.js.map +1 -0
  156. package/dist/tsconfig.build.tsbuildinfo +1 -0
  157. package/docker-compose.yml +14 -0
  158. package/ecosystem.config.js +35 -0
  159. package/eslint.config.mjs +34 -0
  160. package/nest-cli.json +8 -0
  161. package/package.json +102 -0
  162. package/src/app.module.ts +33 -0
  163. package/src/auth/apikey.guard.ts +42 -0
  164. package/src/auth/auth.controller.ts +41 -0
  165. package/src/auth/auth.interface.ts +7 -0
  166. package/src/auth/auth.module.ts +125 -0
  167. package/src/auth/constant.ts +1 -0
  168. package/src/auth/jwt-constant.ts +31 -0
  169. package/src/auth/jwt-guard.ts +5 -0
  170. package/src/auth/jwt-strategy.ts +43 -0
  171. package/src/auth/services/auth.service.ts +33 -0
  172. package/src/auth/services/encryption.service.ts +35 -0
  173. package/src/auth.config.ts +42 -0
  174. package/src/banking/banking.controller.ts +142 -0
  175. package/src/banking/banking.module.ts +142 -0
  176. package/src/banking/dto/account-transfer.dto.ts +66 -0
  177. package/src/banking/dto/account.dto.ts +70 -0
  178. package/src/banking/dto/fetch-bank-balance.dto.ts +46 -0
  179. package/src/banking/dto/transaction-history.dto.ts +58 -0
  180. package/src/banking/factory/bank-strategy.factory.ts +25 -0
  181. package/src/banking/interfaces/bank-config.interface.ts +25 -0
  182. package/src/banking/interfaces/bank-service.interface.ts +164 -0
  183. package/src/banking/services/ASPAC.service.ts +574 -0
  184. package/src/banking/services/BankGateway.service.ts +64 -0
  185. package/src/banking/services/MBWIN.service.ts +779 -0
  186. package/src/banking/services/WelcomeBank.service.ts +990 -0
  187. package/src/banking/services/sms.service.ts +50 -0
  188. package/src/banking/tokens/bank-service.tokens.ts +4 -0
  189. package/src/banking/types.ts +10 -0
  190. package/src/decorators/response_message.decorator.ts +4 -0
  191. package/src/helpers/axios-error.helper.ts +63 -0
  192. package/src/helpers/response-format.helper.ts +15 -0
  193. package/src/index.ts +15 -0
  194. package/src/interceptors/response.interceptor.ts +53 -0
  195. package/src/logger/logger-interceptor.ts +55 -0
  196. package/src/logger/logger-option.ts +119 -0
  197. package/src/logger/logger.config.ts +31 -0
  198. package/src/logger/logger.module.ts +31 -0
  199. package/src/main.ts +10 -0
  200. package/src/types/pino-daily-rotate-file.d.ts +31 -0
  201. package/tsconfig.build.json +11 -0
  202. package/tsconfig.build.tsbuildinfo +1 -0
  203. package/tsconfig.json +22 -0
@@ -0,0 +1,142 @@
1
+ import { Controller, Post, Body, UseGuards } from '@nestjs/common';
2
+ import { FetchBankBalanceDto } from './dto/fetch-bank-balance.dto';
3
+ import { BankStrategyFactory } from './factory/bank-strategy.factory';
4
+ import { JwtAuthGuard } from '../auth/jwt-guard';
5
+ import { ResponseMessage } from '../decorators/response_message.decorator';
6
+ import { AccountDto, ValidateOtp } from './dto/account.dto';
7
+ import { TransactionHistoryDto } from './dto/transaction-history.dto'
8
+ import { AccountTransferDto } from './dto/account-transfer.dto'
9
+
10
+ @Controller('banking')
11
+ @UseGuards(JwtAuthGuard)
12
+ export class BankingController {
13
+ constructor(private readonly factory: BankStrategyFactory) { }
14
+
15
+ @Post('token')
16
+ @ResponseMessage("Tokens")
17
+ async getAccessToken(@Body() body: any) {
18
+
19
+ const bankid = body.bankId;
20
+
21
+ const service = this.factory.getBankService(bankid);
22
+
23
+ const token = await service.generateToken();
24
+
25
+ return token;
26
+
27
+ }
28
+
29
+
30
+ @Post('refresh-token')
31
+ @ResponseMessage("Refresh Token")
32
+ async getRefreshToken(@Body() body: any) {
33
+
34
+ const service = this.factory.getBankService(body.bankId);
35
+
36
+ const response = await service.refreshToken(body.refreshToken);
37
+
38
+ return response;
39
+
40
+ }
41
+
42
+ @Post('link')
43
+ @ResponseMessage("Generate OTP from Mobile No.:")
44
+ async linkAccount(@Body() accountDto: AccountDto) {
45
+ // async linkAccount(@Query('acc') acc: string, @Query('br') br?: string) {
46
+ const { bankId } = accountDto;
47
+ //let send_otp!: string;
48
+ // let otp!: string;
49
+ /* if (!userid ) {
50
+ return { success: false, message: 'Account No. is required' };
51
+ } */
52
+ const service = this.factory.getBankService(bankId);
53
+
54
+ const response = await service.linkAccount(accountDto);
55
+
56
+ return response;
57
+ //const response = await service.findAccountDetailsRaw(token.token, userid);
58
+
59
+ //const { id, username, mobileNumber, ...rest } = response;
60
+
61
+ /* if (response) {
62
+ const otp = service.generateOtp(mobileNumber, id.toString(), bankid);
63
+ send_otp = otp;
64
+ return { success: true, send_otp, message: 'OTP Sent. Kindly verify your OTP' };
65
+ } else {
66
+ return { success: false, send_otp: {}, message: 'Account Not Found' };
67
+ } */
68
+ }
69
+
70
+ @Post('validate')
71
+ @ResponseMessage("OTP Validation")
72
+ async validateOtp(@Body() validateOtp: ValidateOtp) {
73
+ const { bankId } = validateOtp;
74
+
75
+ const service = this.factory.getBankService(bankId);
76
+
77
+ /* if (!acc || !otp) {
78
+ return { success: false, message: 'Mobile No. and OTP are required' };
79
+ }
80
+
81
+ const isValid = service.validateOtp(acc.toString(), otp);
82
+ */
83
+
84
+ const response = service.validateOtp(validateOtp);
85
+ /* return {
86
+ success: isValid,
87
+ message: isValid ? 'OTP is valid' : 'Invalid or expired OTP',
88
+ }; */
89
+
90
+ return response;
91
+ }
92
+
93
+
94
+ @Post('balance-inquiry')
95
+ async fetchBankBalance(@Body() fetchBankBalanceDto: FetchBankBalanceDto) {
96
+
97
+ const { bankId } = fetchBankBalanceDto
98
+
99
+ const service = this.factory.getBankService(bankId);
100
+
101
+
102
+ const balance = await service.processBalanceTransaction(fetchBankBalanceDto);
103
+
104
+ return balance;
105
+ }
106
+
107
+ @Post('wallet-cash-in')
108
+ @ResponseMessage("Account Cash In")
109
+ async accountCashIn(@Body() accountTransaferDto: AccountTransferDto) {
110
+ const { bankId } = accountTransaferDto;
111
+
112
+ const service = this.factory.getBankService(bankId);
113
+
114
+ const response = await service.accountCashIn(accountTransaferDto);
115
+
116
+ return response;
117
+ }
118
+
119
+ @Post('bank-deposit')
120
+ @ResponseMessage("Account Deposit")
121
+ async accountDeposit(@Body() accountTransaferDto: AccountTransferDto) {
122
+ const { bankId } = accountTransaferDto;
123
+
124
+ const service = this.factory.getBankService(bankId);
125
+
126
+ const response = await service.accountDeposit(accountTransaferDto);
127
+
128
+ return response;
129
+ }
130
+ @Post('transaction-history')
131
+ @ResponseMessage("Transaction History")
132
+ async getTranHisto(@Body() transactionHistoryDto: TransactionHistoryDto) {
133
+ const { bankId } = transactionHistoryDto;
134
+
135
+ const service = this.factory.getBankService(bankId);
136
+
137
+ const response = await service.getTransactionHistory(transactionHistoryDto);
138
+
139
+ return response;
140
+ }
141
+
142
+ }
@@ -0,0 +1,142 @@
1
+ import { DynamicModule, Module, Provider } from '@nestjs/common';
2
+ import { BankingModuleOptions } from './types';
3
+ import { ASPAC_SERVICE_TOKEN, BANKING_CONFIG, MBWIN_SERVICE_TOKEN, WELCOMEBANK_SERVICE_TOKEN } from './tokens/bank-service.tokens';
4
+ import { SmsService } from './services/sms.service';
5
+ import { BankStrategyFactory } from './factory/bank-strategy.factory';
6
+ import { BankingController } from './banking.controller';
7
+ import { AppLoggerModule } from '../logger/logger.module';
8
+ import { ConfigModule } from '@nestjs/config';
9
+ import { ASPACService } from './services/ASPAC.service';
10
+ import { WelcomeBankService } from './services/WelcomeBank.service';
11
+ import { MBWINService } from './services/MBWIN.service';
12
+ import { BankingGatewayService } from './services/BankGateway.service';
13
+
14
+ /**
15
+ * The `BankingModule` provides dynamic registration for bank service integrations.
16
+ *
17
+ * This module allows you to inject custom implementations of bank services (e.g., Bank1, Bank2)
18
+ * and configuration options for flexible banking-related operations such as balance checks,
19
+ * OTP generation, and transaction history retrieval.
20
+ *
21
+ * It uses the strategy pattern internally to switch between bank service implementations at runtime.
22
+ *
23
+ * @export
24
+ * @class BankingModule
25
+ * @typedef {BankingModule}
26
+ *
27
+ * @example
28
+ * // Register with custom service implementations
29
+ * BankingModule.register({
30
+ * bank1Service: CustomBank1Service,
31
+ * bank2Service: CustomBank2Service,
32
+ * config: {
33
+ * BANK1_AUTH_KEY: 'abc123',
34
+ * BANK1_URL: 'https://bank1.api',
35
+ * BANK1_DATA_PORT: 3001,
36
+ * ...
37
+ * },
38
+ * });
39
+ */
40
+ @Module({})
41
+ export class BankingModule {
42
+ /**
43
+ * Registers the `BankingModule` dynamically with optional overrides for services and config.
44
+ *
45
+ * @static
46
+ * @param {BankingModuleOptions} [options={}] - Configuration options for banking integration.
47
+ * @returns {DynamicModule} A configured `DynamicModule` to be imported in the main AppModule or feature module.
48
+ *
49
+ * @example
50
+ * import { BankingModule } from './banking/banking.module';
51
+ *
52
+ * `@`Module({
53
+ * imports: [
54
+ * BankingModule.register({
55
+ * bank1Service: CustomBank1Service,
56
+ * config: {
57
+ * BANK1_AUTH_KEY: process.env.BANK1_KEY,
58
+ * BANK1_URL: 'https://api.bank1.com',
59
+ * BANK1_DATA_PORT: 443,
60
+ * BANK1_MESSAGE_ID: 'MSG1234'
61
+ * },
62
+ * })
63
+ * ],
64
+ * })
65
+ * export class AppModule {}
66
+ */
67
+ static register(options: BankingModuleOptions = {}): DynamicModule {
68
+ // Provide default configuration if none is passed
69
+ const configProvider: Provider = {
70
+ provide: BANKING_CONFIG,
71
+ useValue: options.config ?? {
72
+ BANK1_DATA_KEY: '',
73
+ BANK1_AUTH_KEY: '',
74
+ BANK2_AUTH_KEY: '',
75
+ BANK1_URL: '',
76
+ BANK2_URL: '',
77
+ BANK1_DATA_PORT: 0,
78
+ BANK2_DATA_PORT: 0,
79
+ BANK1_MESSAGE_ID: '',
80
+
81
+ //ASPAC
82
+ ASPAC_URL: '',
83
+ ASPAC_API_KEY: '',
84
+ ASPAC_VERSION_KEY: '',
85
+
86
+ //WelcomeBank
87
+ WELCOMEBANK_URL: '',
88
+ WELCOMEBANK_PORT: 0,
89
+ WELCOMEBANK_API_KEY: '',
90
+ WELCOMEBANK_VERSION_KEY: '',
91
+ WELCOMBANK_ENABLEENCRYPTION: false,
92
+
93
+ //MBWIN
94
+ MBWIN_URL: '',
95
+ MBWIN_PORT: 0,
96
+ MBWIN_API_KEY: '',
97
+
98
+ },
99
+ };
100
+
101
+ // Core providers including injectable services and strategy factory
102
+ const providers: Provider[] = [
103
+ configProvider,
104
+ {
105
+ provide: ASPAC_SERVICE_TOKEN,
106
+ useClass: options.ASPACService ?? ASPACService,
107
+ },
108
+ {
109
+ provide: WELCOMEBANK_SERVICE_TOKEN,
110
+ useClass: options.WelcomeBankService ?? WelcomeBankService,
111
+ },
112
+ {
113
+ provide: MBWIN_SERVICE_TOKEN,
114
+ useClass: options.MBWINService ?? MBWINService,
115
+ },
116
+ BankStrategyFactory,
117
+ ASPACService,
118
+ WelcomeBankService,
119
+ SmsService,
120
+ MBWINService,
121
+ BankingGatewayService,
122
+ ];
123
+
124
+ // Return the dynamic module definition
125
+ return {
126
+ module: BankingModule,
127
+ imports: [
128
+ AppLoggerModule, // Custom application logger
129
+ ConfigModule, // NestJS config module for env vars
130
+ ],
131
+ controllers: [BankingController], // Controller to expose routes
132
+ providers, // Registered providers
133
+ exports: [
134
+ BankStrategyFactory,
135
+ ASPACService,
136
+ BankingGatewayService,
137
+
138
+ configProvider, // Export config for downstream modules
139
+ ],
140
+ };
141
+ }
142
+ }
@@ -0,0 +1,66 @@
1
+ import {
2
+ IsDefined,
3
+ IsNotEmpty,
4
+ IsNumber,
5
+ IsOptional,
6
+ IsString
7
+ } from "class-validator";
8
+
9
+ export class AccountTransferDto {
10
+
11
+ @IsDefined()
12
+ @IsString()
13
+ bankId: string
14
+
15
+ @IsOptional()
16
+ @IsString()
17
+ token?: string
18
+
19
+ @IsOptional()
20
+ @IsString()
21
+ permissionKey?: string
22
+
23
+ @IsOptional()
24
+ @IsString()
25
+ sourceAccount?: string;
26
+
27
+ @IsOptional()
28
+ @IsString()
29
+ sourceBranch?: string;
30
+
31
+ @IsOptional()
32
+ @IsString()
33
+ sourceAccountType?: string;
34
+
35
+ @IsOptional()
36
+ @IsString()
37
+ destinationAccount?: string;
38
+
39
+ @IsOptional()
40
+ @IsString()
41
+ destinationBranch?: string;
42
+
43
+ @IsOptional()
44
+ @IsString()
45
+ destinationAccountType?: string;
46
+
47
+ @IsOptional()
48
+ @IsNumber()
49
+ amount?: number;
50
+
51
+ @IsOptional()
52
+ @IsString()
53
+ particulars?: string;
54
+
55
+ @IsOptional()
56
+ @IsNumber()
57
+ mobile?: number
58
+
59
+ @IsOptional()
60
+ @IsString()
61
+ fullName?: string;
62
+
63
+ @IsOptional()
64
+ @IsString()
65
+ birthDate?: string;
66
+ }
@@ -0,0 +1,70 @@
1
+ import {
2
+ IsDefined,
3
+ IsNotEmpty,
4
+ IsNumber,
5
+ IsString,
6
+ IsOptional
7
+ } from "class-validator";
8
+
9
+ export class AccountDto {
10
+
11
+ @IsDefined()
12
+ @IsString()
13
+ bankId: string
14
+
15
+ @IsOptional()
16
+ @IsString()
17
+ token?: string
18
+
19
+ @IsDefined()
20
+ @IsString()
21
+ account?: string
22
+
23
+ @IsOptional()
24
+ @IsString()
25
+ branch?: string;
26
+
27
+ @IsOptional()
28
+ @IsString()
29
+ accountType?: string;
30
+
31
+ @IsOptional()
32
+ @IsNumber()
33
+ mobile?: number
34
+
35
+ @IsOptional()
36
+ @IsString()
37
+ fullName?: string;
38
+
39
+ @IsOptional()
40
+ @IsString()
41
+ birthDate?: string;
42
+
43
+ }
44
+
45
+ export class ValidateOtp {
46
+
47
+ @IsDefined()
48
+ @IsString()
49
+ bankId: string
50
+
51
+ @IsDefined()
52
+ @IsString()
53
+ token?: string
54
+
55
+ @IsDefined()
56
+ @IsString()
57
+ account?: string
58
+
59
+ @IsOptional()
60
+ @IsString()
61
+ branch?: string;
62
+
63
+ @IsOptional()
64
+ @IsString()
65
+ accountType?: string;
66
+
67
+ @IsOptional()
68
+ @IsString()
69
+ otp?: string
70
+ }
@@ -0,0 +1,46 @@
1
+ import {
2
+ IsDefined,
3
+ IsString,
4
+ IsOptional,
5
+ IsNumber
6
+ } from "class-validator";
7
+
8
+ export class FetchBankBalanceDto {
9
+
10
+ @IsDefined()
11
+ @IsString()
12
+ bankId: string
13
+
14
+ @IsOptional()
15
+ @IsString()
16
+ token?: string
17
+
18
+ @IsOptional()
19
+ @IsString()
20
+ permissionKey?: string
21
+
22
+ @IsOptional()
23
+ @IsString()
24
+ account?: string;
25
+
26
+ @IsOptional()
27
+ @IsString()
28
+ branch?: string;
29
+
30
+ @IsOptional()
31
+ @IsString()
32
+ accountType?: string;
33
+
34
+ @IsOptional()
35
+ @IsNumber()
36
+ mobile?: number
37
+
38
+ @IsOptional()
39
+ @IsString()
40
+ fullName?: string;
41
+
42
+ @IsOptional()
43
+ @IsString()
44
+ birthDate?: string;
45
+
46
+ }
@@ -0,0 +1,58 @@
1
+ import {
2
+ IsDefined,
3
+ IsNotEmpty,
4
+ IsNumber,
5
+ IsOptional,
6
+ IsString
7
+ } from "class-validator";
8
+
9
+ export class TransactionHistoryDto {
10
+
11
+ @IsDefined()
12
+ @IsString()
13
+ bankId: string
14
+
15
+ @IsOptional()
16
+ @IsString()
17
+ token?: string
18
+
19
+ @IsOptional()
20
+ @IsString()
21
+ permissionKey?: string
22
+
23
+ @IsOptional()
24
+ @IsString()
25
+ account?: string;
26
+
27
+ @IsOptional()
28
+ @IsString()
29
+ branch?: string;
30
+
31
+ @IsOptional()
32
+ @IsString()
33
+ accountType?: string;
34
+
35
+ @IsOptional()
36
+ @IsString()
37
+ dateFrom?: string;
38
+
39
+ @IsOptional()
40
+ @IsString()
41
+ dateTo?: string;
42
+
43
+ @IsOptional()
44
+ @IsNumber()
45
+ page?: number;
46
+
47
+ @IsOptional()
48
+ @IsNumber()
49
+ mobile?: number
50
+
51
+ @IsOptional()
52
+ @IsString()
53
+ fullName?: string;
54
+
55
+ @IsOptional()
56
+ @IsString()
57
+ birthDate?: string;
58
+ }
@@ -0,0 +1,25 @@
1
+ import { Inject, Injectable } from '@nestjs/common';
2
+ import { BankService } from '../interfaces/bank-service.interface';
3
+ import { ASPAC_SERVICE_TOKEN, WELCOMEBANK_SERVICE_TOKEN, MBWIN_SERVICE_TOKEN } from '../tokens/bank-service.tokens';
4
+
5
+ @Injectable()
6
+ export class BankStrategyFactory {
7
+ constructor(
8
+ @Inject(ASPAC_SERVICE_TOKEN) private readonly ASPACService: BankService,
9
+ @Inject(WELCOMEBANK_SERVICE_TOKEN) private readonly WelcomeBankService: BankService,
10
+ @Inject(MBWIN_SERVICE_TOKEN) private readonly MBWINService: BankService,
11
+ ) {}
12
+
13
+ getBankService(bankid: string): BankService {
14
+ switch (bankid) {
15
+ case 'ASPAC':
16
+ return this.ASPACService;
17
+ case 'RBSAGAY':
18
+ return this.MBWINService;
19
+ case 'WELCOMEBANK':
20
+ return this.WelcomeBankService;
21
+ default:
22
+ throw new Error(`Unsupported bankId: ${bankid}`);
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ // banking-config.interface.ts
2
+ export interface BankingConfig {
3
+ BANK1_DATA_KEY: string;
4
+ BANK1_AUTH_KEY: string;
5
+ BANK2_AUTH_KEY: string;
6
+ BANK1_URL: string;
7
+ BANK2_URL: string;
8
+ BANK1_DATA_PORT: number;
9
+ BANK2_DATA_PORT: number;
10
+ BANK1_MESSAGE_ID: string;
11
+ //ASPAC
12
+ ASPAC_URL: string;
13
+ ASPAC_API_KEY: string;
14
+ ASPAC_VERSION_KEY: string;
15
+ //WelcomeBank
16
+ WELCOMEBANK_URL: string;
17
+ WELCOMEBANK_PORT: number;
18
+ WELCOMEBANK_API_KEY: string;
19
+ WELCOMEBANK_VERSION_KEY: string;
20
+ WELCOMBANK_ENABLEENCRYPTION: boolean;
21
+ //MBWIN
22
+ MBWIN_URL: string,
23
+ MBWIN_PORT: number,
24
+ MBWIN_API_KEY: string,
25
+ }