Browse Source

add autodebitmodule

pull/1/head
devikkim 5 years ago
parent
commit
feedcff8a4
  1. 376
      GME Remit.xcodeproj/project.pbxproj
  2. BIN
      GMERemittance/Module/AutoDebitModules/AddAccount/.DS_Store
  3. 66
      GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Interactor/AddAccountInteractor.swift
  4. 26
      GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Interactor/AddAccountInteractorIO.swift
  5. 44
      GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Model/KFTCBankList.swift
  6. 88
      GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Service/AddAccountService.swift
  7. 25
      GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Service/AddAccountServiceType.swift
  8. 21
      GMERemittance/Module/AutoDebitModules/AddAccount/Module Interface/AddAccountModuleInterface.swift
  9. 96
      GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/Presenter/AddAccountPresenter.swift
  10. 152
      GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/View/AddAccount.storyboard
  11. 241
      GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/View/AddAccountViewController.swift
  12. 19
      GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/View/AddAccountViewInterface.swift
  13. 52
      GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/Wireframe/AddAccountWireframe.swift
  14. 14
      GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/Wireframe/AddAccountWireframeInput.swift
  15. 0
      GMERemittance/Module/AutoDebitModules/AutoDebit/Application Logic/Interactor/AutoDebitInteractor.swift
  16. 0
      GMERemittance/Module/AutoDebitModules/AutoDebit/Application Logic/Interactor/AutoDebitInteractorIO.swift
  17. 0
      GMERemittance/Module/AutoDebitModules/AutoDebit/Application Logic/Service/AutoDebitService.swift
  18. 0
      GMERemittance/Module/AutoDebitModules/AutoDebit/Application Logic/Service/AutoDebitServiceType.swift
  19. 2
      GMERemittance/Module/AutoDebitModules/AutoDebit/Module Interface/AutoDebitModuleInterface.swift
  20. 4
      GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/Presenter/AutoDebitPresenter.swift
  21. 0
      GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/View/AutoDebit.storyboard
  22. 0
      GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/View/AutoDebitTableViewCell.swift
  23. 14
      GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/View/AutoDebitViewController.swift
  24. 0
      GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/View/AutoDebitViewInterface.swift
  25. 4
      GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/Wireframe/AutoDebitWireframe.swift
  26. 2
      GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/Wireframe/AutoDebitWireframeInput.swift

376
GME Remit.xcodeproj/project.pbxproj

