@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,655 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.MBWINService = void 0;
52
+ const common_1 = require("@nestjs/common");
53
+ const axios_1 = __importDefault(require("axios"));
54
+ const axios_error_helper_1 = require("../../helpers/axios-error.helper");
55
+ const bank_service_tokens_1 = require("../tokens/bank-service.tokens");
56
+ const https = __importStar(require("https"));
57
+ const nestjs_pino_1 = require("nestjs-pino");
58
+ let MBWINService = class MBWINService {
59
+ config;
60
+ logger;
61
+ constructor(config, logger) {
62
+ this.config = config;
63
+ this.logger = logger;
64
+ }
65
+ async generateToken() {
66
+ this.logger.log("Generating MBWINToken");
67
+ try {
68
+ const headers = {
69
+ 'Content-Type': 'application/json',
70
+ 'X-API-KEY': `${this.config.MBWIN_API_KEY}`,
71
+ };
72
+ const httpsAgent = new https.Agent({
73
+ rejectUnauthorized: false,
74
+ });
75
+ const response = await axios_1.default.get(`${this.config.MBWIN_URL}:${this.config.MBWIN_PORT}/api/token`, {
76
+ headers: headers,
77
+ httpsAgent,
78
+ });
79
+ this.logger.log({ responseData: response }, 'MBWIN Token generated successfully');
80
+ return {
81
+ success: true,
82
+ ...response.data,
83
+ };
84
+ }
85
+ catch (error) {
86
+ axios_error_helper_1.AxiosErrorHelper.handleAxiosError(error);
87
+ }
88
+ }
89
+ async refreshToken(refreshToken) {
90
+ this.logger.log("MBWIN refresh token");
91
+ return "Sorry service is currently unavaible";
92
+ }
93
+ async linkAccount(accountDto) {
94
+ const { token, account, accountType, mobile, branch, fullName, birthDate } = accountDto;
95
+ if (!token) {
96
+ throw new common_1.HttpException({
97
+ statusCode: common_1.HttpStatus.UNAUTHORIZED,
98
+ code: 4000,
99
+ message: 'Bank token should not be empty.',
100
+ data: { accountDto }
101
+ }, common_1.HttpStatus.UNAUTHORIZED);
102
+ }
103
+ if (!account) {
104
+ throw new common_1.HttpException({
105
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
106
+ code: 4000,
107
+ message: 'Bank account number should not be empty.',
108
+ data: { accountDto }
109
+ }, common_1.HttpStatus.BAD_REQUEST);
110
+ }
111
+ if (!branch) {
112
+ throw new common_1.HttpException({
113
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
114
+ code: 4000,
115
+ message: 'Bank branch should not be empty.',
116
+ data: { accountDto }
117
+ }, common_1.HttpStatus.BAD_REQUEST);
118
+ }
119
+ if (!accountType) {
120
+ throw new common_1.HttpException({
121
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
122
+ code: 4000,
123
+ message: 'Bank account type should not be empty.',
124
+ data: { accountDto }
125
+ }, common_1.HttpStatus.BAD_REQUEST);
126
+ }
127
+ if (!mobile) {
128
+ throw new common_1.HttpException({
129
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
130
+ code: 4000,
131
+ message: 'Mobile Number should not be empty.',
132
+ data: { accountDto }
133
+ }, common_1.HttpStatus.BAD_REQUEST);
134
+ }
135
+ if (!fullName) {
136
+ throw new common_1.HttpException({
137
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
138
+ code: 4000,
139
+ message: 'Full name should not be empty.',
140
+ data: { accountDto }
141
+ }, common_1.HttpStatus.BAD_REQUEST);
142
+ }
143
+ if (!birthDate) {
144
+ throw new common_1.HttpException({
145
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
146
+ code: 4000,
147
+ message: 'Birth date should not be empty.',
148
+ data: { accountDto }
149
+ }, common_1.HttpStatus.BAD_REQUEST);
150
+ }
151
+ this.logger.log("MBWIN Link Account");
152
+ try {
153
+ const headers = {
154
+ 'Authorization': `Bearer ${token}`,
155
+ 'Content-Type': 'application/json',
156
+ };
157
+ const httpsAgent = new https.Agent({
158
+ rejectUnauthorized: false,
159
+ });
160
+ const payload = {
161
+ "acc": account,
162
+ "br": branch,
163
+ "appType": accountType,
164
+ "displayName": fullName,
165
+ "birthDate": birthDate,
166
+ "mobile1": mobile
167
+ };
168
+ console.log(payload);
169
+ const response = await axios_1.default.post(`${this.config.MBWIN_URL}:${this.config.MBWIN_PORT}/api/account/link`, payload, {
170
+ headers: headers,
171
+ httpsAgent
172
+ });
173
+ this.logger.log({ responseData: response }, 'MBWIN Link Account Successful');
174
+ return {
175
+ success: true,
176
+ ...response.data,
177
+ };
178
+ }
179
+ catch (error) {
180
+ axios_error_helper_1.AxiosErrorHelper.handleAxiosError(error);
181
+ }
182
+ }
183
+ async validateOtp(validateOtp) {
184
+ const { token, account, otp } = validateOtp;
185
+ if (!token) {
186
+ throw new common_1.HttpException({
187
+ statusCode: common_1.HttpStatus.UNAUTHORIZED,
188
+ code: 4000,
189
+ message: 'Bank token should not be empty.',
190
+ data: { validateOtp }
191
+ }, common_1.HttpStatus.UNAUTHORIZED);
192
+ }
193
+ if (!account) {
194
+ throw new common_1.HttpException({
195
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
196
+ code: 4000,
197
+ message: 'Bank account number should not be empty.',
198
+ data: { validateOtp }
199
+ }, common_1.HttpStatus.BAD_REQUEST);
200
+ }
201
+ if (!otp) {
202
+ throw new common_1.HttpException({
203
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
204
+ code: 4000,
205
+ message: 'Mobile Number should not be empty.',
206
+ data: { validateOtp }
207
+ }, common_1.HttpStatus.BAD_REQUEST);
208
+ }
209
+ this.logger.log("MBWIN Validate OTP");
210
+ try {
211
+ const headers = {
212
+ 'Authorization': `Bearer ${token}`,
213
+ 'Content-Type': 'application/json',
214
+ };
215
+ const payload = {
216
+ "acc": account,
217
+ "otp": otp
218
+ };
219
+ const httpsAgent = new https.Agent({
220
+ rejectUnauthorized: false,
221
+ });
222
+ const response = await axios_1.default.post(`${this.config.MBWIN_URL}:${this.config.MBWIN_PORT}/api/account/validate`, payload, {
223
+ headers: headers,
224
+ httpsAgent
225
+ });
226
+ this.logger.log({ responseData: response }, 'MBWIN Validate OTP Successful');
227
+ return {
228
+ success: true,
229
+ ...response.data,
230
+ };
231
+ }
232
+ catch (error) {
233
+ axios_error_helper_1.AxiosErrorHelper.handleAxiosError(error);
234
+ }
235
+ }
236
+ async processBalanceTransaction(fetchBalanceDto) {
237
+ const { token, account, branch, accountType, fullName, birthDate, mobile } = fetchBalanceDto;
238
+ if (!token) {
239
+ throw new common_1.HttpException({
240
+ statusCode: common_1.HttpStatus.UNAUTHORIZED,
241
+ code: 4000,
242
+ message: 'Bank token should not be empty.',
243
+ data: { fetchBalanceDto }
244
+ }, common_1.HttpStatus.UNAUTHORIZED);
245
+ }
246
+ if (!account) {
247
+ throw new common_1.HttpException({
248
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
249
+ code: 4000,
250
+ message: 'Bank account number should not be empty.',
251
+ data: { fetchBalanceDto }
252
+ }, common_1.HttpStatus.BAD_REQUEST);
253
+ }
254
+ if (!branch) {
255
+ throw new common_1.HttpException({
256
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
257
+ code: 4000,
258
+ message: 'Bank branch should not be empty.',
259
+ data: { fetchBalanceDto }
260
+ }, common_1.HttpStatus.BAD_REQUEST);
261
+ }
262
+ if (!accountType) {
263
+ throw new common_1.HttpException({
264
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
265
+ code: 4000,
266
+ message: 'Bank account type should not be empty.',
267
+ data: { fetchBalanceDto }
268
+ }, common_1.HttpStatus.BAD_REQUEST);
269
+ }
270
+ if (!fullName) {
271
+ throw new common_1.HttpException({
272
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
273
+ code: 4000,
274
+ message: 'Full name should not be empty.',
275
+ data: { fetchBalanceDto }
276
+ }, common_1.HttpStatus.BAD_REQUEST);
277
+ }
278
+ if (!birthDate) {
279
+ throw new common_1.HttpException({
280
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
281
+ code: 4000,
282
+ message: 'Birth Date should not be empty.',
283
+ data: { fetchBalanceDto }
284
+ }, common_1.HttpStatus.BAD_REQUEST);
285
+ }
286
+ if (!mobile) {
287
+ throw new common_1.HttpException({
288
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
289
+ code: 4000,
290
+ message: 'Mobile number should not be empty.',
291
+ data: { fetchBalanceDto }
292
+ }, common_1.HttpStatus.BAD_REQUEST);
293
+ }
294
+ this.logger.log("MBWIN Balance Inquiry");
295
+ try {
296
+ const headers = {
297
+ 'Authorization': `Bearer ${token}`,
298
+ 'Content-Type': 'application/json',
299
+ };
300
+ const payload = {
301
+ "acc": account,
302
+ "br": branch,
303
+ "appType": accountType,
304
+ "displayName": fullName,
305
+ "birthDate": birthDate,
306
+ "mobile1": mobile
307
+ };
308
+ const httpsAgent = new https.Agent({
309
+ rejectUnauthorized: false,
310
+ });
311
+ const response = await axios_1.default.post(`${this.config.MBWIN_URL}:${this.config.MBWIN_PORT}/api/mbwin/balance-inquiry`, payload, {
312
+ headers: headers,
313
+ httpsAgent
314
+ });
315
+ this.logger.log({ responseData: response }, 'MBWIN Balance Inquiry Successful');
316
+ return {
317
+ success: true,
318
+ ...response.data,
319
+ };
320
+ }
321
+ catch (error) {
322
+ axios_error_helper_1.AxiosErrorHelper.handleAxiosError(error);
323
+ }
324
+ }
325
+ async accountCashIn(accountTransferDto) {
326
+ const { token, sourceAccount, amount, birthDate, sourceBranch, fullName, sourceAccountType, mobile } = accountTransferDto;
327
+ if (!token) {
328
+ throw new common_1.HttpException({
329
+ statusCode: common_1.HttpStatus.UNAUTHORIZED,
330
+ code: 4000,
331
+ message: 'Bank token should not be empty.',
332
+ data: { accountTransferDto }
333
+ }, common_1.HttpStatus.UNAUTHORIZED);
334
+ }
335
+ if (!sourceAccount) {
336
+ throw new common_1.HttpException({
337
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
338
+ code: 4000,
339
+ message: 'Bank source account number should not be empty.',
340
+ data: { accountTransferDto }
341
+ }, common_1.HttpStatus.BAD_REQUEST);
342
+ }
343
+ if (!sourceBranch) {
344
+ throw new common_1.HttpException({
345
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
346
+ code: 4000,
347
+ message: 'Bank source branch should not be empty.',
348
+ data: { accountTransferDto }
349
+ }, common_1.HttpStatus.BAD_REQUEST);
350
+ }
351
+ if (!sourceAccountType) {
352
+ throw new common_1.HttpException({
353
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
354
+ code: 4000,
355
+ message: 'Bank source account type should not be empty.',
356
+ data: { accountTransferDto }
357
+ }, common_1.HttpStatus.BAD_REQUEST);
358
+ }
359
+ if (!amount) {
360
+ throw new common_1.HttpException({
361
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
362
+ code: 4000,
363
+ message: 'Amount should not be empty.',
364
+ data: { accountTransferDto }
365
+ }, common_1.HttpStatus.BAD_REQUEST);
366
+ }
367
+ if (!fullName) {
368
+ throw new common_1.HttpException({
369
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
370
+ code: 4000,
371
+ message: 'Full name should not be empty.',
372
+ data: { accountTransferDto }
373
+ }, common_1.HttpStatus.BAD_REQUEST);
374
+ }
375
+ if (!birthDate) {
376
+ throw new common_1.HttpException({
377
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
378
+ code: 4000,
379
+ message: 'Birth Date should not be empty.',
380
+ data: { accountTransferDto }
381
+ }, common_1.HttpStatus.BAD_REQUEST);
382
+ }
383
+ if (!mobile) {
384
+ throw new common_1.HttpException({
385
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
386
+ code: 4000,
387
+ message: 'Mobile number should not be empty.',
388
+ data: { accountTransferDto }
389
+ }, common_1.HttpStatus.BAD_REQUEST);
390
+ }
391
+ this.logger.log("MBWIN cash in");
392
+ try {
393
+ const headers = {
394
+ 'Authorization': `Bearer ${token}`,
395
+ 'Content-Type': 'application/json',
396
+ };
397
+ const payload = {
398
+ "trnAmt": amount,
399
+ "accountValidation": {
400
+ "acc": sourceAccount,
401
+ "br": sourceBranch,
402
+ "appType": sourceAccountType,
403
+ "displayName": fullName,
404
+ "birthDate": birthDate,
405
+ "mobile1": mobile
406
+ }
407
+ };
408
+ const httpsAgent = new https.Agent({
409
+ rejectUnauthorized: false,
410
+ });
411
+ const response = await axios_1.default.post(`${this.config.MBWIN_URL}:${this.config.MBWIN_PORT}/api/mbwin/account-transfer`, payload, {
412
+ headers: headers,
413
+ httpsAgent
414
+ });
415
+ this.logger.log({ responseData: response }, 'MBWIN Cash In Successful');
416
+ return {
417
+ success: true,
418
+ ...response.data,
419
+ };
420
+ }
421
+ catch (error) {
422
+ axios_error_helper_1.AxiosErrorHelper.handleAxiosError(error);
423
+ }
424
+ }
425
+ async accountDeposit(accountTransferDto) {
426
+ const { token, destinationAccount, amount, birthDate, destinationBranch, fullName, destinationAccountType, mobile } = accountTransferDto;
427
+ if (!token) {
428
+ throw new common_1.HttpException({
429
+ statusCode: common_1.HttpStatus.UNAUTHORIZED,
430
+ code: 4000,
431
+ message: 'Bank token should not be empty.',
432
+ data: { accountTransferDto }
433
+ }, common_1.HttpStatus.UNAUTHORIZED);
434
+ }
435
+ if (!destinationAccount) {
436
+ throw new common_1.HttpException({
437
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
438
+ code: 4000,
439
+ message: 'Bank destination account number should not be empty.',
440
+ data: { accountTransferDto }
441
+ }, common_1.HttpStatus.BAD_REQUEST);
442
+ }
443
+ if (!destinationBranch) {
444
+ throw new common_1.HttpException({
445
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
446
+ code: 4000,
447
+ message: 'Bank destination branch should not be empty.',
448
+ data: { accountTransferDto }
449
+ }, common_1.HttpStatus.BAD_REQUEST);
450
+ }
451
+ if (!destinationAccountType) {
452
+ throw new common_1.HttpException({
453
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
454
+ code: 4000,
455
+ message: 'Bank destination account type should not be empty.',
456
+ data: { accountTransferDto }
457
+ }, common_1.HttpStatus.BAD_REQUEST);
458
+ }
459
+ if (!amount) {
460
+ throw new common_1.HttpException({
461
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
462
+ code: 4000,
463
+ message: 'Amount should not be empty.',
464
+ data: { accountTransferDto }
465
+ }, common_1.HttpStatus.BAD_REQUEST);
466
+ }
467
+ if (!fullName) {
468
+ throw new common_1.HttpException({
469
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
470
+ code: 4000,
471
+ message: 'Full name should not be empty.',
472
+ data: { accountTransferDto }
473
+ }, common_1.HttpStatus.BAD_REQUEST);
474
+ }
475
+ if (!birthDate) {
476
+ throw new common_1.HttpException({
477
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
478
+ code: 4000,
479
+ message: 'Birth Date should not be empty.',
480
+ data: { accountTransferDto }
481
+ }, common_1.HttpStatus.BAD_REQUEST);
482
+ }
483
+ if (!mobile) {
484
+ throw new common_1.HttpException({
485
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
486
+ code: 4000,
487
+ message: 'Mobile number should not be empty.',
488
+ data: { accountTransferDto }
489
+ }, common_1.HttpStatus.BAD_REQUEST);
490
+ }
491
+ this.logger.log("MBWIN deposit");
492
+ try {
493
+ const headers = {
494
+ 'Authorization': `Bearer ${token}`,
495
+ 'Content-Type': 'application/json',
496
+ };
497
+ const payload = {
498
+ "trnAmt": amount,
499
+ "accountValidation": {
500
+ "acc": "0",
501
+ "accTo": destinationAccount,
502
+ "br": destinationBranch,
503
+ "appType": destinationAccountType,
504
+ "displayName": fullName,
505
+ "birthDate": birthDate,
506
+ "mobile1": mobile
507
+ }
508
+ };
509
+ const httpsAgent = new https.Agent({
510
+ rejectUnauthorized: false,
511
+ });
512
+ const response = await axios_1.default.post(`${this.config.MBWIN_URL}:${this.config.MBWIN_PORT}/api/mbwin/account-transfer`, payload, {
513
+ headers: headers,
514
+ httpsAgent
515
+ });
516
+ this.logger.log({ responseData: response.data }, 'Welcom Bank Deposit Successful');
517
+ return {
518
+ success: true,
519
+ ...response.data,
520
+ };
521
+ }
522
+ catch (error) {
523
+ axios_error_helper_1.AxiosErrorHelper.handleAxiosError(error);
524
+ }
525
+ }
526
+ async getTransactionHistory(transactionHistoryDto) {
527
+ const { token, account, dateFrom, dateTo, page, branch, accountType, fullName, birthDate, mobile } = transactionHistoryDto;
528
+ if (!token) {
529
+ throw new common_1.HttpException({
530
+ statusCode: common_1.HttpStatus.UNAUTHORIZED,
531
+ code: 4000,
532
+ message: 'Bank token should not be empty.',
533
+ data: { transactionHistoryDto }
534
+ }, common_1.HttpStatus.UNAUTHORIZED);
535
+ }
536
+ if (!account) {
537
+ throw new common_1.HttpException({
538
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
539
+ code: 4000,
540
+ message: 'Bank account number should not be empty.',
541
+ data: { transactionHistoryDto }
542
+ }, common_1.HttpStatus.BAD_REQUEST);
543
+ }
544
+ if (!branch) {
545
+ throw new common_1.HttpException({
546
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
547
+ code: 4000,
548
+ message: 'Bank branch should not be empty.',
549
+ data: { transactionHistoryDto }
550
+ }, common_1.HttpStatus.BAD_REQUEST);
551
+ }
552
+ if (!accountType) {
553
+ throw new common_1.HttpException({
554
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
555
+ code: 4000,
556
+ message: 'Bank account type should not be empty.',
557
+ data: { transactionHistoryDto }
558
+ }, common_1.HttpStatus.BAD_REQUEST);
559
+ }
560
+ if (!dateFrom) {
561
+ throw new common_1.HttpException({
562
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
563
+ code: 4000,
564
+ message: 'Date From should not be empty.',
565
+ data: { transactionHistoryDto }
566
+ }, common_1.HttpStatus.BAD_REQUEST);
567
+ }
568
+ if (!dateTo) {
569
+ throw new common_1.HttpException({
570
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
571
+ code: 4000,
572
+ message: 'Date From should not be empty.',
573
+ data: { transactionHistoryDto }
574
+ }, common_1.HttpStatus.BAD_REQUEST);
575
+ }
576
+ if (!fullName) {
577
+ throw new common_1.HttpException({
578
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
579
+ code: 4000,
580
+ message: 'Full name should not be empty.',
581
+ data: { transactionHistoryDto }
582
+ }, common_1.HttpStatus.BAD_REQUEST);
583
+ }
584
+ if (!birthDate) {
585
+ throw new common_1.HttpException({
586
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
587
+ code: 4000,
588
+ message: 'Birth Date should not be empty.',
589
+ data: { transactionHistoryDto }
590
+ }, common_1.HttpStatus.BAD_REQUEST);
591
+ }
592
+ if (!mobile) {
593
+ throw new common_1.HttpException({
594
+ statusCode: common_1.HttpStatus.BAD_REQUEST,
595
+ code: 4000,
596
+ message: 'Mobile number should not be empty.',
597
+ data: { transactionHistoryDto }
598
+ }, common_1.HttpStatus.BAD_REQUEST);
599
+ }
600
+ this.logger.log("MBWIN transaction history");
601
+ try {
602
+ const headers = {
603
+ 'Authorization': `Bearer ${token}`,
604
+ 'Content-Type': 'application/json',
605
+ };
606
+ const payload = {
607
+ "dateFrom": dateFrom,
608
+ "dateTo": dateTo,
609
+ "seqRef": page,
610
+ "accountValidation": {
611
+ "acc": account,
612
+ "br": branch,
613
+ "appType": accountType,
614
+ "displayName": fullName,
615
+ "birthDate": birthDate,
616
+ "mobile1": mobile
617
+ }
618
+ };
619
+ const httpsAgent = new https.Agent({
620
+ rejectUnauthorized: false,
621
+ });
622
+ const response = await axios_1.default.post(`${this.config.MBWIN_URL}:${this.config.MBWIN_PORT}/api/mbwin/history`, payload, {
623
+ headers: headers,
624
+ httpsAgent
625
+ });
626
+ this.logger.log({ responseData: response.data }, 'MBWIN Transaction History Successful');
627
+ return {
628
+ success: true,
629
+ ...response.data,
630
+ };
631
+ }
632
+ catch (error) {
633
+ axios_error_helper_1.AxiosErrorHelper.handleAxiosError(error);
634
+ }
635
+ }
636
+ async findAccountDetailsRaw(token, userid) {
637
+ return "Sorry Service Currently Unavaible";
638
+ }
639
+ async accountTransfer(token, useridFrom, useridTo, amount) {
640
+ return "Sorry Service Currently Unavaible";
641
+ }
642
+ generateOtp(mobile, acc, bankid) {
643
+ return "Sorry Service Currently Unavaible";
644
+ }
645
+ generateRandomOtp(length) {
646
+ return "Sorry Service Currently Unavaible";
647
+ }
648
+ };
649
+ exports.MBWINService = MBWINService;
650
+ exports.MBWINService = MBWINService = __decorate([
651
+ (0, common_1.Injectable)(),
652
+ __param(0, (0, common_1.Inject)(bank_service_tokens_1.BANKING_CONFIG)),
653
+ __metadata("design:paramtypes", [Object, nestjs_pino_1.Logger])
654
+ ], MBWINService);
655
+ //# sourceMappingURL=MBWIN.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MBWIN.service.js","sourceRoot":"","sources":["../../../src/banking/services/MBWIN.service.ts"],"names":[],"mappings":"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"}