You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

715 lines
23 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. //
  2. // APIRouter.swift
  3. // GME Remit
  4. //
  5. // Created by InKwon James Kim on 09/08/2019.
  6. // Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. import Alamofire
  10. import Localize_Swift
  11. import ObjectMapper
  12. enum APIRouter {
  13. // MARK: - Login
  14. case accesscode(username: String, password: String)
  15. case customerProfile(firebaseToken: String)
  16. // MARK: - Register
  17. case customerRegister(registerModel: RegisterRequestModel, firebaseToken: String)
  18. case passwordReset(userName: String)
  19. case validation(userName: String, idNumber: String, idType: String)
  20. case countriesServices
  21. case calculateDefExRate(model: ExchangeRateRequestModel)
  22. // MARK: - KFTC
  23. case getKFTCParamers(username: String)
  24. case deleteAutoDebitAccount(username: String, kftcLogID: String)
  25. case renewalToken(username: String)
  26. case fetchBankList
  27. case checkRealName(model: VerifyAccountRequestModel)
  28. case fetchKFTCURL(url: String)
  29. case domesticRemitStart
  30. case getRecentHistories(from: String, to: String)
  31. case fetchBalace(type: String, fintechUseNumber: String)
  32. case fetchRecipientName(bankCode: String, accountNumber: String)
  33. case sendDomesticRemit(model: DomesticRemitRequestModel)
  34. // MARK: - Receiver
  35. case fetchRecipients(senderID: String)
  36. case dynamicReceiver(username: String, countryID: String, serviceTypeID: String)
  37. case fetchCountriesAndServiceTypes(username: String)
  38. case addRecipient(senderID: String, recipient: Recipient)
  39. case editRecipient(senderID: String, recipient: Recipient)
  40. case deleteRecipient(senderID: String, recipientID: String)
  41. case fetchBranches(countryCode: String, bankID: String, branchName: String)
  42. case validateAccount(validateModel: ValidateAccountRequest)
  43. case domesticTransactionHistory(from: String, to: String)
  44. case domesticReceipt(transactionID: String)
  45. }
  46. // MARK: - Request
  47. extension APIRouter: ApiServiceType {
  48. private var manager: SessionManager {
  49. let manager = Alamofire.SessionManager.default
  50. manager.session.configuration.timeoutIntervalForRequest = 150
  51. return manager
  52. }
  53. private var uuid: String {
  54. guard let uuid = GMEDB.shared.app.string(.uuid) else {
  55. let uuid = UUID().uuidString
  56. GMEDB.shared.app.set(uuid, .uuid)
  57. return uuid
  58. }
  59. return uuid
  60. }
  61. private var beforeLoginHeader: [String: String] {
  62. let currentLanguage = Localize.currentLanguage()
  63. let lang = Utility.getLanguageHeader(for: currentLanguage)
  64. let authValue = "172017F9EC11222E8107142733:QRK2UM0Q:\(uuid)".toBase64()
  65. return [
  66. "Authorization": "Basic \(authValue)",
  67. "GME-TOKEN" : "39587YT398@FBQOW8RY3#948R7GB@CNEQW987GF87$TD18$1981..919@@##joghndvberteiru",
  68. "Content-Type": "application/json",
  69. "lang" : lang
  70. ]
  71. }
  72. private var afterLoginHeader: [String: String] {
  73. let accessCode = GMEDB.shared.user.string(.accessCode) ?? ""
  74. let currentLanguage = Localize.currentLanguage()
  75. let lang = Utility.getLanguageHeader(for: currentLanguage)
  76. return [
  77. "Authorization": "Bearer " + accessCode,
  78. "GME-TOKEN" : "39587YT398@FBQOW8RY3#948R7GB@CNEQW987GF87$TD18$1981..919@@##joghndvberteiru",
  79. "Content-Type": "application/json",
  80. "clientId": Utility.getMyKftcClientId(),
  81. "lang" : lang
  82. ]
  83. }
  84. func json(
  85. encoding: ParameterEncoding = JSONEncoding.default,
  86. needsAuthorization: Bool = true,
  87. success: @escaping () -> Void,
  88. failure: @escaping (Error) -> Void
  89. ) {
  90. guard
  91. let isReachable = NetworkReachabilityManager()?.isReachable,
  92. isReachable else {
  93. let error = NSError(
  94. domain: "NETWORK_REACHABILITY_DOMAIN",
  95. code: -99,
  96. message: "No Internet connection found. Check your connection."
  97. )
  98. return failure(error)
  99. }
  100. manager.request(
  101. self.endpoint,
  102. method: self.method,
  103. parameters: self.parameters,
  104. encoding: encoding,
  105. headers: needsAuthorization ? afterLoginHeader : beforeLoginHeader
  106. )
  107. .handle(
  108. success: { (response: ResponseContainer<Void>) in
  109. if (response.errorCode ?? "") == "1" {
  110. let error = NSError(domain: "Network", code: 0, message: response.message ?? "")
  111. failure(error)
  112. } else {
  113. success()
  114. }
  115. },
  116. failure: failure
  117. )
  118. }
  119. func json<Element>(
  120. encoding: ParameterEncoding = JSONEncoding.default,
  121. needsAuthorization: Bool = true,
  122. success: @escaping (Element) -> Void,
  123. failure: @escaping (Error) -> Void
  124. ) {
  125. guard
  126. let isReachable = NetworkReachabilityManager()?.isReachable,
  127. isReachable else {
  128. let error = NSError(
  129. domain: "NETWORK_REACHABILITY_DOMAIN",
  130. code: -99,
  131. message: "No Internet connection found. Check your connection."
  132. )
  133. return failure(error)
  134. }
  135. manager.request(
  136. self.endpoint,
  137. method: self.method,
  138. parameters: self.parameters,
  139. encoding: encoding,
  140. headers: needsAuthorization ? afterLoginHeader : beforeLoginHeader
  141. )
  142. .handle(
  143. success: { (response: ResponseContainer<Element>) in
  144. if (response.errorCode ?? "") == "1" {
  145. let error = NSError(domain: "Network", code: 0, message: response.message ?? "")
  146. failure(error)
  147. } else {
  148. guard let data = response.data else {
  149. let error = NSError(domain: "Network", code: 0, message: "Data is nil")
  150. failure(error)
  151. return
  152. }
  153. success(data)
  154. }
  155. },
  156. failure: failure
  157. )
  158. }
  159. func json<Element: Mappable>(
  160. encoding: ParameterEncoding = JSONEncoding.default,
  161. needsAuthorization: Bool = true,
  162. success: @escaping (Element) -> Void,
  163. failure: @escaping (Error) -> Void
  164. ) {
  165. guard
  166. let isReachable = NetworkReachabilityManager()?.isReachable,
  167. isReachable else {
  168. let error = NSError(
  169. domain: "NETWORK_REACHABILITY_DOMAIN",
  170. code: -99,
  171. message: "No Internet connection found. Check your connection."
  172. )
  173. return failure(error)
  174. }
  175. manager.request(
  176. self.endpoint,
  177. method: self.method,
  178. parameters: self.parameters,
  179. encoding: encoding,
  180. headers: needsAuthorization ? afterLoginHeader : beforeLoginHeader
  181. )
  182. .handle(
  183. success: { (response: ResponseContainerObject<Element>) in
  184. if (response.errorCode ?? "") == "1" {
  185. let error = NSError(domain: "Network", code: 0, message: response.message ?? "")
  186. failure(error)
  187. } else {
  188. guard let data = response.data else {
  189. let error = NSError(domain: "Network", code: 0, message: "Data is nil")
  190. failure(error)
  191. return
  192. }
  193. success(data)
  194. }
  195. },
  196. failure: failure
  197. )
  198. }
  199. func json<Element: Mappable>(
  200. encoding: ParameterEncoding = JSONEncoding.default,
  201. needsAuthorization: Bool = true,
  202. success: @escaping ([Element]) -> Void,
  203. failure: @escaping (Error) -> Void
  204. ) {
  205. guard
  206. let isReachable = NetworkReachabilityManager()?.isReachable,
  207. isReachable else {
  208. let error = NSError(
  209. domain: "NETWORK_REACHABILITY_DOMAIN",
  210. code: -99,
  211. message: "No Internet connection found. Check your connection."
  212. )
  213. return failure(error)
  214. }
  215. manager.request(
  216. self.endpoint,
  217. method: self.method,
  218. parameters: self.parameters,
  219. encoding: encoding,
  220. headers: needsAuthorization ? afterLoginHeader : beforeLoginHeader
  221. )
  222. .handle(
  223. success: { (response: ResponseContainerArray<Element>) in
  224. if (response.errorCode ?? "") == "1" {
  225. let error = NSError(domain: "Network", code: 0, message: response.message ?? "")
  226. failure(error)
  227. } else {
  228. guard let data = response.data else {
  229. let error = NSError(domain: "Network", code: 0, message: "Data is nil")
  230. failure(error)
  231. return
  232. }
  233. success(data)
  234. }
  235. },
  236. failure: failure
  237. )
  238. }
  239. func request<T: Mappable>(
  240. encoding: ParameterEncoding = JSONEncoding.default,
  241. needsAuthorization: Bool = true,
  242. success: @escaping (T) -> Void,
  243. failure: @escaping (Error) -> Void
  244. ) {
  245. guard
  246. let isReachable = NetworkReachabilityManager()?.isReachable,
  247. isReachable else {
  248. let error = NSError(
  249. domain: "NETWORK_REACHABILITY_DOMAIN",
  250. code: -99,
  251. message: "No Internet connection found. Check your connection."
  252. )
  253. return failure(error)
  254. }
  255. manager.request(
  256. self.endpoint,
  257. method: self.method,
  258. parameters: self.parameters,
  259. encoding: encoding,
  260. headers: needsAuthorization ? afterLoginHeader : beforeLoginHeader
  261. ).handle(success: success, failure: failure)
  262. }
  263. func kftcRequest<T: Mappable>(
  264. header: [String: String],
  265. encoding: ParameterEncoding = JSONEncoding.default,
  266. success: @escaping (T) -> Void,
  267. failure: @escaping (Error) -> Void
  268. ) {
  269. guard
  270. let isReachable = NetworkReachabilityManager()?.isReachable,
  271. isReachable else {
  272. let error = NSError(
  273. domain: "NETWORK_REACHABILITY_DOMAIN",
  274. code: -99,
  275. message: "No Internet connection found. Check your connection."
  276. )
  277. return failure(error)
  278. }
  279. manager.request(
  280. self.endpoint,
  281. method: self.method,
  282. parameters: self.parameters,
  283. encoding: encoding,
  284. headers: header
  285. ).handle(success: success, failure: failure)
  286. }
  287. func requestMultipart<T: Mappable>(
  288. method: HTTPMethod,
  289. _ URLString: URLConvertible,
  290. parameters: [String: String]? = nil,
  291. images: [String: Data],
  292. encoding: Alamofire.ParameterEncoding = URLEncoding.default,
  293. needsAuthorization: Bool = true,
  294. success: @escaping (T) -> Void,
  295. failure: @escaping (Error) -> Void
  296. ) {
  297. guard
  298. let isReachable = NetworkReachabilityManager()?.isReachable,
  299. isReachable else {
  300. let error = NSError(
  301. domain: "NETWORK_REACHABILITY_DOMAIN",
  302. code: -99,
  303. message: "No Internet connection found. Check your connection."
  304. )
  305. return failure(error)
  306. }
  307. manager.upload(
  308. multipartFormData: { multipartFormData in
  309. if !images.isEmpty {
  310. images.forEach({ (data) in
  311. multipartFormData.append(
  312. data.value,
  313. withName: data.key,
  314. fileName: data.key + ".jpeg",
  315. mimeType: "image/jpeg"
  316. )
  317. })
  318. }
  319. parameters?.forEach { (params) in
  320. multipartFormData.append(
  321. params.value.data(
  322. using: String.Encoding.utf8,
  323. allowLossyConversion: false
  324. )!,
  325. withName: params.key
  326. )
  327. }
  328. },
  329. to: URLString,
  330. method: method,
  331. headers: needsAuthorization ? afterLoginHeader : beforeLoginHeader,
  332. encodingCompletion: { encodingResult in
  333. switch encodingResult {
  334. case .success(let upload, _, _):
  335. upload.handle(success: success, failure: failure)
  336. case .failure:
  337. let error = NSError(
  338. domain: "NETWORK_REACHABILITY_DOMAIN",
  339. code: -99,
  340. message: "No Internet connection found. Check your connection."
  341. )
  342. failure(error)
  343. }
  344. }
  345. )
  346. }
  347. }
  348. // MARK: - Endpoint
  349. extension APIRouter {
  350. private var endpoint: String {
  351. switch self {
  352. case .accesscode:
  353. return "\(baseUrl)/users/access-code"
  354. case .customerProfile:
  355. return "\(baseUrl)/mobile/CustomerProfile"
  356. case .customerRegister:
  357. return "\(baseUrlWithoutVersion)/v3/mobile/customerRegister"
  358. case .passwordReset:
  359. return "\(baseUrl)/mobile/passwordReset"
  360. case .validation:
  361. return "\(baseUrlWithoutVersion)/v3/validation"
  362. case .countriesServices:
  363. return "\(baseUrl)/mobile/countriesServices"
  364. case .calculateDefExRate:
  365. return "\(baseUrl)/mobile/calculateDefExRate"
  366. case .dynamicReceiver(let username, let countryID, let serviceType):
  367. let path = "\(username)/dynamicField?countryId=\(countryID)&serviceType=\(serviceType)"
  368. return "\(baseUrlWithoutVersion)v3/mobile/receiver/\(path)"
  369. case .getKFTCParamers(let username):
  370. return "\(baseUrl)/kftc/GetKftcParameters/\(username)"
  371. case .deleteAutoDebitAccount(let username, _):
  372. return "\(baseUrl)/kftc/DeleteAccount/\(username)"
  373. case .renewalToken(let username):
  374. return "\(baseUrl)/kftc/CheckKFTCAccounts/\(username)"
  375. case .fetchBankList:
  376. return "\(baseUrl)/kftc/KFTCBankList"
  377. case .checkRealName:
  378. return "\(baseUrl)/kftc/CheckRealName"
  379. case .fetchKFTCURL(let url):
  380. return url
  381. case .fetchRecipients(let senderID):
  382. return "\(baseUrlWithoutVersion)v3/mobile/\(senderID)/receiverinfo"
  383. case .fetchCountriesAndServiceTypes(let username):
  384. return "\(baseUrlWithoutVersion)v3/mobile/\(username)/FetchCountriesAndServiceTypes"
  385. case .addRecipient(let senderID, _):
  386. return "\(baseUrlWithoutVersion)v3/mobile/\(senderID)/receiverinfo/add"
  387. case .editRecipient(let senderID, let recipient):
  388. let recipientID = recipient.receiverID ?? ""
  389. return "\(baseUrlWithoutVersion)/v3/mobile/\(senderID)/receiverinfo/modify/\(recipientID)"
  390. case .deleteRecipient(let senderID, let recipientID):
  391. return "\(baseUrlWithoutVersion)/v3/mobile/\(senderID)/receiverinfo/remove/\(recipientID)"
  392. case .fetchBranches(let countryCode, let bankID, let branchName):
  393. return "\(baseUrl)/mobile/sendmoney/load/branch/\(countryCode)/\(bankID)/?search=\(branchName)"
  394. case .validateAccount:
  395. return "\(baseUrl)/mobile/sendmoney/validation/account"
  396. case .domesticRemitStart:
  397. return "\(baseUrl)/kftc/DomeRemitStart"
  398. case .getRecentHistories:
  399. return "\(baseUrl)/kftc/GetRecentHistories"
  400. case .fetchBalace:
  401. return "\(baseUrl)/kftc/CheckBalance"
  402. case .fetchRecipientName:
  403. return "\(baseUrl)/kftc/GetRecipientInfo"
  404. case .sendDomesticRemit:
  405. return "\(baseUrl)/kftc/SendDomeRimit"
  406. case .domesticTransactionHistory:
  407. let userID = GMEDB.shared.user.string(.userId) ?? ""
  408. return "\(baseUrl)/mobile/DomestricTranhistory/\(userID)"
  409. case .domesticReceipt(let transactionID):
  410. return "\(baseUrl)/mobile/DomesticReceipt/\(transactionID)"
  411. }
  412. }
  413. }
  414. // MARK: - Method
  415. extension APIRouter {
  416. private var method: HTTPMethod {
  417. switch self {
  418. case .accesscode:
  419. return .post
  420. case .customerProfile:
  421. return .post
  422. case .customerRegister:
  423. return .post
  424. case .passwordReset:
  425. return .post
  426. case .validation:
  427. return .post
  428. case .countriesServices:
  429. return .get
  430. case .calculateDefExRate:
  431. return .post
  432. case .dynamicReceiver:
  433. return .post
  434. case .getKFTCParamers:
  435. return .get
  436. case .deleteAutoDebitAccount:
  437. return .post
  438. case .renewalToken:
  439. return .get
  440. case .fetchBankList:
  441. return .get
  442. case .checkRealName:
  443. return .post
  444. case .fetchKFTCURL:
  445. return .get
  446. case .fetchRecipients:
  447. return .get
  448. case .fetchCountriesAndServiceTypes:
  449. return .get
  450. case .addRecipient:
  451. return .post
  452. case .editRecipient:
  453. return .post
  454. case .deleteRecipient:
  455. return .post
  456. case .fetchBranches:
  457. return .post
  458. case .validateAccount:
  459. return .post
  460. case .domesticRemitStart:
  461. return .post
  462. case .getRecentHistories:
  463. return .post
  464. case .fetchBalace:
  465. return .post
  466. case .fetchRecipientName:
  467. return .post
  468. case .sendDomesticRemit:
  469. return .post
  470. case .domesticTransactionHistory:
  471. return .post
  472. case .domesticReceipt:
  473. return .post
  474. }
  475. }
  476. }
  477. // MARK: - Parameter
  478. extension APIRouter {
  479. private var parameters: Parameters? {
  480. switch self.method {
  481. case .post:
  482. switch self {
  483. case .accesscode(let username, let password):
  484. return [
  485. "userId": username,
  486. "password": password
  487. ]
  488. case .customerProfile(let firebaseToken):
  489. return [
  490. "userId" : Utility.getMyUserName(),
  491. "uuid": self.uuid,
  492. "appVersion": Utility.getAppVersion() ?? "",
  493. "phoneBrand": UIDevice.modelName,
  494. "phoneOs": Utility.getPhoneOs(),
  495. "fcmId": firebaseToken,
  496. "osVersion": Utility.getOsVersion()
  497. ]
  498. case .customerRegister(let registerModel, let firebaseToken):
  499. return [
  500. "username": registerModel.username ?? "",
  501. "password": registerModel.encryptedPassword ?? "",
  502. "nativecountry": registerModel.nativeCountry ?? "",
  503. "mobilenumber": registerModel.mobileNumber ?? "",
  504. "clientId": Utility.getCliendId(),
  505. "uuid": self.uuid,
  506. "appVersion": Utility.getAppVersion() ?? "",
  507. "phoneBrand": UIDevice.modelName,
  508. "phoneOs": Utility.getPhoneOs(),
  509. "fcmId": firebaseToken,
  510. "osVersion": Utility.getOsVersion()
  511. ]
  512. case .passwordReset(let userName):
  513. return ["username": userName]
  514. case .validation(let userName, let idNumber, let idType):
  515. return [
  516. "Username": userName,
  517. "IdNumber": idNumber,
  518. "IdType": idType
  519. ]
  520. case .calculateDefExRate(let model):
  521. return model.serialize()
  522. case .deleteAutoDebitAccount(_, let kftcLogID):
  523. return [
  524. "KftcLogId" : kftcLogID
  525. ]
  526. case .checkRealName(let model):
  527. return [
  528. "CustomerId": model.customerID,
  529. "BankCode": model.bankCode,
  530. "AccountNumber": model.accountNumber
  531. ]
  532. case .dynamicReceiver:
  533. return nil
  534. case .addRecipient(_, let recipient):
  535. let paymentMethod = [
  536. "id": recipient.paymentMethod?.id ?? "",
  537. "name": recipient.paymentMethod?.name ?? "",
  538. "currency": recipient.paymentMethod?.currency ?? [],
  539. "localizedName": recipient.paymentMethod?.localizedName ?? ""
  540. ] as [String : Any]
  541. let branch = [
  542. "id": recipient.agent?.branch?.id ?? "",
  543. "name": recipient.agent?.branch?.name ?? "",
  544. "localizedName": recipient.agent?.branch?.name ?? ""
  545. ]
  546. let agent = [
  547. "id": recipient.agent?.id ?? "",
  548. "name": recipient.agent?.name ?? "",
  549. "currency": recipient.agent?.currency ?? [],
  550. "localizedName": recipient.agent?.localizedName ?? "",
  551. "branch": branch,
  552. "accountNo": recipient.agent?.accountNumber ?? ""
  553. ] as [String : Any]
  554. return [
  555. "firstName": recipient.firstName ?? "",
  556. "middleName": recipient.middleName ?? "",
  557. "lastName": recipient.lastName ?? "",
  558. "localFirstName": recipient.localFirstName ?? "",
  559. "localMiddleName": recipient.localMiddleName ?? "",
  560. "localLastName": recipient.localLastName ?? "",
  561. "localFullName": recipient.localFullName ?? "",
  562. "paymentMethod": paymentMethod,
  563. "agent": agent,
  564. "receiverId": recipient.receiverID ?? "",
  565. "country": recipient.country ?? "",
  566. "countryId": recipient.countryID ?? "",
  567. "countryCode": recipient.countryCode ?? "",
  568. "address": recipient.address ?? "",
  569. "state": recipient.state ?? "",
  570. "stateId": recipient.stateID ?? "",
  571. "city": recipient.city ?? "",
  572. "email": recipient.email ?? "",
  573. "mobile": recipient.mobile ?? "",
  574. "relationship": recipient.relationship ?? "",
  575. "relationshipId": recipient.relationshipID ?? "",
  576. "district": recipient.district ?? "",
  577. "districtId": recipient.districtID ?? "",
  578. "purposeOfRemit": recipient.purposeOfRemit ?? "",
  579. "purposeOfRemitId": recipient.purposeOfRemitID ?? "",
  580. "fullName": recipient.fullName ?? "",
  581. "idType": recipient.idType ?? "",
  582. "idNumber": recipient.idNumber ?? "",
  583. "nativeCountry": recipient.nativeCountry ?? "",
  584. "nativeCountryID": recipient.nativeCountryID ?? "",
  585. "nativeCountryCode": recipient.nativeCountryCode ?? ""
  586. ]
  587. case .editRecipient(let senderID, let recipient):
  588. return APIRouter.addRecipient(senderID: senderID, recipient: recipient).parameters
  589. case .validateAccount(let validateModel):
  590. return [
  591. "IdType" : "1",
  592. "IdNumber": "",
  593. "CustomerFirstName": "",
  594. "CustomerLastName": "",
  595. "ReceiverFirstName": validateModel.firstName,
  596. "ReceiverLastName": validateModel.lastName,
  597. "Country": validateModel.country?.countryCode ?? "",
  598. "AccountType": validateModel.accountType,
  599. "IssuerCode": validateModel.bank?.code ?? "",
  600. "AccountNo": validateModel.accountNumber,
  601. "BankCode": validateModel.bank?.code ?? "",
  602. "Amount": validateModel.amount,
  603. "PayoutPartner": validateModel.payoutPartner,
  604. "ProcessId": "",
  605. "BankId": validateModel.bank?.id ?? "",
  606. "ReceiverCountryId": validateModel.country?.countryId ?? "",
  607. "deliveryMethodId": validateModel.paymentMethod?.id ?? ""
  608. ]
  609. case .domesticRemitStart:
  610. let senderID = GMEDB.shared.user.string(.senderId) ?? ""
  611. return ["CustomerId": senderID]
  612. case .getRecentHistories(let from, let to):
  613. let senderID = GMEDB.shared.user.string(.senderId) ?? ""
  614. return [
  615. "CustomerId": senderID,
  616. "FromDate": from,
  617. "ToDate": to
  618. ]
  619. case .fetchBalace(let type, let fintechUseNumber):
  620. let senderID = GMEDB.shared.user.string(.senderId) ?? ""
  621. return [
  622. "CustomerId": senderID,
  623. "type": type,
  624. "FintechUseNo": fintechUseNumber
  625. ]
  626. case .fetchRecipientName(let bankCode, let accountNumber):
  627. let senderID = GMEDB.shared.user.string(.senderId) ?? ""
  628. return [
  629. "CustomerId": senderID,
  630. "BankCode": bankCode,
  631. "AccountNumber": accountNumber
  632. ]
  633. case .sendDomesticRemit(let model):
  634. let senderID = GMEDB.shared.user.string(.senderId) ?? ""
  635. let userID = GMEDB.shared.user.string(.userId) ?? ""
  636. return [
  637. "CustomerId": senderID,
  638. "userId": userID,
  639. "FintechUseNo": model.fintechID,
  640. "SentAmount": model.sendAmount,
  641. "RecipientBankCode": model.bankCode,
  642. "RecipientAccountNo": model.accountNumber,
  643. "RecipientName": model.name,
  644. "RecipientPhone": model.mobile,
  645. "isUseBiometric": model.isUseBiometric,
  646. "txnPassword": model.password,
  647. "KftcAccountId" : model.accountID,
  648. "type": model.type
  649. ]
  650. case .domesticTransactionHistory(let from, let to):
  651. return [
  652. "FromDate": from,
  653. "ToDate": to
  654. ]
  655. default: return nil
  656. }
  657. default : return nil
  658. }
  659. }
  660. }