@ -63,19 +63,7 @@
046C5A1F1FE8DEB300918FFD /* ForgetPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046C5A1E1FE8DEB300918FFD /* ForgetPasswordViewController.swift */; }; 046C5A1F1FE8DEB300918FFD /* ForgetPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046C5A1E1FE8DEB300918FFD /* ForgetPasswordViewController.swift */; };
046C5A211FE8FFB800918FFD /* ForgetPasswordViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046C5A201FE8FFB800918FFD /* ForgetPasswordViewModel.swift */; }; 046C5A211FE8FFB800918FFD /* ForgetPasswordViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046C5A201FE8FFB800918FFD /* ForgetPasswordViewModel.swift */; };
046DE21F2011BEA600B85CBA /* ReviewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046DE21E2011BEA600B85CBA /* ReviewViewModel.swift */; }; 046DE21F2011BEA600B85CBA /* ReviewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046DE21E2011BEA600B85CBA /* ReviewViewModel.swift */; };
0470300621CA3EAE00B6C9C3 /* AutoDebitModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04702FF321CA3EAE00B6C9C3 /* AutoDebitModuleInterface.swift */; };
0470300721CA3EAE00B6C9C3 /* AutoDebitService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04702FF621CA3EAE00B6C9C3 /* AutoDebitService.swift */; };
0470300821CA3EAE00B6C9C3 /* AutoDebitServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04702FF721CA3EAE00B6C9C3 /* AutoDebitServiceType.swift */; };
0470300921CA3EAE00B6C9C3 /* AutoDebitInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04702FF921CA3EAE00B6C9C3 /* AutoDebitInteractor.swift */; };
0470300A21CA3EAE00B6C9C3 /* AutoDebitInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04702FFA21CA3EAE00B6C9C3 /* AutoDebitInteractorIO.swift */; };
0470300B21CA3EAE00B6C9C3 /* AutoDebitPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04702FFD21CA3EAE00B6C9C3 /* AutoDebitPresenter.swift */; };
0470300C21CA3EAE00B6C9C3 /* AutoDebitWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04702FFF21CA3EAE00B6C9C3 /* AutoDebitWireframe.swift */; };
0470300D21CA3EAE00B6C9C3 /* AutoDebitWireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0470300021CA3EAE00B6C9C3 /* AutoDebitWireframeInput.swift */; };
0470300E21CA3EAE00B6C9C3 /* AutoDebit.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0470300221CA3EAE00B6C9C3 /* AutoDebit.storyboard */; };
0470300F21CA3EAE00B6C9C3 /* AutoDebitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0470300421CA3EAE00B6C9C3 /* AutoDebitViewController.swift */; };
0470301021CA3EAE00B6C9C3 /* AutoDebitViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0470300521CA3EAE00B6C9C3 /* AutoDebitViewInterface.swift */; };
0470301221CA4BD000B6C9C3 /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0470301121CA4BD000B6C9C3 /* Account.swift */; }; 0470301221CA4BD000B6C9C3 /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0470301121CA4BD000B6C9C3 /* Account.swift */; };
0470301421CA4EE200B6C9C3 /* AutoDebitTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0470301321CA4EE200B6C9C3 /* AutoDebitTableViewCell.swift */; };
0474678C203C4A0100F6A583 /* PdfComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0474678B203C4A0100F6A583 /* PdfComposer.swift */; }; 0474678C203C4A0100F6A583 /* PdfComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0474678B203C4A0100F6A583 /* PdfComposer.swift */; };
047635AE200B3F1B00E6F4E5 /* MobileRechargeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 047635AD200B3F1B00E6F4E5 /* MobileRechargeViewModel.swift */; }; 047635AE200B3F1B00E6F4E5 /* MobileRechargeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 047635AD200B3F1B00E6F4E5 /* MobileRechargeViewModel.swift */; };
0477E2A520492EDA00B02377 /* LabelExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0477E2A420492EDA00B02377 /* LabelExtension.swift */; }; 0477E2A520492EDA00B02377 /* LabelExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0477E2A420492EDA00B02377 /* LabelExtension.swift */; };
@ -342,6 +330,30 @@
A2ECF90D202312AE0009F481 /* ExchangeRateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2ECF90C202312AE0009F481 /* ExchangeRateViewController.swift */; }; A2ECF90D202312AE0009F481 /* ExchangeRateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2ECF90C202312AE0009F481 /* ExchangeRateViewController.swift */; };
A2FD3AED2052566A00404EA9 /* NotificationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FD3AEC2052566A00404EA9 /* NotificationModel.swift */; }; A2FD3AED2052566A00404EA9 /* NotificationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FD3AEC2052566A00404EA9 /* NotificationModel.swift */; };
A2FD3AEF2052568900404EA9 /* NotificationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FD3AEE2052568900404EA9 /* NotificationViewModel.swift */; }; A2FD3AEF2052568900404EA9 /* NotificationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FD3AEE2052568900404EA9 /* NotificationViewModel.swift */; };
BE74AFBA227C8FF200F05CE7 /* AddAccountModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AF91227C8FF100F05CE7 /* AddAccountModuleInterface.swift */; };
BE74AFBB227C8FF200F05CE7 /* KFTCBankList.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AF94227C8FF100F05CE7 /* KFTCBankList.swift */; };
BE74AFBC227C8FF200F05CE7 /* AddAccountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AF96227C8FF100F05CE7 /* AddAccountService.swift */; };
BE74AFBD227C8FF200F05CE7 /* AddAccountServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AF97227C8FF100F05CE7 /* AddAccountServiceType.swift */; };
BE74AFBE227C8FF200F05CE7 /* AddAccountInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AF99227C8FF100F05CE7 /* AddAccountInteractorIO.swift */; };
BE74AFBF227C8FF200F05CE7 /* AddAccountInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AF9A227C8FF100F05CE7 /* AddAccountInteractor.swift */; };
BE74AFC0227C8FF200F05CE7 /* AddAccountPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AF9D227C8FF100F05CE7 /* AddAccountPresenter.swift */; };
BE74AFC1227C8FF200F05CE7 /* AddAccountWireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AF9F227C8FF100F05CE7 /* AddAccountWireframeInput.swift */; };
BE74AFC2227C8FF200F05CE7 /* AddAccountWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFA0227C8FF100F05CE7 /* AddAccountWireframe.swift */; };
BE74AFC3227C8FF200F05CE7 /* AddAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFA2227C8FF100F05CE7 /* AddAccountViewController.swift */; };
BE74AFC4227C8FF200F05CE7 /* AddAccountViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFA3227C8FF100F05CE7 /* AddAccountViewInterface.swift */; };
BE74AFC5227C8FF200F05CE7 /* AddAccount.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BE74AFA4227C8FF100F05CE7 /* AddAccount.storyboard */; };
BE74AFC6227C8FF200F05CE7 /* AutoDebitModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFA7227C8FF100F05CE7 /* AutoDebitModuleInterface.swift */; };
BE74AFC7227C8FF200F05CE7 /* AutoDebitService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFAA227C8FF100F05CE7 /* AutoDebitService.swift */; };
BE74AFC8227C8FF200F05CE7 /* AutoDebitServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFAB227C8FF100F05CE7 /* AutoDebitServiceType.swift */; };
BE74AFC9227C8FF200F05CE7 /* AutoDebitInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFAD227C8FF100F05CE7 /* AutoDebitInteractor.swift */; };
BE74AFCA227C8FF200F05CE7 /* AutoDebitInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFAE227C8FF100F05CE7 /* AutoDebitInteractorIO.swift */; };
BE74AFCB227C8FF200F05CE7 /* AutoDebitPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFB1227C8FF100F05CE7 /* AutoDebitPresenter.swift */; };
BE74AFCC227C8FF200F05CE7 /* AutoDebitWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFB3227C8FF100F05CE7 /* AutoDebitWireframe.swift */; };
BE74AFCD227C8FF200F05CE7 /* AutoDebitWireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFB4227C8FF100F05CE7 /* AutoDebitWireframeInput.swift */; };
BE74AFCE227C8FF200F05CE7 /* AutoDebit.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BE74AFB6227C8FF100F05CE7 /* AutoDebit.storyboard */; };
BE74AFCF227C8FF200F05CE7 /* AutoDebitTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFB7227C8FF100F05CE7 /* AutoDebitTableViewCell.swift */; };
BE74AFD0227C8FF200F05CE7 /* AutoDebitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFB8227C8FF100F05CE7 /* AutoDebitViewController.swift */; };
BE74AFD1227C8FF200F05CE7 /* AutoDebitViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE74AFB9227C8FF100F05CE7 /* AutoDebitViewInterface.swift */; };
BEC9AFFC224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEC9AFE9224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift */; }; BEC9AFFC224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEC9AFE9224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift */; };
BEC9AFFD224FC49C00A2DA06 /* BiometricAuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEC9AFEC224FC49C00A2DA06 /* BiometricAuthenticationService.swift */; }; BEC9AFFD224FC49C00A2DA06 /* BiometricAuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEC9AFEC224FC49C00A2DA06 /* BiometricAuthenticationService.swift */; };
BEC9AFFE224FC49C00A2DA06 /* BiometricAuthenticationServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEC9AFED224FC49C00A2DA06 /* BiometricAuthenticationServiceType.swift */; }; BEC9AFFE224FC49C00A2DA06 /* BiometricAuthenticationServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEC9AFED224FC49C00A2DA06 /* BiometricAuthenticationServiceType.swift */; };
@ -2281,19 +2293,7 @@
046C5A1E1FE8DEB300918FFD /* ForgetPasswordViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForgetPasswordViewController.swift; sourceTree = "<group>"; }; 046C5A1E1FE8DEB300918FFD /* ForgetPasswordViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForgetPasswordViewController.swift; sourceTree = "<group>"; };
046C5A201FE8FFB800918FFD /* ForgetPasswordViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForgetPasswordViewModel.swift; sourceTree = "<group>"; }; 046C5A201FE8FFB800918FFD /* ForgetPasswordViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForgetPasswordViewModel.swift; sourceTree = "<group>"; };
046DE21E2011BEA600B85CBA /* ReviewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewViewModel.swift; sourceTree = "<group>"; }; 046DE21E2011BEA600B85CBA /* ReviewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewViewModel.swift; sourceTree = "<group>"; };
04702FF321CA3EAE00B6C9C3 /* AutoDebitModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitModuleInterface.swift; sourceTree = "<group>"; };
04702FF621CA3EAE00B6C9C3 /* AutoDebitService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitService.swift; sourceTree = "<group>"; };
04702FF721CA3EAE00B6C9C3 /* AutoDebitServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitServiceType.swift; sourceTree = "<group>"; };
04702FF921CA3EAE00B6C9C3 /* AutoDebitInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitInteractor.swift; sourceTree = "<group>"; };
04702FFA21CA3EAE00B6C9C3 /* AutoDebitInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitInteractorIO.swift; sourceTree = "<group>"; };
04702FFD21CA3EAE00B6C9C3 /* AutoDebitPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitPresenter.swift; sourceTree = "<group>"; };
04702FFF21CA3EAE00B6C9C3 /* AutoDebitWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitWireframe.swift; sourceTree = "<group>"; };
0470300021CA3EAE00B6C9C3 /* AutoDebitWireframeInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitWireframeInput.swift; sourceTree = "<group>"; };
0470300221CA3EAE00B6C9C3 /* AutoDebit.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = AutoDebit.storyboard; sourceTree = "<group>"; };
0470300421CA3EAE00B6C9C3 /* AutoDebitViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitViewController.swift; sourceTree = "<group>"; };
0470300521CA3EAE00B6C9C3 /* AutoDebitViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitViewInterface.swift; sourceTree = "<group>"; };
0470301121CA4BD000B6C9C3 /* Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = "<group>"; }; 0470301121CA4BD000B6C9C3 /* Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = "<group>"; };
0470301321CA4EE200B6C9C3 /* AutoDebitTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoDebitTableViewCell.swift; sourceTree = "<group>"; };
0474678B203C4A0100F6A583 /* PdfComposer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PdfComposer.swift; sourceTree = "<group>"; }; 0474678B203C4A0100F6A583 /* PdfComposer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PdfComposer.swift; sourceTree = "<group>"; };
047635AD200B3F1B00E6F4E5 /* MobileRechargeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MobileRechargeViewModel.swift; sourceTree = "<group>"; }; 047635AD200B3F1B00E6F4E5 /* MobileRechargeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MobileRechargeViewModel.swift; sourceTree = "<group>"; };
0477E2A420492EDA00B02377 /* LabelExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelExtension.swift; sourceTree = "<group>"; }; 0477E2A420492EDA00B02377 /* LabelExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelExtension.swift; sourceTree = "<group>"; };
@ -2573,6 +2573,30 @@
A2FD3AEE2052568900404EA9 /* NotificationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewModel.swift; sourceTree = "<group>"; }; A2FD3AEE2052568900404EA9 /* NotificationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewModel.swift; sourceTree = "<group>"; };
B645CB5C66870B30AC5720DD /* Pods-GMERemittanceUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMERemittanceUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GMERemittanceUITests/Pods-GMERemittanceUITests.release.xcconfig"; sourceTree = "<group>"; }; B645CB5C66870B30AC5720DD /* Pods-GMERemittanceUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMERemittanceUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GMERemittanceUITests/Pods-GMERemittanceUITests.release.xcconfig"; sourceTree = "<group>"; };
B7F20D7B2ABA65B2B56F1DD1 /* Pods-GME Remit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GME Remit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GME Remit/Pods-GME Remit.debug.xcconfig"; sourceTree = "<group>"; }; B7F20D7B2ABA65B2B56F1DD1 /* Pods-GME Remit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GME Remit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GME Remit/Pods-GME Remit.debug.xcconfig"; sourceTree = "<group>"; };
BE74AF91227C8FF100F05CE7 /* AddAccountModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountModuleInterface.swift; sourceTree = "<group>"; };
BE74AF94227C8FF100F05CE7 /* KFTCBankList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KFTCBankList.swift; sourceTree = "<group>"; };
BE74AF96227C8FF100F05CE7 /* AddAccountService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountService.swift; sourceTree = "<group>"; };
BE74AF97227C8FF100F05CE7 /* AddAccountServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountServiceType.swift; sourceTree = "<group>"; };
BE74AF99227C8FF100F05CE7 /* AddAccountInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountInteractorIO.swift; sourceTree = "<group>"; };
BE74AF9A227C8FF100F05CE7 /* AddAccountInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountInteractor.swift; sourceTree = "<group>"; };
BE74AF9D227C8FF100F05CE7 /* AddAccountPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountPresenter.swift; sourceTree = "<group>"; };
BE74AF9F227C8FF100F05CE7 /* AddAccountWireframeInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountWireframeInput.swift; sourceTree = "<group>"; };
BE74AFA0227C8FF100F05CE7 /* AddAccountWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountWireframe.swift; sourceTree = "<group>"; };
BE74AFA2227C8FF100F05CE7 /* AddAccountViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountViewController.swift; sourceTree = "<group>"; };
BE74AFA3227C8FF100F05CE7 /* AddAccountViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAccountViewInterface.swift; sourceTree = "<group>"; };
BE74AFA4227C8FF100F05CE7 /* AddAccount.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = AddAccount.storyboard; sourceTree = "<group>"; };
BE74AFA7227C8FF100F05CE7 /* AutoDebitModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitModuleInterface.swift; sourceTree = "<group>"; };
BE74AFAA227C8FF100F05CE7 /* AutoDebitService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitService.swift; sourceTree = "<group>"; };
BE74AFAB227C8FF100F05CE7 /* AutoDebitServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitServiceType.swift; sourceTree = "<group>"; };
BE74AFAD227C8FF100F05CE7 /* AutoDebitInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitInteractor.swift; sourceTree = "<group>"; };
BE74AFAE227C8FF100F05CE7 /* AutoDebitInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitInteractorIO.swift; sourceTree = "<group>"; };
BE74AFB1227C8FF100F05CE7 /* AutoDebitPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitPresenter.swift; sourceTree = "<group>"; };
BE74AFB3227C8FF100F05CE7 /* AutoDebitWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitWireframe.swift; sourceTree = "<group>"; };
BE74AFB4227C8FF100F05CE7 /* AutoDebitWireframeInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitWireframeInput.swift; sourceTree = "<group>"; };
BE74AFB6227C8FF100F05CE7 /* AutoDebit.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = AutoDebit.storyboard; sourceTree = "<group>"; };
BE74AFB7227C8FF100F05CE7 /* AutoDebitTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitTableViewCell.swift; sourceTree = "<group>"; };
BE74AFB8227C8FF100F05CE7 /* AutoDebitViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitViewController.swift; sourceTree = "<group>"; };
BE74AFB9227C8FF100F05CE7 /* AutoDebitViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoDebitViewInterface.swift; sourceTree = "<group>"; };
BEC9AFE9224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricAuthenticationModuleInterface.swift; sourceTree = "<group>"; }; BEC9AFE9224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricAuthenticationModuleInterface.swift; sourceTree = "<group>"; };
BEC9AFEC224FC49C00A2DA06 /* BiometricAuthenticationService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricAuthenticationService.swift; sourceTree = "<group>"; }; BEC9AFEC224FC49C00A2DA06 /* BiometricAuthenticationService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricAuthenticationService.swift; sourceTree = "<group>"; };
BEC9AFED224FC49C00A2DA06 /* BiometricAuthenticationServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricAuthenticationServiceType.swift; sourceTree = "<group>"; }; BEC9AFED224FC49C00A2DA06 /* BiometricAuthenticationServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricAuthenticationServiceType.swift; sourceTree = "<group>"; };
@ -4659,89 +4683,6 @@
path = ForgetPassword; path = ForgetPassword;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
04702FF121CA3EAE00B6C9C3 /* AutoDebit */ = {
isa = PBXGroup;
children = (
04702FF221CA3EAE00B6C9C3 /* Module Interface */,
04702FF421CA3EAE00B6C9C3 /* Application Logic */,
04702FFB21CA3EAE00B6C9C3 /* User Interface */,
);
path = AutoDebit;
sourceTree = "<group>";
};
04702FF221CA3EAE00B6C9C3 /* Module Interface */ = {
isa = PBXGroup;
children = (
04702FF321CA3EAE00B6C9C3 /* AutoDebitModuleInterface.swift */,
);
path = "Module Interface";
sourceTree = "<group>";
};
04702FF421CA3EAE00B6C9C3 /* Application Logic */ = {
isa = PBXGroup;
children = (
04702FF521CA3EAE00B6C9C3 /* Service */,
04702FF821CA3EAE00B6C9C3 /* Interactor */,
);
path = "Application Logic";
sourceTree = "<group>";
};
04702FF521CA3EAE00B6C9C3 /* Service */ = {
isa = PBXGroup;
children = (
04702FF621CA3EAE00B6C9C3 /* AutoDebitService.swift */,
04702FF721CA3EAE00B6C9C3 /* AutoDebitServiceType.swift */,
);
path = Service;
sourceTree = "<group>";
};
04702FF821CA3EAE00B6C9C3 /* Interactor */ = {
isa = PBXGroup;
children = (
04702FF921CA3EAE00B6C9C3 /* AutoDebitInteractor.swift */,
04702FFA21CA3EAE00B6C9C3 /* AutoDebitInteractorIO.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
04702FFB21CA3EAE00B6C9C3 /* User Interface */ = {
isa = PBXGroup;
children = (
04702FFC21CA3EAE00B6C9C3 /* Presenter */,
04702FFE21CA3EAE00B6C9C3 /* Wireframe */,
0470300121CA3EAE00B6C9C3 /* View */,
);
path = "User Interface";
sourceTree = "<group>";
};
04702FFC21CA3EAE00B6C9C3 /* Presenter */ = {
isa = PBXGroup;
children = (
04702FFD21CA3EAE00B6C9C3 /* AutoDebitPresenter.swift */,
);
path = Presenter;
sourceTree = "<group>";
};
04702FFE21CA3EAE00B6C9C3 /* Wireframe */ = {
isa = PBXGroup;
children = (
04702FFF21CA3EAE00B6C9C3 /* AutoDebitWireframe.swift */,
0470300021CA3EAE00B6C9C3 /* AutoDebitWireframeInput.swift */,
);
path = Wireframe;
sourceTree = "<group>";
};
0470300121CA3EAE00B6C9C3 /* View */ = {
isa = PBXGroup;
children = (
0470300221CA3EAE00B6C9C3 /* AutoDebit.storyboard */,
0470300421CA3EAE00B6C9C3 /* AutoDebitViewController.swift */,
0470300521CA3EAE00B6C9C3 /* AutoDebitViewInterface.swift */,
0470301321CA4EE200B6C9C3 /* AutoDebitTableViewCell.swift */,
);
path = View;
sourceTree = "<group>";
};
0496B8501FE7DFD00044810E /* enum */ = { 0496B8501FE7DFD00044810E /* enum */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -5983,6 +5924,189 @@
path = Notification; path = Notification;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
BE74AF8E227C8FF100F05CE7 /* AutoDebitModules */ = {
isa = PBXGroup;
children = (
BE74AF8F227C8FF100F05CE7 /* AddAccount */,
BE74AFA5227C8FF100F05CE7 /* AutoDebit */,
);
path = AutoDebitModules;
sourceTree = "<group>";
};
BE74AF8F227C8FF100F05CE7 /* AddAccount */ = {
isa = PBXGroup;
children = (
BE74AF90227C8FF100F05CE7 /* Module Interface */,
BE74AF92227C8FF100F05CE7 /* Application Logic */,
BE74AF9B227C8FF100F05CE7 /* User Interface */,
);
path = AddAccount;
sourceTree = "<group>";
};
BE74AF90227C8FF100F05CE7 /* Module Interface */ = {
isa = PBXGroup;
children = (
BE74AF91227C8FF100F05CE7 /* AddAccountModuleInterface.swift */,
);
path = "Module Interface";
sourceTree = "<group>";
};
BE74AF92227C8FF100F05CE7 /* Application Logic */ = {
isa = PBXGroup;
children = (
BE74AF93227C8FF100F05CE7 /* Model */,
BE74AF95227C8FF100F05CE7 /* Service */,
BE74AF98227C8FF100F05CE7 /* Interactor */,
);
path = "Application Logic";
sourceTree = "<group>";
};
BE74AF93227C8FF100F05CE7 /* Model */ = {
isa = PBXGroup;
children = (
BE74AF94227C8FF100F05CE7 /* KFTCBankList.swift */,
);
path = Model;
sourceTree = "<group>";
};
BE74AF95227C8FF100F05CE7 /* Service */ = {
isa = PBXGroup;
children = (
BE74AF96227C8FF100F05CE7 /* AddAccountService.swift */,
BE74AF97227C8FF100F05CE7 /* AddAccountServiceType.swift */,
);
path = Service;
sourceTree = "<group>";
};
BE74AF98227C8FF100F05CE7 /* Interactor */ = {
isa = PBXGroup;
children = (
BE74AF99227C8FF100F05CE7 /* AddAccountInteractorIO.swift */,
BE74AF9A227C8FF100F05CE7 /* AddAccountInteractor.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
BE74AF9B227C8FF100F05CE7 /* User Interface */ = {
isa = PBXGroup;
children = (
BE74AF9C227C8FF100F05CE7 /* Presenter */,
BE74AF9E227C8FF100F05CE7 /* Wireframe */,
BE74AFA1227C8FF100F05CE7 /* View */,
);
path = "User Interface";
sourceTree = "<group>";
};
BE74AF9C227C8FF100F05CE7 /* Presenter */ = {
isa = PBXGroup;
children = (
BE74AF9D227C8FF100F05CE7 /* AddAccountPresenter.swift */,
);
path = Presenter;
sourceTree = "<group>";
};
BE74AF9E227C8FF100F05CE7 /* Wireframe */ = {
isa = PBXGroup;
children = (
BE74AF9F227C8FF100F05CE7 /* AddAccountWireframeInput.swift */,
BE74AFA0227C8FF100F05CE7 /* AddAccountWireframe.swift */,
);
path = Wireframe;
sourceTree = "<group>";
};
BE74AFA1227C8FF100F05CE7 /* View */ = {
isa = PBXGroup;
children = (
BE74AFA2227C8FF100F05CE7 /* AddAccountViewController.swift */,
BE74AFA3227C8FF100F05CE7 /* AddAccountViewInterface.swift */,
BE74AFA4227C8FF100F05CE7 /* AddAccount.storyboard */,
);
path = View;
sourceTree = "<group>";
};
BE74AFA5227C8FF100F05CE7 /* AutoDebit */ = {
isa = PBXGroup;
children = (
BE74AFA6227C8FF100F05CE7 /* Module Interface */,
BE74AFA8227C8FF100F05CE7 /* Application Logic */,
BE74AFAF227C8FF100F05CE7 /* User Interface */,
);
path = AutoDebit;
sourceTree = "<group>";
};
BE74AFA6227C8FF100F05CE7 /* Module Interface */ = {
isa = PBXGroup;
children = (
BE74AFA7227C8FF100F05CE7 /* AutoDebitModuleInterface.swift */,
);
path = "Module Interface";
sourceTree = "<group>";
};
BE74AFA8227C8FF100F05CE7 /* Application Logic */ = {
isa = PBXGroup;
children = (
BE74AFA9227C8FF100F05CE7 /* Service */,
BE74AFAC227C8FF100F05CE7 /* Interactor */,
);
path = "Application Logic";
sourceTree = "<group>";
};
BE74AFA9227C8FF100F05CE7 /* Service */ = {
isa = PBXGroup;
children = (
BE74AFAA227C8FF100F05CE7 /* AutoDebitService.swift */,
BE74AFAB227C8FF100F05CE7 /* AutoDebitServiceType.swift */,
);
path = Service;
sourceTree = "<group>";
};
BE74AFAC227C8FF100F05CE7 /* Interactor */ = {
isa = PBXGroup;
children = (
BE74AFAD227C8FF100F05CE7 /* AutoDebitInteractor.swift */,
BE74AFAE227C8FF100F05CE7 /* AutoDebitInteractorIO.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
BE74AFAF227C8FF100F05CE7 /* User Interface */ = {
isa = PBXGroup;
children = (
BE74AFB0227C8FF100F05CE7 /* Presenter */,
BE74AFB2227C8FF100F05CE7 /* Wireframe */,
BE74AFB5227C8FF100F05CE7 /* View */,
);
path = "User Interface";
sourceTree = "<group>";
};
BE74AFB0227C8FF100F05CE7 /* Presenter */ = {
isa = PBXGroup;
children = (
BE74AFB1227C8FF100F05CE7 /* AutoDebitPresenter.swift */,
);
path = Presenter;
sourceTree = "<group>";
};
BE74AFB2227C8FF100F05CE7 /* Wireframe */ = {
isa = PBXGroup;
children = (
BE74AFB3227C8FF100F05CE7 /* AutoDebitWireframe.swift */,
BE74AFB4227C8FF100F05CE7 /* AutoDebitWireframeInput.swift */,
);
path = Wireframe;
sourceTree = "<group>";
};
BE74AFB5227C8FF100F05CE7 /* View */ = {
isa = PBXGroup;
children = (
BE74AFB6227C8FF100F05CE7 /* AutoDebit.storyboard */,
BE74AFB7227C8FF100F05CE7 /* AutoDebitTableViewCell.swift */,
BE74AFB8227C8FF100F05CE7 /* AutoDebitViewController.swift */,
BE74AFB9227C8FF100F05CE7 /* AutoDebitViewInterface.swift */,
);
path = View;
sourceTree = "<group>";
};
BEC9AFE7224FC49C00A2DA06 /* BiometricAuthentication */ = { BEC9AFE7224FC49C00A2DA06 /* BiometricAuthentication */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -6166,6 +6290,7 @@
D907AB96212AA8A300915A87 /* Module */ = { D907AB96212AA8A300915A87 /* Module */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
BE74AF8E227C8FF100F05CE7 /* AutoDebitModules */,
730D784F227A94E1007E517E /* RewardModule */, 730D784F227A94E1007E517E /* RewardModule */,
736A8C262277EAC100337A50 /* BiometricAuth */, 736A8C262277EAC100337A50 /* BiometricAuth */,
7301973A22535135001954AB /* KYC */, 7301973A22535135001954AB /* KYC */,
@ -6173,7 +6298,6 @@
D9790608223F58410025BD5B /* Resend */, D9790608223F58410025BD5B /* Resend */,
D92E65522226209F004D1B3D /* SendMoneyCode */, D92E65522226209F004D1B3D /* SendMoneyCode */,
D9BE021321E2DD44003AA8C7 /* PaymentSelection */, D9BE021321E2DD44003AA8C7 /* PaymentSelection */,
04702FF121CA3EAE00B6C9C3 /* AutoDebit */,
FF6E7D7921BF951D00A003B9 /* AppUpdate */, FF6E7D7921BF951D00A003B9 /* AppUpdate */,
04E36E0421AE585100783685 /* PennyTestSubmit */, 04E36E0421AE585100783685 /* PennyTestSubmit */,
043770D221AD04240005B22D /* PennyTest */, 043770D221AD04240005B22D /* PennyTest */,
@ -11373,6 +11497,7 @@
D93C29AE22000D650079BF03 /* transkey_navi_complete2_thai.png in Resources */, D93C29AE22000D650079BF03 /* transkey_navi_complete2_thai.png in Resources */,
D93C282F22000D640079BF03 /* iPad_transkey_landscape_alnum_dummy_1.png in Resources */, D93C282F22000D640079BF03 /* iPad_transkey_landscape_alnum_dummy_1.png in Resources */,
D93C2A6522000D650079BF03 /* iPhone_transkey_landscape_number_cmd_1_mongolian.png in Resources */, D93C2A6522000D650079BF03 /* iPhone_transkey_landscape_number_cmd_1_mongolian.png in Resources */,
BE74AFCE227C8FF200F05CE7 /* AutoDebit.storyboard in Resources */,
D93C2B0922000D650079BF03 /* iniPhone_transkey_cancel_down_indonesian.png in Resources */, D93C2B0922000D650079BF03 /* iniPhone_transkey_cancel_down_indonesian.png in Resources */,
D93C2BB822000D660079BF03 /* transkey_input_sym_2.png in Resources */, D93C2BB822000D660079BF03 /* transkey_input_sym_2.png in Resources */,
D93C278F22000D630079BF03 /* iPhone_transkey_alnum_cap_25.png in Resources */, D93C278F22000D630079BF03 /* iPhone_transkey_alnum_cap_25.png in Resources */,
@ -11652,7 +11777,6 @@
D93C299F22000D650079BF03 /* iPad_transkey_alnum_cmd_8_2_japanese.png in Resources */, D93C299F22000D650079BF03 /* iPad_transkey_alnum_cmd_8_2_japanese.png in Resources */,
D93C27A022000D630079BF03 /* iPhone_transkey_number_cmd_0_2_down.png in Resources */, D93C27A022000D630079BF03 /* iPhone_transkey_number_cmd_0_2_down.png in Resources */,
D93C2C2622000D660079BF03 /* pt-icon51.png in Resources */, D93C2C2622000D660079BF03 /* pt-icon51.png in Resources */,
0470300E21CA3EAE00B6C9C3 /* AutoDebit.storyboard in Resources */,
D93C2C5522000D660079BF03 /* left_line_over.png in Resources */, D93C2C5522000D660079BF03 /* left_line_over.png in Resources */,
D93C2BDD22000D660079BF03 /* transkey_input_cap_11.png in Resources */, D93C2BDD22000D660079BF03 /* transkey_input_cap_11.png in Resources */,
D93C29C522000D650079BF03 /* iPhone_transkey_landscape_number_cmd_2_thai.png in Resources */, D93C29C522000D650079BF03 /* iPhone_transkey_landscape_number_cmd_2_thai.png in Resources */,
@ -12525,6 +12649,7 @@
D93C273822000D630079BF03 /* iPhone_transkey_number_key_9.png in Resources */, D93C273822000D630079BF03 /* iPhone_transkey_number_key_9.png in Resources */,
D93C2BCB22000D660079BF03 /* transkey_input_key_10.png in Resources */, D93C2BCB22000D660079BF03 /* transkey_input_key_10.png in Resources */,
D93C297C22000D650079BF03 /* iPhone_transkey_cancel_down_japanese.png in Resources */, D93C297C22000D650079BF03 /* iPhone_transkey_cancel_down_japanese.png in Resources */,
BE74AFC5227C8FF200F05CE7 /* AddAccount.storyboard in Resources */,
D93C2B4922000D660079BF03 /* iPhone_transkey_landscape_number_cmd_random_1.png in Resources */, D93C2B4922000D660079BF03 /* iPhone_transkey_landscape_number_cmd_random_1.png in Resources */,
D93C2AB622000D650079BF03 /* iPhone_transkey_landscape_alnum_cmd_8_2_chinese_down.png in Resources */, D93C2AB622000D650079BF03 /* iPhone_transkey_landscape_alnum_cmd_8_2_chinese_down.png in Resources */,
D93C26E222000D630079BF03 /* iPhone_transkey_landscape_alnum_cap_2.png in Resources */, D93C26E222000D630079BF03 /* iPhone_transkey_landscape_alnum_cap_2.png in Resources */,
@ -13084,6 +13209,7 @@
0496B83F1FE7DF890044810E /* SignUpViewController.swift in Sources */, 0496B83F1FE7DF890044810E /* SignUpViewController.swift in Sources */,
D97785A6215DC55F00754079 /* TransactionHistoryViewController.swift in Sources */, D97785A6215DC55F00754079 /* TransactionHistoryViewController.swift in Sources */,
D9CB49862132A5F500B7A124 /* ItemsPickerCell.swift in Sources */, D9CB49862132A5F500B7A124 /* ItemsPickerCell.swift in Sources */,
BE74AFBB227C8FF200F05CE7 /* KFTCBankList.swift in Sources */,
D9B7ADF22130048E009B0564 /* ExchangeRatesServiceType.swift in Sources */, D9B7ADF22130048E009B0564 /* ExchangeRatesServiceType.swift in Sources */,
FF6E7D9721BF951D00A003B9 /* AppUpdateWireframe.swift in Sources */, FF6E7D9721BF951D00A003B9 /* AppUpdateWireframe.swift in Sources */,
D9DAFE2921353D6C00483E71 /* SendMoneyPaymentModeModel.swift in Sources */, D9DAFE2921353D6C00483E71 /* SendMoneyPaymentModeModel.swift in Sources */,
@ -13099,6 +13225,7 @@
D96A4FFB2146625C00CFD507 /* RegisterPresenter.swift in Sources */, D96A4FFB2146625C00CFD507 /* RegisterPresenter.swift in Sources */,
D92E656C222620A0004D1B3D /* SendMoneyCodePresenter.swift in Sources */, D92E656C222620A0004D1B3D /* SendMoneyCodePresenter.swift in Sources */,
FF6E7D9021BF951D00A003B9 /* AppUpdateService.swift in Sources */, FF6E7D9021BF951D00A003B9 /* AppUpdateService.swift in Sources */,
BE74AFBD227C8FF200F05CE7 /* AddAccountServiceType.swift in Sources */,
043770E721AD04240005B22D /* PennyTestModuleInterface.swift in Sources */, 043770E721AD04240005B22D /* PennyTestModuleInterface.swift in Sources */,
730D787E227A94E1007E517E /* RedeemServiceType.swift in Sources */, 730D787E227A94E1007E517E /* RedeemServiceType.swift in Sources */,
D99D72AA212D595B00601F48 /* CountryInfo.swift in Sources */, D99D72AA212D595B00601F48 /* CountryInfo.swift in Sources */,
@ -13120,10 +13247,12 @@
A2266A5B2028450700E890A6 /* AgentModel.swift in Sources */, A2266A5B2028450700E890A6 /* AgentModel.swift in Sources */,
D9DC107D21639078008F3C51 /* MessageComposePresenter.swift in Sources */, D9DC107D21639078008F3C51 /* MessageComposePresenter.swift in Sources */,
D95B5E4321311057000C0B33 /* GmeContactsViewController.swift in Sources */, D95B5E4321311057000C0B33 /* GmeContactsViewController.swift in Sources */,
BE74AFC8227C8FF200F05CE7 /* AutoDebitServiceType.swift in Sources */,
D923EBB9215C7421008A3026 /* HomeCollectionCollectionViewCell.swift in Sources */, D923EBB9215C7421008A3026 /* HomeCollectionCollectionViewCell.swift in Sources */,
D922D9212134DCF000D43053 /* EditReciepientPresenter.swift in Sources */, D922D9212134DCF000D43053 /* EditReciepientPresenter.swift in Sources */,
04E36E1C21AE585200783685 /* PennyTestSubmitInteractorIO.swift in Sources */, 04E36E1C21AE585200783685 /* PennyTestSubmitInteractorIO.swift in Sources */,
D96A4FFE2146625C00CFD507 /* RegisterViewInterface.swift in Sources */, D96A4FFE2146625C00CFD507 /* RegisterViewInterface.swift in Sources */,
BE74AFC6227C8FF200F05CE7 /* AutoDebitModuleInterface.swift in Sources */,
7301979A22535135001954AB /* kycForm1Interactor.swift in Sources */, 7301979A22535135001954AB /* kycForm1Interactor.swift in Sources */,
D922D98621351AAE00D43053 /* SendMoneyExchangeRateService.swift in Sources */, D922D98621351AAE00D43053 /* SendMoneyExchangeRateService.swift in Sources */,
730D7880227A94E1007E517E /* RedeemInteractor.swift in Sources */, 730D7880227A94E1007E517E /* RedeemInteractor.swift in Sources */,
@ -13135,11 +13264,15 @@
A28C18201FEA5FBA0018AB97 /* KYCBankAndIDViewController.swift in Sources */, A28C18201FEA5FBA0018AB97 /* KYCBankAndIDViewController.swift in Sources */,
730D7882227A94E1007E517E /* RedeemPresenter.swift in Sources */, 730D7882227A94E1007E517E /* RedeemPresenter.swift in Sources */,
D946719F21426DFB003924DB /* LoginViewController.swift in Sources */, D946719F21426DFB003924DB /* LoginViewController.swift in Sources */,
BE74AFCB227C8FF200F05CE7 /* AutoDebitPresenter.swift in Sources */,
BE74AFCA227C8FF200F05CE7 /* AutoDebitInteractorIO.swift in Sources */,
BE74AFBF227C8FF200F05CE7 /* AddAccountInteractor.swift in Sources */,
D922D9AE21351B7400D43053 /* SendMoneyVerificationWireframe.swift in Sources */, D922D9AE21351B7400D43053 /* SendMoneyVerificationWireframe.swift in Sources */,
043770E921AD04240005B22D /* PennyTestService.swift in Sources */, 043770E921AD04240005B22D /* PennyTestService.swift in Sources */,
9F3332AF208DAE7600E39C9F /* ExchangeRateData.swift in Sources */, 9F3332AF208DAE7600E39C9F /* ExchangeRateData.swift in Sources */,
730D78B4227A94F2007E517E /* JusoCommon.swift in Sources */, 730D78B4227A94F2007E517E /* JusoCommon.swift in Sources */,
D97785AC215DD23400754079 /* TransactionModel.swift in Sources */, D97785AC215DD23400754079 /* TransactionModel.swift in Sources */,
BE74AFC7227C8FF200F05CE7 /* AutoDebitService.swift in Sources */,
04E36E1A21AE585200783685 /* PennyTestSubmitServiceType.swift in Sources */, 04E36E1A21AE585200783685 /* PennyTestSubmitServiceType.swift in Sources */,
D90A9D65213696E400A96E45 /* BankPickerCell.swift in Sources */, D90A9D65213696E400A96E45 /* BankPickerCell.swift in Sources */,
A22F75032012006100B0FA15 /* likesTableViewCell.swift in Sources */, A22F75032012006100B0FA15 /* likesTableViewCell.swift in Sources */,
@ -13149,7 +13282,6 @@
D9DC107A21639078008F3C51 /* MessageComposeService.swift in Sources */, D9DC107A21639078008F3C51 /* MessageComposeService.swift in Sources */,
D922D9412135124200D43053 /* SendMoneyPaymentModeService.swift in Sources */, D922D9412135124200D43053 /* SendMoneyPaymentModeService.swift in Sources */,
730D787D227A94E1007E517E /* RedeemModuleInterface.swift in Sources */, 730D787D227A94E1007E517E /* RedeemModuleInterface.swift in Sources */,
0470300B21CA3EAE00B6C9C3 /* AutoDebitPresenter.swift in Sources */,
D96A4FD521460B4A00CFD507 /* SplashScreenService.swift in Sources */, D96A4FD521460B4A00CFD507 /* SplashScreenService.swift in Sources */,
9F983C0C2024883D001DCB3F /* UIColorExtension.swift in Sources */, 9F983C0C2024883D001DCB3F /* UIColorExtension.swift in Sources */,
D9DC108121639078008F3C51 /* MessageComposeViewInterface.swift in Sources */, D9DC108121639078008F3C51 /* MessageComposeViewInterface.swift in Sources */,
@ -13168,6 +13300,8 @@
736A8C452277EB2A00337A50 /* BiometricAuthenticationNotificationPresenter.swift in Sources */, 736A8C452277EB2A00337A50 /* BiometricAuthenticationNotificationPresenter.swift in Sources */,
D9A060DF223F680B00F5D7C4 /* ResendExchangeViewController.swift in Sources */, D9A060DF223F680B00F5D7C4 /* ResendExchangeViewController.swift in Sources */,
730D787F227A94E1007E517E /* RedeemService.swift in Sources */, 730D787F227A94E1007E517E /* RedeemService.swift in Sources */,
BE74AFBE227C8FF200F05CE7 /* AddAccountInteractorIO.swift in Sources */,
BE74AFC4227C8FF200F05CE7 /* AddAccountViewInterface.swift in Sources */,
D96BD11C216479E200DFE7D8 /* WalletStatementWireframeInput.swift in Sources */, D96BD11C216479E200DFE7D8 /* WalletStatementWireframeInput.swift in Sources */,
D97785A1215DC55F00754079 /* TransactionHistoryInteractor.swift in Sources */, D97785A1215DC55F00754079 /* TransactionHistoryInteractor.swift in Sources */,
D903113F214786EA00AD5BA9 /* ForgotPasswordInteractor.swift in Sources */, D903113F214786EA00AD5BA9 /* ForgotPasswordInteractor.swift in Sources */,
@ -13180,6 +13314,7 @@
D92E656B222620A0004D1B3D /* SendMoneyCodeInteractor.swift in Sources */, D92E656B222620A0004D1B3D /* SendMoneyCodeInteractor.swift in Sources */,
D96848C9212D3AEB00EF12B1 /* ExtensionJSON.swift in Sources */, D96848C9212D3AEB00EF12B1 /* ExtensionJSON.swift in Sources */,
D9A060E0223F680B00F5D7C4 /* ResendExchangeViewInterface.swift in Sources */, D9A060E0223F680B00F5D7C4 /* ResendExchangeViewInterface.swift in Sources */,
BE74AFCC227C8FF200F05CE7 /* AutoDebitWireframe.swift in Sources */,
D95B5E4921314D31000C0B33 /* GmeContacts.swift in Sources */, D95B5E4921314D31000C0B33 /* GmeContacts.swift in Sources */,
BEC9B000224FC49C00A2DA06 /* BiometricAuthenticationInteractor.swift in Sources */, BEC9B000224FC49C00A2DA06 /* BiometricAuthenticationInteractor.swift in Sources */,
A24B44FA204CF108009BF491 /* InviteeModel.swift in Sources */, A24B44FA204CF108009BF491 /* InviteeModel.swift in Sources */,
@ -13265,7 +13400,6 @@
9FD03DA82046A8BA0045C67B /* PopUpAddUserProfileViewController.swift in Sources */, 9FD03DA82046A8BA0045C67B /* PopUpAddUserProfileViewController.swift in Sources */,
D922D96C2135145F00D43053 /* SendMoneyParentViewController.swift in Sources */, D922D96C2135145F00D43053 /* SendMoneyParentViewController.swift in Sources */,
D922D98C21351AAE00D43053 /* SendMoneyExchangeRateViewController.swift in Sources */, D922D98C21351AAE00D43053 /* SendMoneyExchangeRateViewController.swift in Sources */,
0470301421CA4EE200B6C9C3 /* AutoDebitTableViewCell.swift in Sources */,
045DFCAC2089B2BF000F7699 /* ReferralCodeViewModel.swift in Sources */, 045DFCAC2089B2BF000F7699 /* ReferralCodeViewModel.swift in Sources */,
D922D9402135124200D43053 /* SendMoneyPaymentModeModuleInterface.swift in Sources */, D922D9402135124200D43053 /* SendMoneyPaymentModeModuleInterface.swift in Sources */,
D92E6569222620A0004D1B3D /* SendMoneyCodeService.swift in Sources */, D92E6569222620A0004D1B3D /* SendMoneyCodeService.swift in Sources */,
@ -13273,6 +13407,7 @@
BEC9B001224FC49C00A2DA06 /* BiometricAuthenticationPresenter.swift in Sources */, BEC9B001224FC49C00A2DA06 /* BiometricAuthenticationPresenter.swift in Sources */,
D9622316212BE3DC00B7A115 /* TablePickerTableViewCell.swift in Sources */, D9622316212BE3DC00B7A115 /* TablePickerTableViewCell.swift in Sources */,
D9790624223F58420025BD5B /* ResendWireframe.swift in Sources */, D9790624223F58420025BD5B /* ResendWireframe.swift in Sources */,
BE74AFC3227C8FF200F05CE7 /* AddAccountViewController.swift in Sources */,
D9A060DA223F680B00F5D7C4 /* ResendExchangeInteractor.swift in Sources */, D9A060DA223F680B00F5D7C4 /* ResendExchangeInteractor.swift in Sources */,
043BE859204CF3A200221D12 /* MoneyRequestTableViewCell.swift in Sources */, 043BE859204CF3A200221D12 /* MoneyRequestTableViewCell.swift in Sources */,
D950BED121549242008367A1 /* HomeModuleInterface.swift in Sources */, D950BED121549242008367A1 /* HomeModuleInterface.swift in Sources */,
@ -13285,6 +13420,7 @@
D96848C7212D3A7400EF12B1 /* DataRequestExtension.swift in Sources */, D96848C7212D3A7400EF12B1 /* DataRequestExtension.swift in Sources */,
D95B5E3D21311057000C0B33 /* GmeContactsInteractorIO.swift in Sources */, D95B5E3D21311057000C0B33 /* GmeContactsInteractorIO.swift in Sources */,
730D7883227A94E1007E517E /* RedeemWireframe.swift in Sources */, 730D7883227A94E1007E517E /* RedeemWireframe.swift in Sources */,
BE74AFC2227C8FF200F05CE7 /* AddAccountWireframe.swift in Sources */,
D96A4FDA21460B4A00CFD507 /* SplashScreenWireframe.swift in Sources */, D96A4FDA21460B4A00CFD507 /* SplashScreenWireframe.swift in Sources */,
D922D98521351AAE00D43053 /* SendMoneyExchangeRateServiceType.swift in Sources */, D922D98521351AAE00D43053 /* SendMoneyExchangeRateServiceType.swift in Sources */,
73FDCE1D225C167700CC6912 /* KeyChain.swift in Sources */, 73FDCE1D225C167700CC6912 /* KeyChain.swift in Sources */,
@ -13322,14 +13458,17 @@
9FD1EE6A1FF0F48F00AC79FC /* PaymentMethodViewController.swift in Sources */, 9FD1EE6A1FF0F48F00AC79FC /* PaymentMethodViewController.swift in Sources */,
D92B80252140C3CB00A25B26 /* MainModuleInterface.swift in Sources */, D92B80252140C3CB00A25B26 /* MainModuleInterface.swift in Sources */,
D946719521426DFB003924DB /* LoginModuleInterface.swift in Sources */, D946719521426DFB003924DB /* LoginModuleInterface.swift in Sources */,
BE74AFCD227C8FF200F05CE7 /* AutoDebitWireframeInput.swift in Sources */,
043770E821AD04240005B22D /* PennyTestServiceType.swift in Sources */, 043770E821AD04240005B22D /* PennyTestServiceType.swift in Sources */,
D96BD1262164875800DFE7D8 /* WalletStatementTableViewCell.swift in Sources */, D96BD1262164875800DFE7D8 /* WalletStatementTableViewCell.swift in Sources */,
BE74AFCF227C8FF200F05CE7 /* AutoDebitTableViewCell.swift in Sources */,
04E36E2221AE585200783685 /* PennyTestSubmitViewInterface.swift in Sources */, 04E36E2221AE585200783685 /* PennyTestSubmitViewInterface.swift in Sources */,
04DC27EC21A51E29003714F5 /* AutoRefund.swift in Sources */, 04DC27EC21A51E29003714F5 /* AutoRefund.swift in Sources */,
D96BD11A216479E200DFE7D8 /* WalletStatementPresenter.swift in Sources */, D96BD11A216479E200DFE7D8 /* WalletStatementPresenter.swift in Sources */,
A255A907206A14220002905D /* SSBadgeButton.swift in Sources */, A255A907206A14220002905D /* SSBadgeButton.swift in Sources */,
D922D9232134DCF000D43053 /* EditReciepientWireframe.swift in Sources */, D922D9232134DCF000D43053 /* EditReciepientWireframe.swift in Sources */,
D945F121213E1D5100A24824 /* SendMoneyReceiptInteractorIO.swift in Sources */, D945F121213E1D5100A24824 /* SendMoneyReceiptInteractorIO.swift in Sources */,
BE74AFBA227C8FF200F05CE7 /* AddAccountModuleInterface.swift in Sources */,
D97785A2215DC55F00754079 /* TransactionHistoryPresenter.swift in Sources */, D97785A2215DC55F00754079 /* TransactionHistoryPresenter.swift in Sources */,
D9BF7EE12137CECF00264387 /* CurrencyPickerCell.swift in Sources */, D9BF7EE12137CECF00264387 /* CurrencyPickerCell.swift in Sources */,
9F16112E2029C117009E8610 /* TrackTransactionViewModel.swift in Sources */, 9F16112E2029C117009E8610 /* TrackTransactionViewModel.swift in Sources */,
@ -13359,6 +13498,7 @@
A2ECF90D202312AE0009F481 /* ExchangeRateViewController.swift in Sources */, A2ECF90D202312AE0009F481 /* ExchangeRateViewController.swift in Sources */,
04546C472032E324007EFE15 /* CharacterExtension.swift in Sources */, 04546C472032E324007EFE15 /* CharacterExtension.swift in Sources */,
04F6C2EA20109B8600C59431 /* Bank.swift in Sources */, 04F6C2EA20109B8600C59431 /* Bank.swift in Sources */,
BE74AFD1227C8FF200F05CE7 /* AutoDebitViewInterface.swift in Sources */,
A2266A5D2028451700E890A6 /* AgentViewModel.swift in Sources */, A2266A5D2028451700E890A6 /* AgentViewModel.swift in Sources */,
D922D9652135145F00D43053 /* SendMoneyParentInteractor.swift in Sources */, D922D9652135145F00D43053 /* SendMoneyParentInteractor.swift in Sources */,
7301978F22535135001954AB /* KycInteractorIO.swift in Sources */, 7301978F22535135001954AB /* KycInteractorIO.swift in Sources */,
@ -13412,6 +13552,7 @@
D96BD118216479E200DFE7D8 /* WalletStatementInteractorIO.swift in Sources */, D96BD118216479E200DFE7D8 /* WalletStatementInteractorIO.swift in Sources */,
D90D55D021327CD600EEEE04 /* AddReciepientPresenter.swift in Sources */, D90D55D021327CD600EEEE04 /* AddReciepientPresenter.swift in Sources */,
D922D9482135124200D43053 /* SendMoneyPaymentModeViewController.swift in Sources */, D922D9482135124200D43053 /* SendMoneyPaymentModeViewController.swift in Sources */,
BE74AFC9227C8FF200F05CE7 /* AutoDebitInteractor.swift in Sources */,
FF6E7D8E21BF951D00A003B9 /* AppUpdateInteractor.swift in Sources */, FF6E7D8E21BF951D00A003B9 /* AppUpdateInteractor.swift in Sources */,
D9B7ADFD2130073A009B0564 /* WireframeInput.swift in Sources */, D9B7ADFD2130073A009B0564 /* WireframeInput.swift in Sources */,
730D78B3227A94F2007E517E /* Juso.swift in Sources */, 730D78B3227A94F2007E517E /* Juso.swift in Sources */,
@ -13425,6 +13566,7 @@
0477E2A7204941FE00B02377 /* MoneyRequestViewController.swift in Sources */, 0477E2A7204941FE00B02377 /* MoneyRequestViewController.swift in Sources */,
D96A4FD421460B4A00CFD507 /* SplashScreenModuleInterface.swift in Sources */, D96A4FD421460B4A00CFD507 /* SplashScreenModuleInterface.swift in Sources */,
D9B7ADF72130048E009B0564 /* ExchangeRatesWireframe.swift in Sources */, D9B7ADF72130048E009B0564 /* ExchangeRatesWireframe.swift in Sources */,
BE74AFD0227C8FF200F05CE7 /* AutoDebitViewController.swift in Sources */,
D96A4FFA2146625C00CFD507 /* RegisterInteractorIO.swift in Sources */, D96A4FFA2146625C00CFD507 /* RegisterInteractorIO.swift in Sources */,
736A8C4A2277EB2A00337A50 /* BiometricAuthenticationNotificationViewInterface.swift in Sources */, 736A8C4A2277EB2A00337A50 /* BiometricAuthenticationNotificationViewInterface.swift in Sources */,
D9B7ADF82130048E009B0564 /* ExchangeRatesViewController.swift in Sources */, D9B7ADF82130048E009B0564 /* ExchangeRatesViewController.swift in Sources */,
@ -13442,7 +13584,6 @@
730197AA22535135001954AB /* kycForm3ViewInterface.swift in Sources */, 730197AA22535135001954AB /* kycForm3ViewInterface.swift in Sources */,
730D78BB227A94F2007E517E /* SearchAddressWireframe.swift in Sources */, 730D78BB227A94F2007E517E /* SearchAddressWireframe.swift in Sources */,
FF29296C212B8DFE00FF5BAC /* ExchangeRateCollectionViewCell.swift in Sources */, FF29296C212B8DFE00FF5BAC /* ExchangeRateCollectionViewCell.swift in Sources */,
0470300821CA3EAE00B6C9C3 /* AutoDebitServiceType.swift in Sources */,
A2E3379B20484DD2002DB015 /* EarnedTableViewCell.swift in Sources */, A2E3379B20484DD2002DB015 /* EarnedTableViewCell.swift in Sources */,
043BE857204CF10B00221D12 /* MoneyRequestViewModel.swift in Sources */, 043BE857204CF10B00221D12 /* MoneyRequestViewModel.swift in Sources */,
D96A4FFC2146625C00CFD507 /* RegisterWireframeInput.swift in Sources */, D96A4FFC2146625C00CFD507 /* RegisterWireframeInput.swift in Sources */,
@ -13464,6 +13605,7 @@
049E61A51FF0AE9D00817C76 /* UrlManager.swift in Sources */, 049E61A51FF0AE9D00817C76 /* UrlManager.swift in Sources */,
730D78B2227A94F2007E517E /* JusoResult.swift in Sources */, 730D78B2227A94F2007E517E /* JusoResult.swift in Sources */,
D9AFE856215C7166005F3A25 /* HomeCollectionTableViewCell.swift in Sources */, D9AFE856215C7166005F3A25 /* HomeCollectionTableViewCell.swift in Sources */,
BE74AFC1227C8FF200F05CE7 /* AddAccountWireframeInput.swift in Sources */,
BEC9AFFC224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift in Sources */, BEC9AFFC224FC49C00A2DA06 /* BiometricAuthenticationModuleInterface.swift in Sources */,
A25CF60B2046A92C0029BC12 /* ReferringViewController.swift in Sources */, A25CF60B2046A92C0029BC12 /* ReferringViewController.swift in Sources */,
730D7886227A94E1007E517E /* RedeemViewController.swift in Sources */, 730D7886227A94E1007E517E /* RedeemViewController.swift in Sources */,
@ -13475,10 +13617,8 @@
736A8C402277EB2A00337A50 /* BiometricAuthenticationNotificationModuleInterface.swift in Sources */, 736A8C402277EB2A00337A50 /* BiometricAuthenticationNotificationModuleInterface.swift in Sources */,
730197AF22535135001954AB /* kycForm2InteractorIO.swift in Sources */, 730197AF22535135001954AB /* kycForm2InteractorIO.swift in Sources */,
D922D9A821351B7400D43053 /* SendMoneyVerificationModuleInterface.swift in Sources */, D922D9A821351B7400D43053 /* SendMoneyVerificationModuleInterface.swift in Sources */,
0470300721CA3EAE00B6C9C3 /* AutoDebitService.swift in Sources */,
730197AE22535135001954AB /* kycForm2Service.swift in Sources */, 730197AE22535135001954AB /* kycForm2Service.swift in Sources */,
D950BEDB21549242008367A1 /* HomeViewInterface.swift in Sources */, D950BEDB21549242008367A1 /* HomeViewInterface.swift in Sources */,
0470300C21CA3EAE00B6C9C3 /* AutoDebitWireframe.swift in Sources */,
043324AA200E021D00CF3615 /* MobileRechargeDetailsViewController.swift in Sources */, 043324AA200E021D00CF3615 /* MobileRechargeDetailsViewController.swift in Sources */,
FF6E7D9121BF951D00A003B9 /* AppUpdateServiceType.swift in Sources */, FF6E7D9121BF951D00A003B9 /* AppUpdateServiceType.swift in Sources */,
722347F0205A39D500296ADD /* SocialFeed.swift in Sources */, 722347F0205A39D500296ADD /* SocialFeed.swift in Sources */,
@ -13527,7 +13667,6 @@
D9DC107821639078008F3C51 /* MessageComposeModuleInterface.swift in Sources */, D9DC107821639078008F3C51 /* MessageComposeModuleInterface.swift in Sources */,
D9DC107E21639078008F3C51 /* MessageComposeWireframeInput.swift in Sources */, D9DC107E21639078008F3C51 /* MessageComposeWireframeInput.swift in Sources */,
D922D91D2134DCF000D43053 /* EditReciepientServiceType.swift in Sources */, D922D91D2134DCF000D43053 /* EditReciepientServiceType.swift in Sources */,
0470300D21CA3EAE00B6C9C3 /* AutoDebitWireframeInput.swift in Sources */,
04E36E1B21AE585200783685 /* PennyTestSubmitService.swift in Sources */, 04E36E1B21AE585200783685 /* PennyTestSubmitService.swift in Sources */,
D90D55D121327CD600EEEE04 /* AddReciepientWireframe.swift in Sources */, D90D55D121327CD600EEEE04 /* AddReciepientWireframe.swift in Sources */,
D957DC6C213D05E700FA812D /* SendMoneySubmitResponse.swift in Sources */, D957DC6C213D05E700FA812D /* SendMoneySubmitResponse.swift in Sources */,
@ -13543,8 +13682,6 @@
D950BED521549242008367A1 /* HomeInteractor.swift in Sources */, D950BED521549242008367A1 /* HomeInteractor.swift in Sources */,
D96BD11F216479E200DFE7D8 /* WalletStatementViewController.swift in Sources */, D96BD11F216479E200DFE7D8 /* WalletStatementViewController.swift in Sources */,
0470301221CA4BD000B6C9C3 /* Account.swift in Sources */, 0470301221CA4BD000B6C9C3 /* Account.swift in Sources */,
0470300A21CA3EAE00B6C9C3 /* AutoDebitInteractorIO.swift in Sources */,
0470300F21CA3EAE00B6C9C3 /* AutoDebitViewController.swift in Sources */,
D94173B3214B40ED00D04BE5 /* KycModel.swift in Sources */, D94173B3214B40ED00D04BE5 /* KycModel.swift in Sources */,
D95B7047213FB5F10053CC3D /* WebLinksViewController.swift in Sources */, D95B7047213FB5F10053CC3D /* WebLinksViewController.swift in Sources */,
A270F08D2075C74300B78D00 /* AgentCountryList.swift in Sources */, A270F08D2075C74300B78D00 /* AgentCountryList.swift in Sources */,
@ -13556,8 +13693,10 @@
0430986C2029EF4B00821C70 /* TrackTransactionTableViewCell.swift in Sources */, 0430986C2029EF4B00821C70 /* TrackTransactionTableViewCell.swift in Sources */,
D922D98721351AAE00D43053 /* SendMoneyExchangeRateInteractorIO.swift in Sources */, D922D98721351AAE00D43053 /* SendMoneyExchangeRateInteractorIO.swift in Sources */,
D922D9622135145F00D43053 /* SendMoneyParentModuleInterface.swift in Sources */, D922D9622135145F00D43053 /* SendMoneyParentModuleInterface.swift in Sources */,
BE74AFBC227C8FF200F05CE7 /* AddAccountService.swift in Sources */,
D96A4FF92146625C00CFD507 /* RegisterInteractor.swift in Sources */, D96A4FF92146625C00CFD507 /* RegisterInteractor.swift in Sources */,
D97D58D72240D34900EFB27E /* ResendDetail.swift in Sources */, D97D58D72240D34900EFB27E /* ResendDetail.swift in Sources */,
BE74AFC0227C8FF200F05CE7 /* AddAccountPresenter.swift in Sources */,
7301978B22535135001954AB /* KycModuleInterface.swift in Sources */, 7301978B22535135001954AB /* KycModuleInterface.swift in Sources */,
7301979722535135001954AB /* kycForm1Service.swift in Sources */, 7301979722535135001954AB /* kycForm1Service.swift in Sources */,
A2FD3AED2052566A00404EA9 /* NotificationModel.swift in Sources */, A2FD3AED2052566A00404EA9 /* NotificationModel.swift in Sources */,
@ -13569,7 +13708,6 @@
D96BD11E216479E200DFE7D8 /* WalletStatementViewInterface.swift in Sources */, D96BD11E216479E200DFE7D8 /* WalletStatementViewInterface.swift in Sources */,
9F40C3521FEAB0F4000CB53C /* KYCDocumentsUploadViewController.swift in Sources */, 9F40C3521FEAB0F4000CB53C /* KYCDocumentsUploadViewController.swift in Sources */,
D92B802E2140C3CB00A25B26 /* MainViewController.swift in Sources */, D92B802E2140C3CB00A25B26 /* MainViewController.swift in Sources */,
0470301021CA3EAE00B6C9C3 /* AutoDebitViewInterface.swift in Sources */,
D9CB49872132A5F500B7A124 /* ItemsPickerViewController.swift in Sources */, D9CB49872132A5F500B7A124 /* ItemsPickerViewController.swift in Sources */,
D922D9422135124200D43053 /* SendMoneyPaymentModeServiceType.swift in Sources */, D922D9422135124200D43053 /* SendMoneyPaymentModeServiceType.swift in Sources */,
7301979B22535135001954AB /* kycForm1Presenter.swift in Sources */, 7301979B22535135001954AB /* kycForm1Presenter.swift in Sources */,
@ -13584,7 +13722,6 @@
D90D55D72132846000EEEE04 /* SendMoneyCountryModel.swift in Sources */, D90D55D72132846000EEEE04 /* SendMoneyCountryModel.swift in Sources */,
D9CB49752132909500B7A124 /* SendMoneyDistrictViewModel.swift in Sources */, D9CB49752132909500B7A124 /* SendMoneyDistrictViewModel.swift in Sources */,
D95B5E3B21311057000C0B33 /* GmeContactsServiceType.swift in Sources */, D95B5E3B21311057000C0B33 /* GmeContactsServiceType.swift in Sources */,
0470300921CA3EAE00B6C9C3 /* AutoDebitInteractor.swift in Sources */,
730D7888227A94E1007E517E /* RewardModuleInterface.swift in Sources */, 730D7888227A94E1007E517E /* RewardModuleInterface.swift in Sources */,
730D788C227A94E1007E517E /* RewardService.swift in Sources */, 730D788C227A94E1007E517E /* RewardService.swift in Sources */,
D922D9672135145F00D43053 /* SendMoneyParentPresenter.swift in Sources */, D922D9672135145F00D43053 /* SendMoneyParentPresenter.swift in Sources */,
@ -13599,7 +13736,6 @@
04F826461FE7E4D300C4AF1E /* FillSignUpCodeController.swift in Sources */, 04F826461FE7E4D300C4AF1E /* FillSignUpCodeController.swift in Sources */,
D9030ABD2139113A00A1BCA0 /* SendMoneyAccountValidationRequestModel.swift in Sources */, D9030ABD2139113A00A1BCA0 /* SendMoneyAccountValidationRequestModel.swift in Sources */,
D945F11E213E1D5100A24824 /* SendMoneyReceiptService.swift in Sources */, D945F11E213E1D5100A24824 /* SendMoneyReceiptService.swift in Sources */,
0470300621CA3EAE00B6C9C3 /* AutoDebitModuleInterface.swift in Sources */,
D9DC108021639078008F3C51 /* MessageComposeViewController.swift in Sources */, D9DC108021639078008F3C51 /* MessageComposeViewController.swift in Sources */,
7301979D22535135001954AB /* kycForm1WireframeInput.swift in Sources */, 7301979D22535135001954AB /* kycForm1WireframeInput.swift in Sources */,
D922D9242134DCF000D43053 /* EditReciepientViewController.swift in Sources */, D922D9242134DCF000D43053 /* EditReciepientViewController.swift in Sources */,

BIN
GMERemittance/Module/AutoDebitModules/AddAccount/.DS_Store

66
GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Interactor/AddAccountInteractor.swift

@ -0,0 +1,66 @@
//
// AddAccountInteractor.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class AddAccountInteractor {
// MARK: Properties
weak var output: AddAccountInteractorOutput?
private let service: AddAccountServiceType
// MARK: Initialization
init(service: AddAccountServiceType) {
self.service = service
}
// MARK: Converting entities
}
// MARK: AddAccount interactor input interface
extension AddAccountInteractor: AddAccountInteractorInput {
func viewIsReady(model: KFTCModel?) {
//TODO: merge bank information
self.service.fetchBankList(success: {
self.output?.setModel(model: (bankList: $0, kftcModel: model))
}){
self.output?.failureSetModel(error: $0)
}
}
func verifyAccount(
customerID: String,
bankCode: String,
accountNumber: String
) {
var params = ["CustomerId": customerID]
params["BankCode"] = bankCode
params["AccountNumber"] = accountNumber
self.service.verifyAccountService(
params: params,
success: { self.output?.successVerify() }){
self.output?.failure(error: $0)
}
}
func fetchKFTCUrl(url: String, header: [String: String]) {
self.service.fetchKftcUrlService(
url: url,
header: header,
success: {
guard let response = $0 else { return }
self.output?.successTestURL(url: response)
}){ self.output?.failure(error: $0)}
}
}

26
GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Interactor/AddAccountInteractorIO.swift

@ -0,0 +1,26 @@
//
// AddAccountInteractorIO.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol AddAccountInteractorInput: class {
func viewIsReady(model: KFTCModel?)
func fetchKFTCUrl(url: String, header: [String: String])
func verifyAccount(
customerID: String,
bankCode: String,
accountNumber: String
)
}
protocol AddAccountInteractorOutput: class {
func setModel(model: (bankList: [BankInformation]?, kftcModel: KFTCModel?))
func failureSetModel(error: Error)
func successTestURL(url: String)
func successVerify()
func failure(error: Error)
}

44
GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Model/KFTCBankList.swift

@ -0,0 +1,44 @@
//
// File.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
import ObjectMapper
class BankInformation: Mappable {
var rowId: String?
var bankCode: String?
var bankName: String?
required init?(map: Map) {}
func mapping(map: Map) {
self.rowId <- map["RowId"]
self.bankCode <- map["BankCode"]
self.bankName <- map["BankName"]
}
}
class KFTCBankList: Mappable {
var errorCode: String?
var msg: String?
var id: String?
var extra: String?
var extra2: String?
var data: [BankInformation]?
required init?(map: Map) {}
func mapping(map: Map) {
self.errorCode <- map["ErrorCode"]
self.msg <- map["Msg"]
self.id <- map["Id"]
self.extra <- map["Extra"]
self.extra2 <- map["Extra2"]
self.data <- map["Data"]
}
}

88
GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Service/AddAccountService.swift

@ -0,0 +1,88 @@
//
// AddAccountService.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
import Alamofire
class AddAccountService: AddAccountServiceType {
// MARK: Properties
// MARK: Initialization
// MARK: Data management
func fetchBankList(success: @escaping ([BankInformation]?) -> (),
failure: @escaping (Error) -> ()) {
auth.request(
method: .get,
url: baseUrl + "/kftc/KFTCBankList",
params: nil,
success: { (response: KFTCBankList) in
if (response.errorCode ?? "") == "1" {
let error = NSError.init(
domain: "Network",
code: 0,
userInfo: [NSLocalizedDescriptionKey : response.msg ?? ""]
)
failure(error)
}else {
success(response.data)
}
}) { (error) in
failure(error)
}
}
func verifyAccountService(
params: [String: String],
success: @escaping () -> (),
failure: @escaping (Error) -> ()) {
auth.request(
method: .post,
url: baseUrl + "/kftc/CheckRealName",
params: params,
success: { (response: KFTCVerifyAccount) in
if (response.errorCode ?? "") == "1" {
let error = NSError.init(
domain: "Network",
code: 0,
userInfo: [NSLocalizedDescriptionKey : response.msg ?? ""]
)
failure(error)
}else {
success()
}
}) { (error) in
failure(error)
}
}
func fetchKftcUrlService(
url: String,
header: [String: String],
success: @escaping (String?) -> (),
failure: @escaping (Error) -> ()) {
auth.kftcRequest(
method: .get,
header: header,
url: url,
params: nil,
encoding: URLEncoding.default,
success: { (response: KFTCURL) in
success(response.value)
}) { (error) in
failure(error)
}
}
}

25
GMERemittance/Module/AutoDebitModules/AddAccount/Application Logic/Service/AddAccountServiceType.swift

@ -0,0 +1,25 @@
//
// AddAccountServiceType.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol AddAccountServiceType: ApiServiceType {
func fetchBankList(success: @escaping ([BankInformation]?) -> (),
failure: @escaping (Error) -> ())
func verifyAccountService(
params: [String: String],
success: @escaping () -> (),
failure: @escaping (Error) -> ())
func fetchKftcUrlService(
url: String,
header: [String: String],
success: @escaping (String?) -> (),
failure: @escaping (Error) -> ())
}

21
GMERemittance/Module/AutoDebitModules/AddAccount/Module Interface/AddAccountModuleInterface.swift

@ -0,0 +1,21 @@
//
// AddAccountModuleInterface.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol AddAccountModuleInterface: class {
func viewIsReady()
func verifyAccount(
customerID: String,
bankCode: String,
accountNumber: String
)
func doGetTestURL(url: String, header: [String: String])
func goKFTC(url: String, header: [KftcHeader]?)
}

96
GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/Presenter/AddAccountPresenter.swift

@ -0,0 +1,96 @@
//
// AddAccountPresenter.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class AddAccountPresenter {
// MARK: Properties
weak var view: AddAccountViewInterface?
var interactor: AddAccountInteractorInput?
var wireframe: AddAccountWireframeInput?
private var model: KFTCModel?
init(with model: KFTCModel?) {
self.model = model
}
// MARK: Converting entities
}
// MARK: AddAccount module interface
extension AddAccountPresenter: AddAccountModuleInterface {
func viewIsReady() {
self.interactor?.viewIsReady(model: self.model)
}
func verifyAccount(
customerID: String,
bankCode: String,
accountNumber: String
){
if customerID == "" || bankCode == "" || accountNumber == "" {
let error = NSError.init(
domain: "Invalid Bank Account",
code: 0,
message: "Check your bank account information")
self.view?.failure(error: error)
} else {
self.view?.startLoading()
self.interactor?.verifyAccount(
customerID: customerID,
bankCode: bankCode,
accountNumber: accountNumber
)
}
}
func doGetTestURL(url: String, header: [String: String]) {
self.view?.startLoading()
self.interactor?.fetchKFTCUrl(url: url, header: header)
}
func goKFTC(url: String, header: [KftcHeader]?) {
self.wireframe?.pushKFTCViewControllerOf(
url: url.components(separatedBy: .whitespaces).joined(),
header: header)
}
}
// MARK: AddAccount interactor output interface
extension AddAccountPresenter: AddAccountInteractorOutput {
func setModel(model: (bankList: [BankInformation]?, kftcModel: KFTCModel?)) {
self.view?.setModel(model: model)
}
func failureSetModel(error: Error) {
self.view?.failureSetModel(error: error)
}
func successVerify() {
self.view?.endLoading()
self.view?.successVerify()
}
func failure(error: Error) {
self.view?.endLoading()
self.view?.failure(error: error)
}
func successTestURL(url: String) {
self.view?.endLoading()
self.view?.successTestURL(url: url)
}
}

152
GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/View/AddAccount.storyboard

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="QxQ-Vf-4rA">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<array key="SanFranciscoDisplay-Medium.otf">
<string>SanFranciscoDisplay-Medium</string>
</array>
<array key="SanFranciscoDisplay-Regular.otf">
<string>SanFranciscoDisplay-Regular</string>
</array>
</customFonts>
<scenes>
<!--AddAccount-->
<scene sceneID="R60-Pu-Hpy">
<objects>
<viewController storyboardIdentifier="AddAccountViewController" title="AddAccount" id="HSb-ou-7T5" customClass="AddAccountViewController" customModule="GME_Remit" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="9Uc-9s-KgO" customClass="IQPreviousNextView" customModule="IQKeyboardManagerSwift">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="To add account, enter information." textAlignment="center" lineBreakMode="wordWrap" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="61P-lG-Orb" userLabel="Title Label">
<rect key="frame" x="10" y="64" width="355" height="50"/>
<color key="backgroundColor" red="0.90508246420000005" green="0.92919331790000004" blue="0.94996720550000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="Gwt-WO-ll0"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="18"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" spacing="13" translatesAutoresizingMaskIntoConstraints="NO" id="3ai-n4-gBZ" userLabel="ContentsView">
<rect key="frame" x="26" y="134" width="323" height="116"/>
<subviews>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="RZW-X0-sHf" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="323" height="30"/>
<color key="tintColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="textColor" red="0.43529412150000002" green="0.4431372583" blue="0.47450980539999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="completedTitleText" value="Bank Name"/>
<userDefinedRuntimeAttribute type="string" keyPath="placeholder" value="Select your bank"/>
</userDefinedRuntimeAttributes>
</textField>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="8ga-Pj-fFb" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target">
<rect key="frame" x="0.0" y="43" width="323" height="30"/>
<color key="textColor" red="0.43529412150000002" green="0.4431372583" blue="0.47450980539999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<textInputTraits key="textInputTraits" keyboardType="numberPad"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="completedTitleText" value="Account Number"/>
<userDefinedRuntimeAttribute type="string" keyPath="placeholder" value="Enter your bank account number"/>
<userDefinedRuntimeAttribute type="string" keyPath="errorMessage" value="Invalid Bank Account"/>
</userDefinedRuntimeAttributes>
</textField>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="1Ca-e4-yFh" customClass="ValidationTextField" customModule="GME_Remit" customModuleProvider="target">
<rect key="frame" x="0.0" y="86" width="323" height="30"/>
<color key="tintColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="textColor" red="0.43529412150000002" green="0.4431372583" blue="0.47450980539999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="completedTitleText" value="Language"/>
<userDefinedRuntimeAttribute type="string" keyPath="placeholder" value="Select Language"/>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="1Ca-e4-yFh" secondAttribute="trailing" id="4Dp-Z7-6z4"/>
<constraint firstAttribute="trailing" secondItem="RZW-X0-sHf" secondAttribute="trailing" id="DSa-39-eLl"/>
<constraint firstItem="RZW-X0-sHf" firstAttribute="leading" secondItem="3ai-n4-gBZ" secondAttribute="leading" id="HsV-M1-Auo"/>
<constraint firstAttribute="trailing" secondItem="8ga-Pj-fFb" secondAttribute="trailing" id="Vwh-7P-djf"/>
<constraint firstItem="1Ca-e4-yFh" firstAttribute="leading" secondItem="3ai-n4-gBZ" secondAttribute="leading" id="aM4-qD-WM5"/>
<constraint firstItem="8ga-Pj-fFb" firstAttribute="leading" secondItem="3ai-n4-gBZ" secondAttribute="leading" id="fgh-IM-DJD"/>
</constraints>
</stackView>
<button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bm7-r1-NLR">
<rect key="frame" x="87.5" y="280" width="200" height="50"/>
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="WQG-ti-fgK"/>
<constraint firstAttribute="width" constant="200" id="rOK-V9-a6q"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<state key="normal" title="Verify Account">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="verifyAccountButtonTouch:" destination="HSb-ou-7T5" eventType="touchUpInside" id="kgW-AE-MCV"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="trailingMargin" secondItem="3ai-n4-gBZ" secondAttribute="trailing" constant="10" id="5fF-jb-9Eb"/>
<constraint firstItem="bm7-r1-NLR" firstAttribute="top" secondItem="3ai-n4-gBZ" secondAttribute="bottom" constant="30" id="Hee-LI-sTz"/>
<constraint firstItem="3ai-n4-gBZ" firstAttribute="leading" secondItem="9Uc-9s-KgO" secondAttribute="leadingMargin" constant="10" id="Ov0-8H-kTY"/>
<constraint firstItem="3ai-n4-gBZ" firstAttribute="top" secondItem="61P-lG-Orb" secondAttribute="bottom" constant="20" id="dXP-gv-CB5"/>
<constraint firstItem="61P-lG-Orb" firstAttribute="leading" secondItem="dsk-C1-OvC" secondAttribute="leading" constant="10" id="e8F-eD-Sl2"/>
<constraint firstItem="dsk-C1-OvC" firstAttribute="trailing" secondItem="61P-lG-Orb" secondAttribute="trailing" constant="10" id="iIG-2w-uiz"/>
<constraint firstItem="bm7-r1-NLR" firstAttribute="centerX" secondItem="dsk-C1-OvC" secondAttribute="centerX" id="mWi-Fd-VAU"/>
<constraint firstItem="61P-lG-Orb" firstAttribute="top" secondItem="dsk-C1-OvC" secondAttribute="top" id="wht-Jq-l7R"/>
</constraints>
<viewLayoutGuide key="safeArea" id="dsk-C1-OvC"/>
</view>
<navigationItem key="navigationItem" id="R9L-Ab-HBv">
<barButtonItem key="rightBarButtonItem" title="Close" id="kCc-QR-2Kp">
<connections>
<action selector="closeButtonTouch:" destination="HSb-ou-7T5" id="drV-gC-1Be"/>
</connections>
</barButtonItem>
</navigationItem>
<connections>
<outlet property="accountTextField" destination="8ga-Pj-fFb" id="xE3-19-Gsh"/>
<outlet property="bankNameTextField" destination="RZW-X0-sHf" id="msQ-mJ-LH5"/>
<outlet property="languageTextField" destination="1Ca-e4-yFh" id="DoP-qd-vJm"/>
<outlet property="verifyAccountButton" destination="bm7-r1-NLR" id="2jx-FH-wo2"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="8je-5K-XuW" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="847.20000000000005" y="232.53373313343329"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="aAS-Jc-HC1">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="QxQ-Vf-4rA" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="bFA-Aq-QzQ">
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="HSb-ou-7T5" kind="relationship" relationship="rootViewController" id="nYt-d8-2N8"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="vit-jc-i9w" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-92" y="232.53373313343329"/>
</scene>
</scenes>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</document>

241
GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/View/AddAccountViewController.swift

@ -0,0 +1,241 @@
//
// AddAccountViewController.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class AddAccountViewController: UIViewController {
// MARK: Properties
var presenter: AddAccountModuleInterface?
private lazy var languagePickerView = UIPickerView()
private lazy var bankPickerView = UIPickerView()
private var validDic = ["bank": false, "account": false, "language": false]
private var isValid = false {
didSet{
self.verifyAccountButton.isEnabled = self.isValid
self.verifyAccountButton.backgroundColor = self.isValid ? AppConstants.themeRedColor : .lightGray
}
}
private var model: (bankList: [BankInformation]?, kftcModel: KFTCModel?) {
didSet {
self.languagePickerView.delegate = self
self.languagePickerView.dataSource = self
self.languageTextField.inputView = languagePickerView
self.bankPickerView.delegate = self
self.bankPickerView.dataSource = self
self.bankNameTextField.inputView = bankPickerView
}
}
private var selectedLanguage: KftcLanguage? {
didSet {
self.languageTextField.text = self.selectedLanguage?.value
self.languageTextField.sendActions(for: .editingChanged)
}
}
private var selectedBank: BankInformation? {
didSet {
self.bankNameTextField.text = self.selectedBank?.bankName
self.bankNameTextField.sendActions(for: .editingChanged)
}
}
// MARK: IBOutlets
@IBOutlet private weak var bankNameTextField: ValidationTextField!
@IBOutlet private weak var accountTextField: ValidationTextField!
@IBOutlet private weak var languageTextField: ValidationTextField!
@IBOutlet private weak var verifyAccountButton: UIButton!
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
self.setup()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.title = "Add Auto Debit Account"
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.title = ""
self.view.endEditing(true)
}
// MARK: IBActions
@IBAction private func verifyAccountButtonTouch(_ sender: UIButton) {
self.presenter?.verifyAccount(
customerID: UserDefaults.standard.string(forKey: UserKeys.senderId) ?? "", // senderID
bankCode: self.selectedBank?.bankCode ?? "",
accountNumber: self.accountTextField.text ?? "")
}
@IBAction private func closeButtonTouch(_ sender: UIBarButtonItem) {
self.dismiss(animated: true, completion: nil)
}
// MARK: Other Functions
private func setup() {
// all setup should be done here
self.presenter?.viewIsReady()
self.verifyAccountButton.rounded()
self.setValidTextField()
}
private func setValidTextField(){
self.bankNameTextField.completedColor = UIColor(hex: "#6F7179")
self.bankNameTextField.completedTitleFont = UIFont(name: "SanfranciscoDisplay-Regular", size: 13)!
self.bankNameTextField.errorFont = UIFont(name: "SanfranciscoDisplay-Regular", size: 13)!
self.bankNameTextField.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: .editingChanged)
self.languageTextField.completedColor = UIColor(hex: "#6F7179")
self.languageTextField.completedTitleFont = UIFont(name: "SanfranciscoDisplay-Regular", size: 13)!
self.languageTextField.errorFont = UIFont(name: "SanfranciscoDisplay-Regular", size: 13)!
self.languageTextField.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: .editingChanged)
self.accountTextField.completedColor = UIColor(hex: "#6F7179")
self.accountTextField.completedTitleFont = UIFont(name: "SanfranciscoDisplay-Regular", size: 13)!
self.accountTextField.errorFont = UIFont(name: "SanfranciscoDisplay-Regular", size: 13)!
self.accountTextField.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: .editingChanged)
self.accountTextField.validCondition = {$0.count > 9}
}
@objc
func textFieldDidChange(_ textfield: UITextField) {
let tf = textfield as! ValidationTextField
switch tf {
case bankNameTextField:
validDic["bank"] = tf.isValid
case accountTextField:
validDic["account"] = tf.isValid
case languageTextField:
validDic["language"] = tf.isValid
default:
break
}
self.isValid = self.validDic.reduce(true){ $0 && $1.value}
}
}
// MARK: AddAccountViewInterface
extension AddAccountViewController: AddAccountViewInterface {
func setModel(model: (bankList: [BankInformation]?, kftcModel: KFTCModel?)) {
self.model = model
}
func failureSetModel(error: Error) {
self.alert(message: error.localizedDescription, title: "Warning"){
self.dismiss(animated: true, completion: nil)
}
}
func successVerify() {
let url = "\(self.model.kftcModel?.url ?? "")&lang=\(selectedLanguage?.key ?? "")"
var header = [String: String]()
self.model.kftcModel?.header?.forEach({
header[$0.key ?? ""] = $0.value ?? ""
})
header["Kftc-Bfop-BankCodeStd"] = self.selectedBank?.bankCode ?? ""
header["Kftc-Bfop-AccountNum"] = self.accountTextField.text ?? ""
self.presenter?.doGetTestURL(url: url, header: header)
}
func successTestURL(url: String) {
self.presenter?.goKFTC(url: url, header: self.model.kftcModel?.header)
}
func failure(error: Error) {
self.alert(message: error.localizedDescription, title: "Warning", okAction: nil)
}
func startLoading(){
self.showProgressHud()
}
func endLoading(){
self.hideProgressHud()
}
}
// MARK: UIPickerViewDataSource
extension AddAccountViewController: UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
guard
let model = self.model.kftcModel,
let bankList = self.model.bankList,
let languages = model.languages else { return 0 }
switch pickerView {
case languagePickerView:
return languages.count
case bankPickerView:
return bankList.count
default:
return 0
}
}
}
// MARK: UIPickerViewDelegate
extension AddAccountViewController: UIPickerViewDelegate {
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
switch pickerView {
case languagePickerView:
return model.kftcModel?.languages?[row].value
case bankPickerView:
return model.bankList?[row].bankName
default:
return nil
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
switch pickerView {
case languagePickerView:
self.selectedLanguage = self.model.kftcModel?.languages?[row]
case bankPickerView:
self.selectedBank = self.model.bankList?[row]
default:
break
}
}
}

19
GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/View/AddAccountViewInterface.swift

@ -0,0 +1,19 @@
//
// AddAccountViewInterface.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol AddAccountViewInterface: class {
func setModel(model: (bankList: [BankInformation]?, kftcModel: KFTCModel?))
func failureSetModel(error: Error)
func successVerify()
func successTestURL(url: String)
func failure(error: Error)
func startLoading()
func endLoading()
}

52
GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/Wireframe/AddAccountWireframe.swift

@ -0,0 +1,52 @@
//
// AddAccountWireframe.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class AddAccountWireframe {
weak var view: UIViewController!
private var model: KFTCModel?
}
extension AddAccountWireframe: AddAccountWireframeInput {
var storyboardName: String {return "AddAccount"}
func getMainView() -> UIViewController {
let service = AddAccountService()
let interactor = AddAccountInteractor(service: service)
let presenter = AddAccountPresenter(with: model)
let viewController = viewControllerFromStoryboard(of: AddAccountViewController.self)
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
self.view = viewController
return viewController
}
func openPushMainView(with model: KFTCModel?, source: UIViewController){
self.model = model
self.openViewControllerWithNavigation(viewController: self.getMainView(), source: source)
}
func pushKFTCViewControllerOf(url: String, header: [KftcHeader]?){
let viewcontroller = UIStoryboard.init(name: "WKWebView", bundle: nil).instantiateViewController(withIdentifier: "WkWebViewController") as! WkWebViewController
viewcontroller.url = url
viewcontroller.headers = header
self.view.navigationController?.pushViewController(viewcontroller, animated: true)
}
}

14
GMERemittance/Module/AutoDebitModules/AddAccount/User Interface/Wireframe/AddAccountWireframeInput.swift

@ -0,0 +1,14 @@
//
// AddAccountWireframeInput.swift
// GME Remit
//
// Created by InKwon Devik Kim on 12/04/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol AddAccountWireframeInput: WireframeInput {
func openPushMainView(with model: KFTCModel?, source: UIViewController)
func pushKFTCViewControllerOf(url: String, header: [KftcHeader]?)
}

0
GMERemittance/Module/AutoDebit/Application Logic/Interactor/AutoDebitInteractor.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/Application Logic/Interactor/AutoDebitInteractor.swift

0
GMERemittance/Module/AutoDebit/Application Logic/Interactor/AutoDebitInteractorIO.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/Application Logic/Interactor/AutoDebitInteractorIO.swift

0
GMERemittance/Module/AutoDebit/Application Logic/Service/AutoDebitService.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/Application Logic/Service/AutoDebitService.swift

0
GMERemittance/Module/AutoDebit/Application Logic/Service/AutoDebitServiceType.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/Application Logic/Service/AutoDebitServiceType.swift

2
GMERemittance/Module/AutoDebit/Module Interface/AutoDebitModuleInterface.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/Module Interface/AutoDebitModuleInterface.swift

@ -7,5 +7,5 @@
// //
protocol AutoDebitModuleInterface: class { protocol AutoDebitModuleInterface: class {
func goAddAccount(model: KFTCModel?)
} }

4
GMERemittance/Module/AutoDebit/User Interface/Presenter/AutoDebitPresenter.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/Presenter/AutoDebitPresenter.swift

@ -22,7 +22,9 @@ class AutoDebitPresenter {
// MARK: AutoDebit module interface // MARK: AutoDebit module interface
extension AutoDebitPresenter: AutoDebitModuleInterface { extension AutoDebitPresenter: AutoDebitModuleInterface {
func goAddAccount(model: KFTCModel?){
self.wireframe?.goAddAccountViewController(model: model)
}
} }
// MARK: AutoDebit interactor output interface // MARK: AutoDebit interactor output interface

0
GMERemittance/Module/AutoDebit/User Interface/View/AutoDebit.storyboard → GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/View/AutoDebit.storyboard

0
GMERemittance/Module/AutoDebit/User Interface/View/AutoDebitTableViewCell.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/View/AutoDebitTableViewCell.swift

14
GMERemittance/Module/AutoDebit/User Interface/View/AutoDebitViewController.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/View/AutoDebitViewController.swift

@ -134,18 +134,8 @@ class AutoDebitViewController: UIViewController {
} }
private func showLanguageSelection() { private func showLanguageSelection() {
let picker = UIAlertController.init(title: StringConstants().pickerTitle, message: nil, preferredStyle: UIAlertControllerStyle.actionSheet)
self.languages?.forEach({language in
let action = UIAlertAction.init(title: language.value, style: UIAlertActionStyle.default, handler: { (action) in
self.selectedLanguage = language
})
picker.addAction(action)
})
let cancelAction = UIAlertAction.init(title: StringConstants().cancelText, style: UIAlertActionStyle.cancel, handler: nil)
picker.addAction(cancelAction)
self.present(picker, animated: true, completion: nil)
//TODO: addAccount presenter
self.presenter?.goAddAccount(model: self.kftcDetail)
} }
} }

0
GMERemittance/Module/AutoDebit/User Interface/View/AutoDebitViewInterface.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/View/AutoDebitViewInterface.swift

4
GMERemittance/Module/AutoDebit/User Interface/Wireframe/AutoDebitWireframe.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/Wireframe/AutoDebitWireframe.swift

@ -31,4 +31,8 @@ extension AutoDebitWireframe: AutoDebitWireframeInput {
self.view = viewController self.view = viewController
return viewController return viewController
} }
func goAddAccountViewController(model: KFTCModel?) {
AddAccountWireframe().openPushMainView(with: model, source: self.view)
}
} }

2
GMERemittance/Module/AutoDebit/User Interface/Wireframe/AutoDebitWireframeInput.swift → GMERemittance/Module/AutoDebitModules/AutoDebit/User Interface/Wireframe/AutoDebitWireframeInput.swift

@ -9,5 +9,5 @@
import Foundation import Foundation
protocol AutoDebitWireframeInput: WireframeInput { protocol AutoDebitWireframeInput: WireframeInput {
func goAddAccountViewController(model: KFTCModel?)
} }
Loading…
Cancel
Save