Browse Source

applied swift_lint

pull/1/head
InKwon James Kim 5 years ago
parent
commit
aef8c24e03
  1. BIN
      .DS_Store
  2. 1
      .gitignore
  3. 5
      .swiftlint.yml
  4. 574
      GME Remit.xcodeproj/project.pbxproj
  5. 1
      GME Remit/Extensions/UIColor+Ext.swift
  6. 2
      GME Remit/Extensions/UIImageView+Ext.swift
  7. 31
      GME Remit/Models/Request/PaymentModeRecipientViewModel.swift
  8. 2
      GME Remit/Models/Response/NativeCountry.swift
  9. 1
      GME Remit/Models/Response/ResendDetail.swift
  10. 1
      GME Remit/Models/Response/ResendListModel.swift
  11. 1
      GME Remit/Models/Response/SendMoneyProvinceViewModel.swift
  12. 1
      GME Remit/Models/Response/SendMoneyRelationViewModel.swift
  13. 1
      GME Remit/Models/Response/SendMoneyTransFerReasonViewModel.swift
  14. 4
      GME Remit/Modules/AutoDebitModules/AddAccount/User Interface/Wireframe/AddAccountWireframe.swift
  15. 3
      GME Remit/Modules/AutoDebitModules/AutoDebit/Application Logic/Interactor/AutoDebitInteractorIO.swift
  16. 2
      GME Remit/Modules/AutoDebitModules/AutoDebit/Application Logic/Service/AutoDebitServiceType.swift
  17. 1
      GME Remit/Modules/AutoDebitModules/AutoDebit/Module Interface/AutoDebitModuleInterface.swift
  18. 4
      GME Remit/Modules/AutoDebitModules/AutoDebit/User Interface/Presenter/AutoDebitPresenter.swift
  19. 1
      GME Remit/Modules/AutoDebitModules/AutoDebit/User Interface/Wireframe/AutoDebitWireframeInput.swift
  20. 2
      GME Remit/Modules/BiometricAuthModules/BiometricAuthentication/User Interface/Wireframe/BiometricAuthenticationWireframe.swift
  21. 2
      GME Remit/Modules/ExchangeRates/User Interface/Wireframe/ExchangeRatesWireframe.swift
  22. 1
      GME Remit/Modules/ForgotPassword/Application Logic/Service/ForgotPasswordServiceType.swift
  23. 30
      GME Remit/Modules/Home/User Interface/View/HomeViewController.swift
  24. 1
      GME Remit/Modules/Main/Application Logic/Interactor/MainInteractor.swift
  25. 1
      GME Remit/Modules/Main/Application Logic/Service/MainService.swift
  26. 4
      GME Remit/Modules/Main/Module Interface/MainModuleInterface.swift
  27. 2
      GME Remit/Modules/Main/User Interface/View/MainViewController.swift
  28. 5
      GME Remit/Modules/Main/User Interface/View/MainViewInterface.swift
  29. 1
      GME Remit/Modules/Main/User Interface/Wireframe/MainWireframeInput.swift
  30. 2
      GME Remit/Modules/RecipientModules/Recipients/Application Logic/Model/Recipient/Recipient.swift
  31. 20
      GME Remit/Modules/RecipientModules/Recipients/User Interface/View/Recipients.storyboard
  32. 1
      GME Remit/Modules/RecipientModules/SetupRecipient/User Interface/Wireframe/SetupRecipientWireframe.swift
  33. 31
      GME Remit/Modules/RegisterModules/KYC/kycForm1/User Interface/View/kycForm1ViewController.swift
  34. 14
      GME Remit/Modules/RegisterModules/KYC/kycForm1/User Interface/Wireframe/kycForm1Wireframe.swift
  35. 9
      GME Remit/Modules/RegisterModules/KYC/kycForm2/User Interface/Wireframe/kycForm2Wireframe.swift
  36. 6
      GME Remit/Modules/RegisterModules/KYC/kycForm3/User Interface/View/kycForm3ViewController.swift
  37. 48
      GME Remit/Modules/RegisterModules/KYC/kycForm3/User Interface/Wireframe/kycForm3Wireframe.swift
  38. 8
      GME Remit/Modules/RegisterModules/PennyTest/User Interface/View/PennyTestViewController.swift
  39. 13
      GME Remit/Modules/RegisterModules/PennyTestSubmit/Application Logic/Service/PennyTestSubmitServiceType.swift
  40. 54
      GME Remit/Modules/RegisterModules/Register/Application Logic/Service/RegisterServiceType.swift
  41. 2
      GME Remit/Modules/RegisterModules/Register/User Interface/Wireframe/RegisterWireframe.swift
  42. 1
      GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/Application Logic/Model/DomesticRemitResponseModel.swift
  43. 2
      GME Remit/Modules/RemittanceModules/DomesticModules/RecentHistories/Module Interface/RecentHistoriesModuleInterface.swift
  44. 8
      GME Remit/Modules/RemittanceModules/DomesticModules/RecentHistories/User Interface/Wireframe/RecentHistoriesWireframe.swift
  45. 2
      GME Remit/Modules/RemittanceModules/DomesticModules/RecentHistories/User Interface/Wireframe/RecentHistoriesWireframeInputOutput.swift
  46. 31
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Application Logic/Interactor/PaymentSelectionInteractor.swift
  47. 15
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Application Logic/Interactor/PaymentSelectionInteractorIO.swift
  48. 19
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Application Logic/Service/PaymentSelectionService.swift
  49. 13
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Application Logic/Service/PaymentSelectionServiceType.swift
  50. 11
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Module Interface/PaymentSelectionModuleInterface.swift
  51. 32
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/Presenter/PaymentSelectionPresenter.swift
  52. 27
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/View/Cells/PaymentSelectionTableViewCell.swift
  53. 194
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/View/PaymentSelection.storyboard
  54. 95
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/View/PaymentSelectionViewController.swift
  55. 10
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/View/PaymentSelectionViewInterface.swift
  56. 43
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/Wireframe/PaymentSelectionWireframe.swift
  57. 13
      GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/Wireframe/PaymentSelectionWireframeInput.swift
  58. 46
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Application Logic/Interactor/ResendInteractor.swift
  59. 16
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Application Logic/Interactor/ResendInteractorIO.swift
  60. 18
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Application Logic/Service/ResendService.swift
  61. 38
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Application Logic/Service/ResendServiceType.swift
  62. 13
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Module Interface/ResendModuleInterface.swift
  63. 71
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/Presenter/ResendPresenter.swift
  64. 50
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/View/Cell/ResendTableViewCell.swift
  65. 291
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/View/Resend.storyboard
  66. 255
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/View/ResendViewController.swift
  67. 15
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/View/ResendViewInterface.swift
  68. 34
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/Wireframe/ResendWireframe.swift
  69. 13
      GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/Wireframe/ResendWireframeInput.swift
  70. 90
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Application Logic/Interactor/ResendExchangeInteractor.swift
  71. 19
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Application Logic/Interactor/ResendExchangeInteractorIO.swift
  72. 22
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Application Logic/Service/ResendExchangeService.swift
  73. 37
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Application Logic/Service/ResendExchangeServiceType.swift
  74. 15
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Module Interface/ResendExchangeModuleInterface.swift
  75. 57
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/Presenter/ResendExchangePresenter.swift
  76. 546
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/View/ResendExchange.storyboard
  77. 453
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/View/ResendExchangeViewController.swift
  78. 16
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/View/ResendExchangeViewInterface.swift
  79. 41
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/Wireframe/ResendExchangeWireframe.swift
  80. 13
      GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/Wireframe/ResendExchangeWireframeInput.swift
  81. 2
      GME Remit/Modules/RemittanceModules/OverseasModules/SelectCoupon/User Interface/Presenter/SelectCouponPresenter.swift
  82. 5
      GME Remit/Modules/RemittanceModules/OverseasModules/SelectCoupon/User Interface/View/Cell/CouponCell.swift
  83. 3
      GME Remit/Modules/RemittanceModules/OverseasModules/SelectCoupon/User Interface/View/SelectCouponViewController.swift
  84. 9
      GME Remit/Modules/RemittanceModules/OverseasModules/SelectCoupon/User Interface/Wireframe/SelectCouponWireframe.swift
  85. 60
      GME Remit/Modules/RemittanceModules/OverseasModules/SelectPayment/User Interface/Wireframe/SelectPaymentWireframe.swift
  86. 60
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/Application Logic/Interactor/SendMoneyCodeInteractor.swift
  87. 1
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/Application Logic/Service/SendMoneyCodeService.swift
  88. 58
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/Application Logic/Service/SendMoneyCodeServiceType.swift
  89. 7
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/User Interface/Presenter/SendMoneyCodePresenter.swift
  90. 4
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/User Interface/View/SendMoneyCode.storyboard
  91. 2
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/Application Logic/Model/Coupon.swift
  92. 2
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/Application Logic/Service/SendMoneyExchangeRateServiceType.swift
  93. 16
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/Module Interface/SendMoneyExchangeRateModuleInterface.swift
  94. 2
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/Presenter/SendMoneyParentPresenter.swift
  95. 5
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift
  96. 1
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/ViewModels/SenMoneyPaymentModeRecipientViewModel.swift
  97. 53
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/Wireframe/SendMoneyParentWireframe.swift
  98. 59
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyPaymentMode/Application Logic/Interactor/SendMoneyPaymentModeInteractor.swift
  99. 20
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyPaymentMode/Application Logic/Interactor/SendMoneyPaymentModeInteractorIO.swift
  100. 18
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyPaymentMode/Application Logic/Service/SendMoneyPaymentModeService.swift

BIN
.DS_Store

1
.gitignore

@ -18,6 +18,7 @@ fastlane/Preview.html
# snapshot generated screenshots
fastlane/screenshots/**/*.png
fastlane/screenshots/screenshots.html
screenshots
# scan temporary files
fastlane/test_output

5
.swiftlint.yml

@ -9,11 +9,14 @@ disabled_rules: # 실행에서 제외할 룰 식별자들
- function_body_length
- type_body_length
- file_length
- valid_ibinspectable
- block_based_kvo
# 사용 가능한 모든 룰은 swiftlint rules 명령으로 확인 가능
excluded: # 린트 과정에서 무시할 파일 경로. `included`보다 우선순위 높음
- Pods
- fastlane
- GME Remit/Protocols/WireframeInput.swift
# 설정 가능한 룰은 이 설정 파일에서 커스터마이징 가능
# 경고나 에러 중 하나를 발생시키는 룰은 위반 수준을 설정 가능

574
GME Remit.xcodeproj/project.pbxproj

@ -467,25 +467,8 @@
D9031145214786EA00AD5BA9 /* ForgotPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D903113A214786EA00AD5BA9 /* ForgotPasswordViewController.swift */; };
D9031146214786EA00AD5BA9 /* ForgotPasswordViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D903113B214786EA00AD5BA9 /* ForgotPasswordViewInterface.swift */; };
D904D77021F7F9A8006C1E0B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D904D77221F7F9A8006C1E0B /* Localizable.strings */; };
D90A9D5A2136942300A96E45 /* BankBranchPickerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A9D572136942300A96E45 /* BankBranchPickerCell.swift */; };
D90A9D5B2136942300A96E45 /* BankBranchPicker.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D90A9D582136942300A96E45 /* BankBranchPicker.storyboard */; };
D90A9D5C2136942300A96E45 /* BankBranchPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A9D592136942300A96E45 /* BankBranchPickerViewController.swift */; };
D90A9D65213696E400A96E45 /* BankPickerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A9D62213696E400A96E45 /* BankPickerCell.swift */; };
D90A9D66213696E400A96E45 /* BankPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A9D63213696E400A96E45 /* BankPickerViewController.swift */; };
D90A9D67213696E400A96E45 /* BankPicker.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D90A9D64213696E400A96E45 /* BankPicker.storyboard */; };
D90D55B121326DA800EEEE04 /* ReciepientEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90D55B021326DA800EEEE04 /* ReciepientEx.swift */; };
D90D55D72132846000EEEE04 /* SendMoneyCountryModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90D55D62132846000EEEE04 /* SendMoneyCountryModel.swift */; };
D922D9402135124200D43053 /* SendMoneyPaymentModeModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D92D2135124200D43053 /* SendMoneyPaymentModeModuleInterface.swift */; };
D922D9412135124200D43053 /* SendMoneyPaymentModeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D9302135124200D43053 /* SendMoneyPaymentModeService.swift */; };
D922D9422135124200D43053 /* SendMoneyPaymentModeServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D9312135124200D43053 /* SendMoneyPaymentModeServiceType.swift */; };
D922D9432135124200D43053 /* SendMoneyPaymentModeInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D9332135124200D43053 /* SendMoneyPaymentModeInteractorIO.swift */; };
D922D9442135124200D43053 /* SendMoneyPaymentModeInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D9342135124200D43053 /* SendMoneyPaymentModeInteractor.swift */; };
D922D9452135124200D43053 /* SendMoneyPaymentModePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D9372135124200D43053 /* SendMoneyPaymentModePresenter.swift */; };
D922D9462135124200D43053 /* SendMoneyPaymentModeWireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D9392135124200D43053 /* SendMoneyPaymentModeWireframeInput.swift */; };
D922D9472135124200D43053 /* SendMoneyPaymentModeWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D93A2135124200D43053 /* SendMoneyPaymentModeWireframe.swift */; };
D922D9482135124200D43053 /* SendMoneyPaymentModeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D93C2135124200D43053 /* SendMoneyPaymentModeViewController.swift */; };
D922D9492135124200D43053 /* SendMoneyPaymentMode.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D922D93E2135124200D43053 /* SendMoneyPaymentMode.storyboard */; };
D922D94A2135124200D43053 /* SendMoneyPaymentModeViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D93F2135124200D43053 /* SendMoneyPaymentModeViewInterface.swift */; };
D922D9622135145F00D43053 /* SendMoneyParentModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D94F2135145E00D43053 /* SendMoneyParentModuleInterface.swift */; };
D922D9632135145F00D43053 /* SendMoneyParentServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D9522135145E00D43053 /* SendMoneyParentServiceType.swift */; };
D922D9642135145F00D43053 /* SendMoneyParentService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D922D9532135145E00D43053 /* SendMoneyParentService.swift */; };
@ -2170,31 +2153,9 @@
D97785A7215DC55F00754079 /* TransactionHistoryViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D977859C215DC55E00754079 /* TransactionHistoryViewInterface.swift */; };
D97785AA215DD04400754079 /* TransactionHistoryTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D97785A9215DD04400754079 /* TransactionHistoryTableViewCell.swift */; };
D97785AC215DD23400754079 /* TransactionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D97785AB215DD23400754079 /* TransactionModel.swift */; };
D979061D223F58420025BD5B /* ResendModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D979060A223F58410025BD5B /* ResendModuleInterface.swift */; };
D979061E223F58420025BD5B /* ResendServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D979060D223F58410025BD5B /* ResendServiceType.swift */; };
D979061F223F58420025BD5B /* ResendService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D979060E223F58410025BD5B /* ResendService.swift */; };
D9790620223F58420025BD5B /* ResendInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9790610223F58410025BD5B /* ResendInteractor.swift */; };
D9790621223F58420025BD5B /* ResendInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9790611223F58410025BD5B /* ResendInteractorIO.swift */; };
D9790622223F58420025BD5B /* ResendPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9790614223F58410025BD5B /* ResendPresenter.swift */; };
D9790623223F58420025BD5B /* ResendWireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9790616223F58410025BD5B /* ResendWireframeInput.swift */; };
D9790624223F58420025BD5B /* ResendWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9790617223F58410025BD5B /* ResendWireframe.swift */; };
D9790625223F58420025BD5B /* ResendViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D979061A223F58410025BD5B /* ResendViewController.swift */; };
D9790626223F58420025BD5B /* ResendViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D979061B223F58410025BD5B /* ResendViewInterface.swift */; };
D9790627223F58420025BD5B /* Resend.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D979061C223F58410025BD5B /* Resend.storyboard */; };
D97D58D72240D34900EFB27E /* ResendDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = D97D58D62240D34900EFB27E /* ResendDetail.swift */; };
D99B6A4D22040E440096C1D6 /* LocalAuthentication.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D99B6A4C22040E440096C1D6 /* LocalAuthentication.framework */; };
D99D72AA212D595B00601F48 /* CountryInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D99D72A9212D595B00601F48 /* CountryInfo.swift */; };
D9A060D7223F680B00F5D7C4 /* ResendExchangeModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060C4223F680B00F5D7C4 /* ResendExchangeModuleInterface.swift */; };
D9A060D8223F680B00F5D7C4 /* ResendExchangeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060C7223F680B00F5D7C4 /* ResendExchangeService.swift */; };
D9A060D9223F680B00F5D7C4 /* ResendExchangeServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060C8223F680B00F5D7C4 /* ResendExchangeServiceType.swift */; };
D9A060DA223F680B00F5D7C4 /* ResendExchangeInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060CA223F680B00F5D7C4 /* ResendExchangeInteractor.swift */; };
D9A060DB223F680B00F5D7C4 /* ResendExchangeInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060CB223F680B00F5D7C4 /* ResendExchangeInteractorIO.swift */; };
D9A060DC223F680B00F5D7C4 /* ResendExchangePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060CE223F680B00F5D7C4 /* ResendExchangePresenter.swift */; };
D9A060DD223F680B00F5D7C4 /* ResendExchangeWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060D0223F680B00F5D7C4 /* ResendExchangeWireframe.swift */; };
D9A060DE223F680B00F5D7C4 /* ResendExchangeWireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060D1223F680B00F5D7C4 /* ResendExchangeWireframeInput.swift */; };
D9A060DF223F680B00F5D7C4 /* ResendExchangeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060D3223F680B00F5D7C4 /* ResendExchangeViewController.swift */; };
D9A060E0223F680B00F5D7C4 /* ResendExchangeViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A060D5223F680B00F5D7C4 /* ResendExchangeViewInterface.swift */; };
D9A060E1223F680B00F5D7C4 /* ResendExchange.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D9A060D6223F680B00F5D7C4 /* ResendExchange.storyboard */; };
D9AFE856215C7166005F3A25 /* HomeCollectionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9AFE855215C7166005F3A25 /* HomeCollectionTableViewCell.swift */; };
D9B39677214F7DDC0072A9B8 /* ImageCroper.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B39675214F7DDC0072A9B8 /* ImageCroper.swift */; };
D9B39678214F7DDC0072A9B8 /* MultiMediaManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B39676214F7DDC0072A9B8 /* MultiMediaManager.swift */; };
@ -2212,24 +2173,10 @@
D9B7ADF92130048E009B0564 /* ExchangeRates.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D9B7ADEE2130048E009B0564 /* ExchangeRates.storyboard */; };
D9B7ADFA2130048E009B0564 /* ExchangeRatesViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B7ADEF2130048E009B0564 /* ExchangeRatesViewInterface.swift */; };
D9B7ADFD2130073A009B0564 /* WireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B7ADFC2130073A009B0564 /* WireframeInput.swift */; };
D9BE022821E2DD45003AA8C7 /* PaymentSelectionModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE021521E2DD44003AA8C7 /* PaymentSelectionModuleInterface.swift */; };
D9BE022921E2DD45003AA8C7 /* PaymentSelectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE021821E2DD44003AA8C7 /* PaymentSelectionService.swift */; };
D9BE022A21E2DD45003AA8C7 /* PaymentSelectionServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE021921E2DD44003AA8C7 /* PaymentSelectionServiceType.swift */; };
D9BE022B21E2DD45003AA8C7 /* PaymentSelectionInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE021B21E2DD44003AA8C7 /* PaymentSelectionInteractor.swift */; };
D9BE022C21E2DD45003AA8C7 /* PaymentSelectionInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE021C21E2DD44003AA8C7 /* PaymentSelectionInteractorIO.swift */; };
D9BE022D21E2DD45003AA8C7 /* PaymentSelectionPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE021F21E2DD44003AA8C7 /* PaymentSelectionPresenter.swift */; };
D9BE022E21E2DD45003AA8C7 /* PaymentSelectionWireframeInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE022121E2DD44003AA8C7 /* PaymentSelectionWireframeInput.swift */; };
D9BE022F21E2DD45003AA8C7 /* PaymentSelectionWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE022221E2DD44003AA8C7 /* PaymentSelectionWireframe.swift */; };
D9BE023021E2DD45003AA8C7 /* PaymentSelectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE022521E2DD44003AA8C7 /* PaymentSelectionViewController.swift */; };
D9BE023121E2DD45003AA8C7 /* PaymentSelectionViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE022621E2DD44003AA8C7 /* PaymentSelectionViewInterface.swift */; };
D9BE023221E2DD45003AA8C7 /* PaymentSelection.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D9BE022721E2DD44003AA8C7 /* PaymentSelection.storyboard */; };
D9BE023521E2DDEC003AA8C7 /* PaymentSelectionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BE023421E2DDEC003AA8C7 /* PaymentSelectionTableViewCell.swift */; };
D9D22429224078D000C7313D /* ResendTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9D22428224078D000C7313D /* ResendTableViewCell.swift */; };
D9D2242B22407EBA00C7313D /* ResendListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9D2242A22407EBA00C7313D /* ResendListModel.swift */; };
D9DAFE2521352F3300483E71 /* SenMoneyPaymentModeRecipientViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DAFE2421352F3300483E71 /* SenMoneyPaymentModeRecipientViewModel.swift */; };
D9DAFE27213530A800483E71 /* PaymentModeRecipientViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DAFE26213530A800483E71 /* PaymentModeRecipientViewModel.swift */; };
D9DAFE2921353D6C00483E71 /* SendMoneyPaymentModeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DAFE2821353D6C00483E71 /* SendMoneyPaymentModeModel.swift */; };
D9DAFE2C21354D8900483E71 /* SendMoenyPaymentModeCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DAFE2B21354D8900483E71 /* SendMoenyPaymentModeCollectionViewCell.swift */; };
D9DC1060216314BC008F3C51 /* SideMenu.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D9DC105F216314BC008F3C51 /* SideMenu.storyboard */; };
D9DC107821639078008F3C51 /* MessageComposeModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DC106521639077008F3C51 /* MessageComposeModuleInterface.swift */; };
D9DC107921639078008F3C51 /* MessageComposeServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9DC106821639077008F3C51 /* MessageComposeServiceType.swift */; };
@ -2762,25 +2709,8 @@
D903113B214786EA00AD5BA9 /* ForgotPasswordViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForgotPasswordViewInterface.swift; sourceTree = "<group>"; };
D904D77121F7F9A8006C1E0B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
D904D77621F7FA5F006C1E0B /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = th; path = th.lproj/Localizable.strings; sourceTree = "<group>"; };
D90A9D572136942300A96E45 /* BankBranchPickerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankBranchPickerCell.swift; sourceTree = "<group>"; };
D90A9D582136942300A96E45 /* BankBranchPicker.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = BankBranchPicker.storyboard; sourceTree = "<group>"; };
D90A9D592136942300A96E45 /* BankBranchPickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankBranchPickerViewController.swift; sourceTree = "<group>"; };
D90A9D62213696E400A96E45 /* BankPickerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankPickerCell.swift; sourceTree = "<group>"; };
D90A9D63213696E400A96E45 /* BankPickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BankPickerViewController.swift; sourceTree = "<group>"; };
D90A9D64213696E400A96E45 /* BankPicker.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = BankPicker.storyboard; sourceTree = "<group>"; };
D90D55B021326DA800EEEE04 /* ReciepientEx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReciepientEx.swift; sourceTree = "<group>"; };
D90D55D62132846000EEEE04 /* SendMoneyCountryModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendMoneyCountryModel.swift; sourceTree = "<group>"; };
D922D92D2135124200D43053 /* SendMoneyPaymentModeModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeModuleInterface.swift; sourceTree = "<group>"; };
D922D9302135124200D43053 /* SendMoneyPaymentModeService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeService.swift; sourceTree = "<group>"; };
D922D9312135124200D43053 /* SendMoneyPaymentModeServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeServiceType.swift; sourceTree = "<group>"; };
D922D9332135124200D43053 /* SendMoneyPaymentModeInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeInteractorIO.swift; sourceTree = "<group>"; };
D922D9342135124200D43053 /* SendMoneyPaymentModeInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeInteractor.swift; sourceTree = "<group>"; };
D922D9372135124200D43053 /* SendMoneyPaymentModePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModePresenter.swift; sourceTree = "<group>"; };
D922D9392135124200D43053 /* SendMoneyPaymentModeWireframeInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeWireframeInput.swift; sourceTree = "<group>"; };
D922D93A2135124200D43053 /* SendMoneyPaymentModeWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeWireframe.swift; sourceTree = "<group>"; };
D922D93C2135124200D43053 /* SendMoneyPaymentModeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeViewController.swift; sourceTree = "<group>"; };
D922D93E2135124200D43053 /* SendMoneyPaymentMode.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SendMoneyPaymentMode.storyboard; sourceTree = "<group>"; };
D922D93F2135124200D43053 /* SendMoneyPaymentModeViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeViewInterface.swift; sourceTree = "<group>"; };
D922D94F2135145E00D43053 /* SendMoneyParentModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyParentModuleInterface.swift; sourceTree = "<group>"; };
D922D9522135145E00D43053 /* SendMoneyParentServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyParentServiceType.swift; sourceTree = "<group>"; };
D922D9532135145E00D43053 /* SendMoneyParentService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendMoneyParentService.swift; sourceTree = "<group>"; };
@ -4473,17 +4403,6 @@
D977859C215DC55E00754079 /* TransactionHistoryViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransactionHistoryViewInterface.swift; sourceTree = "<group>"; };
D97785A9215DD04400754079 /* TransactionHistoryTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionHistoryTableViewCell.swift; sourceTree = "<group>"; };
D97785AB215DD23400754079 /* TransactionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionModel.swift; sourceTree = "<group>"; };
D979060A223F58410025BD5B /* ResendModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendModuleInterface.swift; sourceTree = "<group>"; };
D979060D223F58410025BD5B /* ResendServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendServiceType.swift; sourceTree = "<group>"; };
D979060E223F58410025BD5B /* ResendService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendService.swift; sourceTree = "<group>"; };
D9790610223F58410025BD5B /* ResendInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendInteractor.swift; sourceTree = "<group>"; };
D9790611223F58410025BD5B /* ResendInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendInteractorIO.swift; sourceTree = "<group>"; };
D9790614223F58410025BD5B /* ResendPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendPresenter.swift; sourceTree = "<group>"; };
D9790616223F58410025BD5B /* ResendWireframeInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendWireframeInput.swift; sourceTree = "<group>"; };
D9790617223F58410025BD5B /* ResendWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendWireframe.swift; sourceTree = "<group>"; };
D979061A223F58410025BD5B /* ResendViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendViewController.swift; sourceTree = "<group>"; };
D979061B223F58410025BD5B /* ResendViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendViewInterface.swift; sourceTree = "<group>"; };
D979061C223F58410025BD5B /* Resend.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Resend.storyboard; sourceTree = "<group>"; };
D97D58D62240D34900EFB27E /* ResendDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResendDetail.swift; sourceTree = "<group>"; };
D9835812221F826E00748962 /* ne */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ne; path = ne.lproj/Localizable.strings; sourceTree = "<group>"; };
D9835814221F918100748962 /* bn */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bn; path = bn.lproj/Localizable.strings; sourceTree = "<group>"; };
@ -4491,17 +4410,6 @@
D9899D02222DFF9D00E983CA /* uz */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uz; path = uz.lproj/Localizable.strings; sourceTree = "<group>"; };
D99B6A4C22040E440096C1D6 /* LocalAuthentication.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LocalAuthentication.framework; path = System/Library/Frameworks/LocalAuthentication.framework; sourceTree = SDKROOT; };
D99D72A9212D595B00601F48 /* CountryInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountryInfo.swift; sourceTree = "<group>"; };
D9A060C4223F680B00F5D7C4 /* ResendExchangeModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeModuleInterface.swift; sourceTree = "<group>"; };
D9A060C7223F680B00F5D7C4 /* ResendExchangeService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeService.swift; sourceTree = "<group>"; };
D9A060C8223F680B00F5D7C4 /* ResendExchangeServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeServiceType.swift; sourceTree = "<group>"; };
D9A060CA223F680B00F5D7C4 /* ResendExchangeInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeInteractor.swift; sourceTree = "<group>"; };
D9A060CB223F680B00F5D7C4 /* ResendExchangeInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeInteractorIO.swift; sourceTree = "<group>"; };
D9A060CE223F680B00F5D7C4 /* ResendExchangePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangePresenter.swift; sourceTree = "<group>"; };
D9A060D0223F680B00F5D7C4 /* ResendExchangeWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeWireframe.swift; sourceTree = "<group>"; };
D9A060D1223F680B00F5D7C4 /* ResendExchangeWireframeInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeWireframeInput.swift; sourceTree = "<group>"; };
D9A060D3223F680B00F5D7C4 /* ResendExchangeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeViewController.swift; sourceTree = "<group>"; };
D9A060D5223F680B00F5D7C4 /* ResendExchangeViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResendExchangeViewInterface.swift; sourceTree = "<group>"; };
D9A060D6223F680B00F5D7C4 /* ResendExchange.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ResendExchange.storyboard; sourceTree = "<group>"; };
D9A458FD2223E5AD003123D4 /* ru-RU */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ru-RU"; path = "ru-RU.lproj/Localizable.strings"; sourceTree = "<group>"; };
D9AFE855215C7166005F3A25 /* HomeCollectionTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCollectionTableViewCell.swift; sourceTree = "<group>"; };
D9B39675214F7DDC0072A9B8 /* ImageCroper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageCroper.swift; sourceTree = "<group>"; };
@ -4520,30 +4428,16 @@
D9B7ADEE2130048E009B0564 /* ExchangeRates.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ExchangeRates.storyboard; sourceTree = "<group>"; };
D9B7ADEF2130048E009B0564 /* ExchangeRatesViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExchangeRatesViewInterface.swift; sourceTree = "<group>"; };
D9B7ADFC2130073A009B0564 /* WireframeInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WireframeInput.swift; sourceTree = "<group>"; };
D9BE021521E2DD44003AA8C7 /* PaymentSelectionModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionModuleInterface.swift; sourceTree = "<group>"; };
D9BE021821E2DD44003AA8C7 /* PaymentSelectionService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionService.swift; sourceTree = "<group>"; };
D9BE021921E2DD44003AA8C7 /* PaymentSelectionServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionServiceType.swift; sourceTree = "<group>"; };
D9BE021B21E2DD44003AA8C7 /* PaymentSelectionInteractor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionInteractor.swift; sourceTree = "<group>"; };
D9BE021C21E2DD44003AA8C7 /* PaymentSelectionInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionInteractorIO.swift; sourceTree = "<group>"; };
D9BE021F21E2DD44003AA8C7 /* PaymentSelectionPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionPresenter.swift; sourceTree = "<group>"; };
D9BE022121E2DD44003AA8C7 /* PaymentSelectionWireframeInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionWireframeInput.swift; sourceTree = "<group>"; };
D9BE022221E2DD44003AA8C7 /* PaymentSelectionWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionWireframe.swift; sourceTree = "<group>"; };
D9BE022521E2DD44003AA8C7 /* PaymentSelectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionViewController.swift; sourceTree = "<group>"; };
D9BE022621E2DD44003AA8C7 /* PaymentSelectionViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentSelectionViewInterface.swift; sourceTree = "<group>"; };
D9BE022721E2DD44003AA8C7 /* PaymentSelection.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = PaymentSelection.storyboard; sourceTree = "<group>"; };
D9BE023421E2DDEC003AA8C7 /* PaymentSelectionTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentSelectionTableViewCell.swift; sourceTree = "<group>"; };
D9C9601E221E2251000BD633 /* my-MM */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "my-MM"; path = "my-MM.lproj/Localizable.strings"; sourceTree = "<group>"; };
D9C9601F221E266F000BD633 /* my */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = my; path = my.lproj/Localizable.strings; sourceTree = "<group>"; };
D9CDBC54221246DB005AF6E4 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Localizable.strings; sourceTree = "<group>"; };
D9CDBC5522124C56005AF6E4 /* mn */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = mn; path = mn.lproj/Localizable.strings; sourceTree = "<group>"; };
D9CDBC5622125166005AF6E4 /* si */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = si; path = si.lproj/Localizable.strings; sourceTree = "<group>"; };
D9CDBC572212560D005AF6E4 /* km */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = km; path = km.lproj/Localizable.strings; sourceTree = "<group>"; };
D9D22428224078D000C7313D /* ResendTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResendTableViewCell.swift; sourceTree = "<group>"; };
D9D2242A22407EBA00C7313D /* ResendListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResendListModel.swift; sourceTree = "<group>"; };
D9DAFE2421352F3300483E71 /* SenMoneyPaymentModeRecipientViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SenMoneyPaymentModeRecipientViewModel.swift; sourceTree = "<group>"; };
D9DAFE26213530A800483E71 /* PaymentModeRecipientViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentModeRecipientViewModel.swift; sourceTree = "<group>"; };
D9DAFE2821353D6C00483E71 /* SendMoneyPaymentModeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendMoneyPaymentModeModel.swift; sourceTree = "<group>"; };
D9DAFE2B21354D8900483E71 /* SendMoenyPaymentModeCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendMoenyPaymentModeCollectionViewCell.swift; sourceTree = "<group>"; };
D9DC105F216314BC008F3C51 /* SideMenu.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SideMenu.storyboard; sourceTree = "<group>"; };
D9DC106521639077008F3C51 /* MessageComposeModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageComposeModuleInterface.swift; sourceTree = "<group>"; };
D9DC106821639077008F3C51 /* MessageComposeServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageComposeServiceType.swift; sourceTree = "<group>"; };
@ -6441,6 +6335,7 @@
738FD4852303D640008B144D /* Request */ = {
isa = PBXGroup;
children = (
D9DAFE26213530A800483E71 /* PaymentModeRecipientViewModel.swift */,
731627A42301009800BA48A8 /* ExchangeRateRequestModel.swift */,
D96A5001214668A000CFD507 /* RegisterRequestModel.swift */,
D9030ABC2139113A00A1BCA0 /* SendMoneyAccountValidationRequestModel.swift */,
@ -7697,120 +7592,6 @@
path = Modules;
sourceTree = "<group>";
};
D90A9D562136942300A96E45 /* BankBranchPicker */ = {
isa = PBXGroup;
children = (
D90A9D572136942300A96E45 /* BankBranchPickerCell.swift */,
D90A9D582136942300A96E45 /* BankBranchPicker.storyboard */,
D90A9D592136942300A96E45 /* BankBranchPickerViewController.swift */,
);
path = BankBranchPicker;
sourceTree = "<group>";
};
D90A9D61213696E400A96E45 /* BankPicker */ = {
isa = PBXGroup;
children = (
D90A9D62213696E400A96E45 /* BankPickerCell.swift */,
D90A9D63213696E400A96E45 /* BankPickerViewController.swift */,
D90A9D64213696E400A96E45 /* BankPicker.storyboard */,
);
path = BankPicker;
sourceTree = "<group>";
};
D922D92B2135124200D43053 /* SendMoneyPaymentMode */ = {
isa = PBXGroup;
children = (
D922D92C2135124200D43053 /* Module Interface */,
D922D92E2135124200D43053 /* Application Logic */,
D922D9352135124200D43053 /* User Interface */,
);
path = SendMoneyPaymentMode;
sourceTree = "<group>";
};
D922D92C2135124200D43053 /* Module Interface */ = {
isa = PBXGroup;
children = (
D922D92D2135124200D43053 /* SendMoneyPaymentModeModuleInterface.swift */,
);
path = "Module Interface";
sourceTree = "<group>";
};
D922D92E2135124200D43053 /* Application Logic */ = {
isa = PBXGroup;
children = (
D922D92F2135124200D43053 /* Service */,
D922D9322135124200D43053 /* Interactor */,
);
path = "Application Logic";
sourceTree = "<group>";
};
D922D92F2135124200D43053 /* Service */ = {
isa = PBXGroup;
children = (
D922D9302135124200D43053 /* SendMoneyPaymentModeService.swift */,
D922D9312135124200D43053 /* SendMoneyPaymentModeServiceType.swift */,
);
path = Service;
sourceTree = "<group>";
};
D922D9322135124200D43053 /* Interactor */ = {
isa = PBXGroup;
children = (
D922D9332135124200D43053 /* SendMoneyPaymentModeInteractorIO.swift */,
D922D9342135124200D43053 /* SendMoneyPaymentModeInteractor.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
D922D9352135124200D43053 /* User Interface */ = {
isa = PBXGroup;
children = (
D922D9362135124200D43053 /* Presenter */,
D922D9382135124200D43053 /* Wireframe */,
D922D93B2135124200D43053 /* View */,
);
path = "User Interface";
sourceTree = "<group>";
};
D922D9362135124200D43053 /* Presenter */ = {
isa = PBXGroup;
children = (
D922D9372135124200D43053 /* SendMoneyPaymentModePresenter.swift */,
);
path = Presenter;
sourceTree = "<group>";
};
D922D9382135124200D43053 /* Wireframe */ = {
isa = PBXGroup;
children = (
D922D9392135124200D43053 /* SendMoneyPaymentModeWireframeInput.swift */,
D922D93A2135124200D43053 /* SendMoneyPaymentModeWireframe.swift */,
);
path = Wireframe;
sourceTree = "<group>";
};
D922D93B2135124200D43053 /* View */ = {
isa = PBXGroup;
children = (
D9DAFE2A21354D2D00483E71 /* Cells */,
D922D93C2135124200D43053 /* SendMoneyPaymentModeViewController.swift */,
D922D93D2135124200D43053 /* ViewModels */,
D922D93E2135124200D43053 /* SendMoneyPaymentMode.storyboard */,
D922D93F2135124200D43053 /* SendMoneyPaymentModeViewInterface.swift */,
D90A9D562136942300A96E45 /* BankBranchPicker */,
);
path = View;
sourceTree = "<group>";
};
D922D93D2135124200D43053 /* ViewModels */ = {
isa = PBXGroup;
children = (
D90A9D61213696E400A96E45 /* BankPicker */,
D9DAFE26213530A800483E71 /* PaymentModeRecipientViewModel.swift */,
);
path = ViewModels;
sourceTree = "<group>";
};
D922D94D2135145E00D43053 /* SendMoneyParent */ = {
isa = PBXGroup;
children = (
@ -10935,16 +10716,12 @@
D946717B21426CBA003924DB /* OverseasModules */ = {
isa = PBXGroup;
children = (
D9BE021321E2DD44003AA8C7 /* PaymentSelection */,
73469F822293C1AF0062946B /* SelectPayment */,
D922D94D2135145E00D43053 /* SendMoneyParent */,
D922D92B2135124200D43053 /* SendMoneyPaymentMode */,
D922D96F21351AAE00D43053 /* SendMoneyExchangeRate */,
D922D99321351B7400D43053 /* SendMoneyVerification */,
D945F108213E1D5100A24824 /* SendMoneyReceipt */,
D92E65522226209F004D1B3D /* SendMoneyCode */,
D9A060C2223F680B00F5D7C4 /* ResendExchange */,
D9790608223F58410025BD5B /* Resend */,
73B4C8A622A5F2430078D495 /* SelectCoupon */,
);
path = OverseasModules;
@ -11675,187 +11452,6 @@
path = Cell;
sourceTree = "<group>";
};
D9790608223F58410025BD5B /* Resend */ = {
isa = PBXGroup;
children = (
D9790609223F58410025BD5B /* Module Interface */,
D979060B223F58410025BD5B /* Application Logic */,
D9790612223F58410025BD5B /* User Interface */,
);
path = Resend;
sourceTree = "<group>";
};
D9790609223F58410025BD5B /* Module Interface */ = {
isa = PBXGroup;
children = (
D979060A223F58410025BD5B /* ResendModuleInterface.swift */,
);
path = "Module Interface";
sourceTree = "<group>";
};
D979060B223F58410025BD5B /* Application Logic */ = {
isa = PBXGroup;
children = (
D979060C223F58410025BD5B /* Service */,
D979060F223F58410025BD5B /* Interactor */,
);
path = "Application Logic";
sourceTree = "<group>";
};
D979060C223F58410025BD5B /* Service */ = {
isa = PBXGroup;
children = (
D979060D223F58410025BD5B /* ResendServiceType.swift */,
D979060E223F58410025BD5B /* ResendService.swift */,
);
path = Service;
sourceTree = "<group>";
};
D979060F223F58410025BD5B /* Interactor */ = {
isa = PBXGroup;
children = (
D9790610223F58410025BD5B /* ResendInteractor.swift */,
D9790611223F58410025BD5B /* ResendInteractorIO.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
D9790612223F58410025BD5B /* User Interface */ = {
isa = PBXGroup;
children = (
D9790613223F58410025BD5B /* Presenter */,
D9790615223F58410025BD5B /* Wireframe */,
D9790618223F58410025BD5B /* View */,
);
path = "User Interface";
sourceTree = "<group>";
};
D9790613223F58410025BD5B /* Presenter */ = {
isa = PBXGroup;
children = (
D9790614223F58410025BD5B /* ResendPresenter.swift */,
);
path = Presenter;
sourceTree = "<group>";
};
D9790615223F58410025BD5B /* Wireframe */ = {
isa = PBXGroup;
children = (
D9790616223F58410025BD5B /* ResendWireframeInput.swift */,
D9790617223F58410025BD5B /* ResendWireframe.swift */,
);
path = Wireframe;
sourceTree = "<group>";
};
D9790618223F58410025BD5B /* View */ = {
isa = PBXGroup;
children = (
D9D22427224078B700C7313D /* Cell */,
D9790619223F58410025BD5B /* ViewModels */,
D979061A223F58410025BD5B /* ResendViewController.swift */,
D979061B223F58410025BD5B /* ResendViewInterface.swift */,
D979061C223F58410025BD5B /* Resend.storyboard */,
);
path = View;
sourceTree = "<group>";
};
D9790619223F58410025BD5B /* ViewModels */ = {
isa = PBXGroup;
children = (
);
path = ViewModels;
sourceTree = "<group>";
};
D9A060C2223F680B00F5D7C4 /* ResendExchange */ = {
isa = PBXGroup;
children = (
D9A060C3223F680B00F5D7C4 /* Module Interface */,
D9A060C5223F680B00F5D7C4 /* Application Logic */,
D9A060CC223F680B00F5D7C4 /* User Interface */,
);
path = ResendExchange;
sourceTree = "<group>";
};
D9A060C3223F680B00F5D7C4 /* Module Interface */ = {
isa = PBXGroup;
children = (
D9A060C4223F680B00F5D7C4 /* ResendExchangeModuleInterface.swift */,
);
path = "Module Interface";
sourceTree = "<group>";
};
D9A060C5223F680B00F5D7C4 /* Application Logic */ = {
isa = PBXGroup;
children = (
D9A060C6223F680B00F5D7C4 /* Service */,
D9A060C9223F680B00F5D7C4 /* Interactor */,
);
path = "Application Logic";
sourceTree = "<group>";
};
D9A060C6223F680B00F5D7C4 /* Service */ = {
isa = PBXGroup;
children = (
D9A060C7223F680B00F5D7C4 /* ResendExchangeService.swift */,
D9A060C8223F680B00F5D7C4 /* ResendExchangeServiceType.swift */,
);
path = Service;
sourceTree = "<group>";
};
D9A060C9223F680B00F5D7C4 /* Interactor */ = {
isa = PBXGroup;
children = (
D9A060CA223F680B00F5D7C4 /* ResendExchangeInteractor.swift */,
D9A060CB223F680B00F5D7C4 /* ResendExchangeInteractorIO.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
D9A060CC223F680B00F5D7C4 /* User Interface */ = {
isa = PBXGroup;
children = (
D9A060CD223F680B00F5D7C4 /* Presenter */,
D9A060CF223F680B00F5D7C4 /* Wireframe */,
D9A060D2223F680B00F5D7C4 /* View */,
);
path = "User Interface";
sourceTree = "<group>";
};
D9A060CD223F680B00F5D7C4 /* Presenter */ = {
isa = PBXGroup;
children = (
D9A060CE223F680B00F5D7C4 /* ResendExchangePresenter.swift */,
);
path = Presenter;
sourceTree = "<group>";
};
D9A060CF223F680B00F5D7C4 /* Wireframe */ = {
isa = PBXGroup;
children = (
D9A060D0223F680B00F5D7C4 /* ResendExchangeWireframe.swift */,
D9A060D1223F680B00F5D7C4 /* ResendExchangeWireframeInput.swift */,
);
path = Wireframe;
sourceTree = "<group>";
};
D9A060D2223F680B00F5D7C4 /* View */ = {
isa = PBXGroup;
children = (
D9A060D3223F680B00F5D7C4 /* ResendExchangeViewController.swift */,
D9A060D4223F680B00F5D7C4 /* ViewModels */,
D9A060D5223F680B00F5D7C4 /* ResendExchangeViewInterface.swift */,
D9A060D6223F680B00F5D7C4 /* ResendExchange.storyboard */,
);
path = View;
sourceTree = "<group>";
};
D9A060D4223F680B00F5D7C4 /* ViewModels */ = {
isa = PBXGroup;
children = (
);
path = ViewModels;
sourceTree = "<group>";
};
D9B7ADDB2130048E009B0564 /* ExchangeRates */ = {
isa = PBXGroup;
children = (
@ -11958,121 +11554,6 @@
path = Protocols;
sourceTree = "<group>";
};
D9BE021321E2DD44003AA8C7 /* PaymentSelection */ = {
isa = PBXGroup;
children = (
D9BE021421E2DD44003AA8C7 /* Module Interface */,
D9BE021621E2DD44003AA8C7 /* Application Logic */,
D9BE021D21E2DD44003AA8C7 /* User Interface */,
);
path = PaymentSelection;
sourceTree = "<group>";
};
D9BE021421E2DD44003AA8C7 /* Module Interface */ = {
isa = PBXGroup;
children = (
D9BE021521E2DD44003AA8C7 /* PaymentSelectionModuleInterface.swift */,
);
path = "Module Interface";
sourceTree = "<group>";
};
D9BE021621E2DD44003AA8C7 /* Application Logic */ = {
isa = PBXGroup;
children = (
D9BE021721E2DD44003AA8C7 /* Service */,
D9BE021A21E2DD44003AA8C7 /* Interactor */,
);
path = "Application Logic";
sourceTree = "<group>";
};
D9BE021721E2DD44003AA8C7 /* Service */ = {
isa = PBXGroup;
children = (
D9BE021821E2DD44003AA8C7 /* PaymentSelectionService.swift */,
D9BE021921E2DD44003AA8C7 /* PaymentSelectionServiceType.swift */,
);
path = Service;
sourceTree = "<group>";
};
D9BE021A21E2DD44003AA8C7 /* Interactor */ = {
isa = PBXGroup;
children = (
D9BE021B21E2DD44003AA8C7 /* PaymentSelectionInteractor.swift */,
D9BE021C21E2DD44003AA8C7 /* PaymentSelectionInteractorIO.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
D9BE021D21E2DD44003AA8C7 /* User Interface */ = {
isa = PBXGroup;
children = (
D9BE021E21E2DD44003AA8C7 /* Presenter */,
D9BE022021E2DD44003AA8C7 /* Wireframe */,
D9BE022321E2DD44003AA8C7 /* View */,
);
path = "User Interface";
sourceTree = "<group>";
};
D9BE021E21E2DD44003AA8C7 /* Presenter */ = {
isa = PBXGroup;
children = (
D9BE021F21E2DD44003AA8C7 /* PaymentSelectionPresenter.swift */,
);
path = Presenter;
sourceTree = "<group>";
};
D9BE022021E2DD44003AA8C7 /* Wireframe */ = {
isa = PBXGroup;
children = (
D9BE022121E2DD44003AA8C7 /* PaymentSelectionWireframeInput.swift */,
D9BE022221E2DD44003AA8C7 /* PaymentSelectionWireframe.swift */,
);
path = Wireframe;
sourceTree = "<group>";
};
D9BE022321E2DD44003AA8C7 /* View */ = {
isa = PBXGroup;
children = (
D9BE023321E2DDA0003AA8C7 /* Cells */,
D9BE022421E2DD44003AA8C7 /* ViewModels */,
D9BE022521E2DD44003AA8C7 /* PaymentSelectionViewController.swift */,
D9BE022621E2DD44003AA8C7 /* PaymentSelectionViewInterface.swift */,
D9BE022721E2DD44003AA8C7 /* PaymentSelection.storyboard */,
);
path = View;
sourceTree = "<group>";
};
D9BE022421E2DD44003AA8C7 /* ViewModels */ = {
isa = PBXGroup;
children = (
);
path = ViewModels;
sourceTree = "<group>";
};
D9BE023321E2DDA0003AA8C7 /* Cells */ = {
isa = PBXGroup;
children = (
D9BE023421E2DDEC003AA8C7 /* PaymentSelectionTableViewCell.swift */,
);
path = Cells;
sourceTree = "<group>";
};
D9D22427224078B700C7313D /* Cell */ = {
isa = PBXGroup;
children = (
D9D22428224078D000C7313D /* ResendTableViewCell.swift */,
);
path = Cell;
sourceTree = "<group>";
};
D9DAFE2A21354D2D00483E71 /* Cells */ = {
isa = PBXGroup;
children = (
D9DAFE2B21354D8900483E71 /* SendMoenyPaymentModeCollectionViewCell.swift */,
);
path = Cells;
sourceTree = "<group>";
};
D9DC106321639077008F3C51 /* MessageCompose */ = {
isa = PBXGroup;
children = (
@ -13110,7 +12591,6 @@
D93C277622000D630079BF03 /* iPhone_transkey_number_cmd_0.png in Resources */,
045976B421A3D90A0001E92A /* autoRefund.storyboard in Resources */,
D93C273422000D630079BF03 /* iPhone_transkey_alnum_cap_14.png in Resources */,
D9A060E1223F680B00F5D7C4 /* ResendExchange.storyboard in Resources */,
D93C29C922000D650079BF03 /* iPhone_transkey_input_done_thai.png in Resources */,
D93C2B6A22000D660079BF03 /* iPad_transkey_landscape_number_cmd_random_0_2_down.png in Resources */,
D93C290822000D640079BF03 /* iPad_transkey_alnum_cmd_8_down.png in Resources */,
@ -13137,7 +12617,6 @@
D93C27D322000D630079BF03 /* iPad_transkey_landscape_alnum_sym_2.png in Resources */,
D93C2B1922000D650079BF03 /* iPhone_transkey_number_cmd_10_indonesian_down.png in Resources */,
D93C291922000D640079BF03 /* transkey_navi_complete2_down_vetnamese.png in Resources */,
D90A9D5B2136942300A96E45 /* BankBranchPicker.storyboard in Resources */,
D93C2B4E22000D660079BF03 /* iPhone_transkey_landscape_number_key_random_0.png in Resources */,
D93C277322000D630079BF03 /* iPhone_transkey_alnum_cmd_1_down.png in Resources */,
D93C2B9522000D660079BF03 /* transkey_input_eng_17.png in Resources */,
@ -13160,7 +12639,6 @@
D93C2B5022000D660079BF03 /* iPhone_transkey_landscape_number_key_random_1.png in Resources */,
D93C26CD22000D630079BF03 /* iPhone_transkey_landscape_alnum_key_10.png in Resources */,
D93C2AC122000D650079BF03 /* iPhone_transkey_number_cmd_2_2_chinese_down.png in Resources */,
D90A9D67213696E400A96E45 /* BankPicker.storyboard in Resources */,
5565FF2D1FE275E5002934E9 /* SanFranciscoText-MediumItalic.otf in Resources */,
D93C2A3D22000D650079BF03 /* iPad_transkey_landscape_alnum_cmd_8_english.png in Resources */,
D93C29D122000D650079BF03 /* iPhone_transkey_number_cmd_2_2_thai.png in Resources */,
@ -13179,14 +12657,12 @@
D93C2B6D22000D660079BF03 /* iPad_transkey_landscape_number_cmd_random_9.png in Resources */,
D93C2B9F22000D660079BF03 /* transkey_input_eng_22.png in Resources */,
D93C2AEE22000D650079BF03 /* iPad_transkey_number_cmd_10_chinese_down.png in Resources */,
D9BE023221E2DD45003AA8C7 /* PaymentSelection.storyboard in Resources */,
D93C285922000D640079BF03 /* iPad_transkey_alnum_sym_18.png in Resources */,
D93C27DA22000D630079BF03 /* iPad_transkey_landscape_alnum_eng_14.png in Resources */,
D93C2C5122000D660079BF03 /* Tock.caf in Resources */,
D93C268622000D630079BF03 /* iPhone_transkey_landscape_alnum_cmd_4_atm_down.png in Resources */,
D93C29A122000D650079BF03 /* iPad_transkey_number_cmd_1_japanese_down.png in Resources */,
D93C29A022000D650079BF03 /* iPad_transkey_number_cmd_2_japanese_down.png in Resources */,
D922D9492135124200D43053 /* SendMoneyPaymentMode.storyboard in Resources */,
730D7893227A94E1007E517E /* Reward.storyboard in Resources */,
D93C2BA822000D660079BF03 /* transkey_input_eng_24.png in Resources */,
D93C2C5722000D660079BF03 /* foot_left_over.png in Resources */,
@ -13343,7 +12819,6 @@
D93C26F322000D630079BF03 /* iPhone_transkey_landscape_number_key_6.png in Resources */,
5565FF231FE275E5002934E9 /* SanFranciscoText-BoldItalic.otf in Resources */,
D93C2BBD22000D660079BF03 /* transkey_input_sym_16.png in Resources */,
D9790627223F58420025BD5B /* Resend.storyboard in Resources */,
D93C298F22000D650079BF03 /* iPad_transkey_landscape_number_cmd_2_2_japanese_down.png in Resources */,
D93C2AE422000D650079BF03 /* iPad_transkey_alnum_cmd_8_chinese.png in Resources */,
D93C27E722000D630079BF03 /* iPad_transkey_landscape_alnum_sym_0.png in Resources */,
@ -14443,7 +13918,6 @@
D96A4FF62146625C00CFD507 /* RegisterModuleInterface.swift in Sources */,
73195AB222FD14D500151434 /* SetupRecipientModuleInterface.swift in Sources */,
D96BD115216479E200DFE7D8 /* WalletStatementModuleInterface.swift in Sources */,
D9A060DE223F680B00F5D7C4 /* ResendExchangeWireframeInput.swift in Sources */,
73B4C8C322A5F2440078D495 /* SelectCouponWireframeInput.swift in Sources */,
73157B9F22DC1EEC009B836F /* PopupNotificationInteractorIO.swift in Sources */,
D96A4FDB21460B4A00CFD507 /* SplashScreenWireframeInput.swift in Sources */,
@ -14460,9 +13934,7 @@
D945F125213E1D5100A24824 /* SendMoneyReceiptViewInterface.swift in Sources */,
D92B80262140C3CB00A25B26 /* MainService.swift in Sources */,
D9B414422161AE2800A53D9D /* DatePickerViewController.swift in Sources */,
D9BE022E21E2DD45003AA8C7 /* PaymentSelectionWireframeInput.swift in Sources */,
73AEFF742334A13100A967FB /* TransactionHistoryGroupInteractorIO.swift in Sources */,
D9BE023121E2DD45003AA8C7 /* PaymentSelectionViewInterface.swift in Sources */,
730D788B227A94E1007E517E /* RewardServiceType.swift in Sources */,
73A621662330AD20000FFB5B /* RecentHistoriesWireframe.swift in Sources */,
730197A122535135001954AB /* kycForm3ModuleInterface.swift in Sources */,
@ -14470,13 +13942,11 @@
D903113E214786EA00AD5BA9 /* ForgotPasswordService.swift in Sources */,
7301979222535135001954AB /* KycWireframeInput.swift in Sources */,
73B4C8C522A5F2440078D495 /* CouponCell.swift in Sources */,
D9790622223F58420025BD5B /* ResendPresenter.swift in Sources */,
730D78BC227A94F2007E517E /* SearchAddressWireframeInput.swift in Sources */,
73210DA222FBE73100715D6C /* RecipientsService.swift in Sources */,
D96A4FDC21460B4A00CFD507 /* SplashScreenViewInterface.swift in Sources */,
D950BED721549242008367A1 /* HomeWireframeInput.swift in Sources */,
D977859D215DC55F00754079 /* TransactionHistoryModuleInterface.swift in Sources */,
D979061F223F58420025BD5B /* ResendService.swift in Sources */,
73B4C8C022A5F2440078D495 /* SelectCouponInteractor.swift in Sources */,
7389600C22C2F208003FEA90 /* TablePresenterService.swift in Sources */,
D903113C214786EA00AD5BA9 /* ForgotPasswordModuleInterface.swift in Sources */,
@ -14579,12 +14049,9 @@
D97785AC215DD23400754079 /* TransactionModel.swift in Sources */,
BE74AFC7227C8FF200F05CE7 /* AutoDebitService.swift in Sources */,
04E36E1A21AE585200783685 /* PennyTestSubmitServiceType.swift in Sources */,
D90A9D65213696E400A96E45 /* BankPickerCell.swift in Sources */,
D9A060DD223F680B00F5D7C4 /* ResendExchangeWireframe.swift in Sources */,
D922D98B21351AAE00D43053 /* SendMoneyExchangeRateWireframe.swift in Sources */,
73469F9F2293C1B00062946B /* SelectPaymentWireframeInput.swift in Sources */,
D9DC107A21639078008F3C51 /* MessageComposeService.swift in Sources */,
D922D9412135124200D43053 /* SendMoneyPaymentModeService.swift in Sources */,
730D787D227A94E1007E517E /* RedeemModuleInterface.swift in Sources */,
D96A4FD521460B4A00CFD507 /* SplashScreenService.swift in Sources */,
9F983C0C2024883D001DCB3F /* UIColor+Ext.swift in Sources */,
@ -14601,23 +14068,19 @@
D92E6568222620A0004D1B3D /* SendMoneyCodeServiceType.swift in Sources */,
73469F9C2293C1B00062946B /* SelectPaymentInteractor.swift in Sources */,
73197D3F2330B919002C0F85 /* RecentRecipientModel.swift in Sources */,
D9BE023521E2DDEC003AA8C7 /* PaymentSelectionTableViewCell.swift in Sources */,
D9031143214786EA00AD5BA9 /* ForgotPasswordWireframeInput.swift in Sources */,
73A621632330AD20000FFB5B /* RecentHistoriesInteractorIO.swift in Sources */,
73469F9B2293C1B00062946B /* SelectPaymentInteractorIO.swift in Sources */,
738FD4882303D70E008B144D /* RequestModelType.swift in Sources */,
730197A722535135001954AB /* kycForm3Wireframe.swift in Sources */,
D92C24A721477EA600F6876F /* ResponseMessage.swift in Sources */,
D979061D223F58420025BD5B /* ResendModuleInterface.swift in Sources */,
73157BA122DC1EEC009B836F /* PopupNotificationWireframe.swift in Sources */,
73157B9C22DC1EEC009B836F /* PopupNotificationServiceType.swift in Sources */,
73469F992293C1B00062946B /* SelectPaymentServiceType.swift in Sources */,
73469F9D2293C1B00062946B /* SelectPaymentPresenter.swift in Sources */,
739A7784228BB2B40018A1A9 /* DetailOrderInteractor.swift in Sources */,
D9BE022C21E2DD45003AA8C7 /* PaymentSelectionInteractorIO.swift in Sources */,
736A8C452277EB2A00337A50 /* BiometricNotificationPresenter.swift in Sources */,
73197D3D2330B2BF002C0F85 /* RecentRecipientCell.swift in Sources */,
D9A060DF223F680B00F5D7C4 /* ResendExchangeViewController.swift in Sources */,
730D787F227A94E1007E517E /* RedeemService.swift in Sources */,
73BCCDCF228993040057B161 /* RewardGroupModuleInterface.swift in Sources */,
BE74AFBE227C8FF200F05CE7 /* AddAccountInteractorIO.swift in Sources */,
@ -14628,7 +14091,6 @@
D97785A1215DC55F00754079 /* TransactionHistoryInteractor.swift in Sources */,
738F04B12316238600BA5EE7 /* ShadowView.swift in Sources */,
D903113F214786EA00AD5BA9 /* ForgotPasswordInteractor.swift in Sources */,
D922D9472135124200D43053 /* SendMoneyPaymentModeWireframe.swift in Sources */,
73157BA422DC1EEC009B836F /* PopupNotificationViewController.swift in Sources */,
D962230C212BD7A100B7A115 /* Array+Ext.swift in Sources */,
73157B9B22DC1EEC009B836F /* PopupNotificationModuleInterface.swift in Sources */,
@ -14637,7 +14099,6 @@
73B4C8BC22A5F2440078D495 /* SelectCouponModuleInterface.swift in Sources */,
D92E656B222620A0004D1B3D /* SendMoneyCodeInteractor.swift in Sources */,
D96848C9212D3AEB00EF12B1 /* JSON+Ext.swift in Sources */,
D9A060E0223F680B00F5D7C4 /* ResendExchangeViewInterface.swift in Sources */,
BE74AFCC227C8FF200F05CE7 /* AutoDebitWireframe.swift in Sources */,
739A7788228BB2B40018A1A9 /* DetailOrderWireframe.swift in Sources */,
D95B5E4921314D31000C0B33 /* GmeContacts.swift in Sources */,
@ -14659,7 +14120,6 @@
730D7891227A94E1007E517E /* RewardWireframe.swift in Sources */,
7389601322C2F208003FEA90 /* TablePresenterViewInterface.swift in Sources */,
D9031146214786EA00AD5BA9 /* ForgotPasswordViewInterface.swift in Sources */,
D922D9462135124200D43053 /* SendMoneyPaymentModeWireframeInput.swift in Sources */,
7301979922535135001954AB /* kycForm1InteractorIO.swift in Sources */,
D946719B21426DFB003924DB /* LoginWireframe.swift in Sources */,
D9B7ADF62130048E009B0564 /* ExchangeRatesWireframeInput.swift in Sources */,
@ -14674,10 +14134,8 @@
73210DAA22FBE73100715D6C /* RecipientsViewModelInterface.swift in Sources */,
73157B9D22DC1EEC009B836F /* PopupNotificationService.swift in Sources */,
D9031145214786EA00AD5BA9 /* ForgotPasswordViewController.swift in Sources */,
D9DAFE2C21354D8900483E71 /* SendMoenyPaymentModeCollectionViewCell.swift in Sources */,
D95B7043213F9A2C0053CC3D /* CALayer+Ext.swift in Sources */,
730D7881227A94E1007E517E /* RedeemInteractorIO.swift in Sources */,
D9BE023021E2DD45003AA8C7 /* PaymentSelectionViewController.swift in Sources */,
730197AC22535135001954AB /* kycForm2ModuleInterface.swift in Sources */,
D922D9AD21351B7400D43053 /* SendMoneyVerificationPresenter.swift in Sources */,
73195AB322FD14D500151434 /* SetupRecipientServiceType.swift in Sources */,
@ -14686,7 +14144,6 @@
730D78B8227A94F2007E517E /* SearchAddressInteractorIO.swift in Sources */,
D92B802D2140C3CB00A25B26 /* MainViewInterface.swift in Sources */,
730197B422535135001954AB /* kycForm2ViewInterface.swift in Sources */,
D9790626223F58420025BD5B /* ResendViewInterface.swift in Sources */,
73B6D68E2306413100A0CB6E /* RecipientCommonType.swift in Sources */,
D962231E212C126500B7A115 /* ExchangeModel.swift in Sources */,
D903113D214786EA00AD5BA9 /* ForgotPasswordServiceType.swift in Sources */,
@ -14694,7 +14151,6 @@
730D78B9227A94F2007E517E /* SearchAddressInteractor.swift in Sources */,
D923EBBB215C7E67008A3026 /* HomeCollectionModel.swift in Sources */,
730197B322535135001954AB /* kycForm2WireframeInput.swift in Sources */,
D90A9D5A2136942300A96E45 /* BankBranchPickerCell.swift in Sources */,
D96A4FF72146625C00CFD507 /* RegisterServiceType.swift in Sources */,
7301979822535135001954AB /* kycForm1ServiceType.swift in Sources */,
D95B5E3C21311057000C0B33 /* GmeContactsInteractor.swift in Sources */,
@ -14710,9 +14166,7 @@
7301979122535135001954AB /* KycWireframe.swift in Sources */,
73185350230EACA400BA9AE3 /* SendMoneyCountryViewModel.swift in Sources */,
D950BED221549242008367A1 /* HomeServiceType.swift in Sources */,
D9BE022B21E2DD45003AA8C7 /* PaymentSelectionInteractor.swift in Sources */,
7301978E22535135001954AB /* KycInteractor.swift in Sources */,
D922D9452135124200D43053 /* SendMoneyPaymentModePresenter.swift in Sources */,
73195AB422FD14D500151434 /* SetupRecipientService.swift in Sources */,
73B4C8C122A5F2440078D495 /* SelectCouponPresenter.swift in Sources */,
D922D9662135145F00D43053 /* SendMoneyParentInteractorIO.swift in Sources */,
@ -14724,16 +14178,13 @@
D922D96C2135145F00D43053 /* SendMoneyParentViewController.swift in Sources */,
D922D98C21351AAE00D43053 /* SendMoneyExchangeRateViewController.swift in Sources */,
731627A52301009800BA48A8 /* ExchangeRateRequestModel.swift in Sources */,
D922D9402135124200D43053 /* SendMoneyPaymentModeModuleInterface.swift in Sources */,
D92E6569222620A0004D1B3D /* SendMoneyCodeService.swift in Sources */,
BEC9B001224FC49C00A2DA06 /* BiometricAuthenticationPresenter.swift in Sources */,
73157BA722DC3F14009B836F /* Date+Ext.swift in Sources */,
73B4C8BF22A5F2440078D495 /* SelectCouponInteractorIO.swift in Sources */,
73BCCDD8228993040057B161 /* RewardGroupViewInterface.swift in Sources */,
73A621422330742C000FFB5B /* DomesticRemitViewController.swift in Sources */,
D9790624223F58420025BD5B /* ResendWireframe.swift in Sources */,
BE74AFC3227C8FF200F05CE7 /* AddAccountViewController.swift in Sources */,
D9A060DA223F680B00F5D7C4 /* ResendExchangeInteractor.swift in Sources */,
73B4C8C222A5F2440078D495 /* SelectCouponWireframe.swift in Sources */,
7303E5732344A1F000472407 /* StoreReviewHelper.swift in Sources */,
73A6213B2330742C000FFB5B /* DomesticRemitInteractorIO.swift in Sources */,
@ -14769,10 +14220,8 @@
D945F124213E1D5100A24824 /* SendMoneyReceiptWireframeInput.swift in Sources */,
730D7890227A94E1007E517E /* RewardWireframeInput.swift in Sources */,
D922D9A921351B7400D43053 /* SendMoneyVerificationServiceType.swift in Sources */,
D9A060D8223F680B00F5D7C4 /* ResendExchangeService.swift in Sources */,
7301979622535135001954AB /* kycForm1ModuleInterface.swift in Sources */,
D922D9642135145F00D43053 /* SendMoneyParentService.swift in Sources */,
D9790621223F58420025BD5B /* ResendInteractorIO.swift in Sources */,
D96A50002146625C00CFD507 /* RegisterViewController.swift in Sources */,
D945F126213E1D5100A24824 /* SendMoneyReceiptViewController.swift in Sources */,
73BCCDD9228993040057B161 /* RewardGroupViewController.swift in Sources */,
@ -14804,16 +14253,13 @@
D96A4FD621460B4A00CFD507 /* SplashScreenServiceType.swift in Sources */,
736A8C412277EB2A00337A50 /* BiometricNotificationService.swift in Sources */,
73210DA122FBE73100715D6C /* RecipientsModuleInterface.swift in Sources */,
D9A060D9223F680B00F5D7C4 /* ResendExchangeServiceType.swift in Sources */,
73A621412330742C000FFB5B /* DomesticRemitViewModelInterface.swift in Sources */,
730D788A227A94E1007E517E /* RewardProduct.swift in Sources */,
73469F9A2293C1B00062946B /* SelectPaymentService.swift in Sources */,
D9A060DC223F680B00F5D7C4 /* ResendExchangePresenter.swift in Sources */,
D977859E215DC55F00754079 /* TransactionHistoryService.swift in Sources */,
730D7892227A94E1007E517E /* RewardViewInterface.swift in Sources */,
D95B5E3A21311057000C0B33 /* GmeContactsService.swift in Sources */,
D95B5E3F21311057000C0B33 /* GmeContactsWireframeInput.swift in Sources */,
D922D9442135124200D43053 /* SendMoneyPaymentModeInteractor.swift in Sources */,
736E321A230A3CC1005799AA /* UIDevice+Ext.swift in Sources */,
D922D9692135145F00D43053 /* SendMoneyParentWireframeInput.swift in Sources */,
D946719821426DFB003924DB /* LoginInteractor.swift in Sources */,
@ -14833,15 +14279,12 @@
7301978F22535135001954AB /* KycInteractorIO.swift in Sources */,
D92E656E222620A0004D1B3D /* SendMoneyCodeWireframe.swift in Sources */,
04E36E1921AE585200783685 /* PennyTestSubmitModuleInterface.swift in Sources */,
D9BE022A21E2DD45003AA8C7 /* PaymentSelectionServiceType.swift in Sources */,
73A6E20322CEE51600E9BC68 /* UIBarButtonItem+Ext.swift in Sources */,
D9BE022F21E2DD45003AA8C7 /* PaymentSelectionWireframe.swift in Sources */,
D92B80292140C3CB00A25B26 /* MainInteractorIO.swift in Sources */,
730197AB22535135001954AB /* kycForm3ViewController.swift in Sources */,
73976D202331B4F4003CF5E1 /* UIImageView+Ext.swift in Sources */,
0496B84F1FE7DFCD0044810E /* String+Ext.swift in Sources */,
D9B7ADF52130048E009B0564 /* ExchangeRatesPresenter.swift in Sources */,
D9BE022821E2DD45003AA8C7 /* PaymentSelectionModuleInterface.swift in Sources */,
73A6E20422CEE51600E9BC68 /* BadgeLabel.swift in Sources */,
73AEFF562334744E00A967FB /* DomesticRemitResponseModel.swift in Sources */,
73FE883D228A4A8C00A5EB56 /* OrderHistoryWireframe.swift in Sources */,
@ -14858,7 +14301,6 @@
D922D98A21351AAE00D43053 /* SendMoneyExchangeRateWireframeInput.swift in Sources */,
D945F129213E4A9D00A24824 /* SendMoneyReciept.swift in Sources */,
D9B7ADF02130048E009B0564 /* ExchangeRatesModuleInterface.swift in Sources */,
D979061E223F58420025BD5B /* ResendServiceType.swift in Sources */,
73A6215F2330AD20000FFB5B /* RecentHistoriesModuleInterface.swift in Sources */,
043770EE21AD04240005B22D /* PennyTestWireframe.swift in Sources */,
73B4C8C622A5F2440078D495 /* SelectCouponViewController.swift in Sources */,
@ -14872,9 +14314,7 @@
FF6E7D8F21BF951D00A003B9 /* AppUpdateInteractorIO.swift in Sources */,
7317E404233387A10063743A /* DomesticRemitRequestModel.swift in Sources */,
D9031142214786EA00AD5BA9 /* ForgotPasswordWireframe.swift in Sources */,
D922D9432135124200D43053 /* SendMoneyPaymentModeInteractorIO.swift in Sources */,
D96BD118216479E200DFE7D8 /* WalletStatementInteractorIO.swift in Sources */,
D922D9482135124200D43053 /* SendMoneyPaymentModeViewController.swift in Sources */,
BE74AFC9227C8FF200F05CE7 /* AutoDebitInteractor.swift in Sources */,
FF6E7D8E21BF951D00A003B9 /* AppUpdateInteractor.swift in Sources */,
D9B7ADFD2130073A009B0564 /* WireframeInput.swift in Sources */,
@ -14901,7 +14341,6 @@
73BCCDD0228993040057B161 /* RewardGroupServiceType.swift in Sources */,
D950BED321549242008367A1 /* HomeService.swift in Sources */,
045976B221A3D8F30001E92A /* AutoRefundsViewController.swift in Sources */,
D9D22429224078D000C7313D /* ResendTableViewCell.swift in Sources */,
043770EF21AD04240005B22D /* PennyTestViewInterface.swift in Sources */,
73071AC62296CF9B008840FD /* HotLineServiceType.swift in Sources */,
730197A622535135001954AB /* kycForm3Presenter.swift in Sources */,
@ -14920,16 +14359,13 @@
D96A4FFD2146625C00CFD507 /* RegisterWireframe.swift in Sources */,
D950BED421549242008367A1 /* HomeInteractorIO.swift in Sources */,
73FE8840228A4A8C00A5EB56 /* OrderHistoryViewController.swift in Sources */,
D9790623223F58420025BD5B /* ResendWireframeInput.swift in Sources */,
D922D98D21351AAE00D43053 /* SendMoneyExchangeRateViewInterface.swift in Sources */,
73195AB622FD14D500151434 /* SetupRecipientInteractor.swift in Sources */,
7389600A22C2F208003FEA90 /* TablePresenterModuleInterface.swift in Sources */,
733D910222EEB658006B5E80 /* kycForm1WireframeOutput.swift in Sources */,
73071AC92296CF9B008840FD /* HotLinePresenter.swift in Sources */,
D90A9D66213696E400A96E45 /* BankPickerViewController.swift in Sources */,
04DC27EE21A51E83003714F5 /* autoRefundService.swift in Sources */,
73A6213D2330742C000FFB5B /* DomesticRemitPresenter.swift in Sources */,
D9BE022D21E2DD45003AA8C7 /* PaymentSelectionPresenter.swift in Sources */,
73FE883B228A4A8C00A5EB56 /* OrderHistoryInteractor.swift in Sources */,
730197B622535135001954AB /* kycForm2ViewController.swift in Sources */,
049E61A51FF0AE9D00817C76 /* UrlManager.swift in Sources */,
@ -14942,7 +14378,6 @@
7383F43622DEB864003D6393 /* GMEDB.swift in Sources */,
73A6216A2330AD20000FFB5B /* RecentHistoriesViewController.swift in Sources */,
04E36E2021AE585200783685 /* PennyTestSubmitWireframeInput.swift in Sources */,
D90A9D5C2136942300A96E45 /* BankBranchPickerViewController.swift in Sources */,
D922D9682135145F00D43053 /* SendMoneyParentWireframe.swift in Sources */,
731703CC23221EA0005752DE /* SwipeNavigationController.swift in Sources */,
736A8C402277EB2A00337A50 /* BiometricNotificationModuleInterface.swift in Sources */,
@ -14958,7 +14393,6 @@
D96BD117216479E200DFE7D8 /* WalletStatementService.swift in Sources */,
D90D55B121326DA800EEEE04 /* ReciepientEx.swift in Sources */,
73A621402330742C000FFB5B /* DomesticRemitViewModel.swift in Sources */,
D9790625223F58420025BD5B /* ResendViewController.swift in Sources */,
73FE883A228A4A8C00A5EB56 /* OrderHistoryInteractorIO.swift in Sources */,
D950BED821549242008367A1 /* HomeWireframe.swift in Sources */,
D922D9AF21351B7400D43053 /* SendMoneyVerificationWireframeInput.swift in Sources */,
@ -14967,7 +14401,6 @@
73195ABA22FD14D500151434 /* SetupRecipientViewModel.swift in Sources */,
7389601422C2F208003FEA90 /* TablePresenterViewController.swift in Sources */,
739F8187234AFF13003ABCF3 /* DebugManager.swift in Sources */,
D9A060D7223F680B00F5D7C4 /* ResendExchangeModuleInterface.swift in Sources */,
D96BD11B216479E200DFE7D8 /* WalletStatementWireframe.swift in Sources */,
D96BD116216479E200DFE7D8 /* WalletStatementServiceType.swift in Sources */,
D946719621426DFB003924DB /* LoginService.swift in Sources */,
@ -14980,13 +14413,11 @@
73469FA02293C1B00062946B /* SelectPaymentViewController.swift in Sources */,
D97785A4215DC55F00754079 /* TransactionHistoryWireframe.swift in Sources */,
D96848CC212D3F2300EF12B1 /* ExchangeRateApiService.swift in Sources */,
D9A060DB223F680B00F5D7C4 /* ResendExchangeInteractorIO.swift in Sources */,
D9DC108421639E56008F3C51 /* SuccessMessage.swift in Sources */,
7318534E230EACA400BA9AE3 /* SendMoneyTransFerReasonViewModel.swift in Sources */,
73195ABB22FD14D500151434 /* SetupRecipientViewModelInterface.swift in Sources */,
7389601922C2FADD003FEA90 /* TableCell.swift in Sources */,
730197A522535135001954AB /* kycForm3Interactor.swift in Sources */,
D922D94A2135124200D43053 /* SendMoneyPaymentModeViewInterface.swift in Sources */,
D9380D2D2165A2ED00E45156 /* ProfileViewController.swift in Sources */,
D945F122213E1D5100A24824 /* SendMoneyReceiptPresenter.swift in Sources */,
D92B802A2140C3CB00A25B26 /* MainPresenter.swift in Sources */,
@ -15045,11 +14476,9 @@
73FE8846228A58DE00A5EB56 /* OrderContainer.swift in Sources */,
D96BD11E216479E200DFE7D8 /* WalletStatementViewInterface.swift in Sources */,
D92B802E2140C3CB00A25B26 /* MainViewController.swift in Sources */,
D922D9422135124200D43053 /* SendMoneyPaymentModeServiceType.swift in Sources */,
73210DA622FBE73100715D6C /* RecipientsPresenter.swift in Sources */,
7301979B22535135001954AB /* kycForm1Presenter.swift in Sources */,
73469FA12293C1B00062946B /* PaymentCell.swift in Sources */,
D9790620223F58420025BD5B /* ResendInteractor.swift in Sources */,
730197B122535135001954AB /* kycForm2Presenter.swift in Sources */,
D945F120213E1D5100A24824 /* SendMoneyReceiptInteractor.swift in Sources */,
041A86A721D1F5590044C83C /* WkWebViewController.swift in Sources */,
@ -15062,7 +14491,6 @@
730D788C227A94E1007E517E /* RewardService.swift in Sources */,
D922D9672135145F00D43053 /* SendMoneyParentPresenter.swift in Sources */,
D9B39678214F7DDC0072A9B8 /* MultiMediaManager.swift in Sources */,
D9BE022921E2DD45003AA8C7 /* PaymentSelectionService.swift in Sources */,
D950BED621549242008367A1 /* HomePresenter.swift in Sources */,
D96A4FF82146625C00CFD507 /* RegisterService.swift in Sources */,
73A621672330AD20000FFB5B /* RecentHistoriesViewModel.swift in Sources */,

1
GME Remit/Extensions/UIColor+Ext.swift

@ -70,7 +70,6 @@ extension UIColor {
return UIColor(named: "ThemeRedWhite") ?? .white
}
class var themeSubBackground: UIColor {
return UIColor(named: "ThemeSubBackground") ?? .lightGray
}

2
GME Remit/Extensions/UIImageView+Ext.swift

@ -9,7 +9,7 @@
import UIKit
extension UIImageView {
func setDropDownImage(tintColor: UIColor){
func setDropDownImage(tintColor: UIColor) {
self.image = #imageLiteral(resourceName: "dropdown_white").withRenderingMode(UIImage.RenderingMode.alwaysTemplate)
self.tintColor = tintColor
}

31
GME Remit/Models/Request/PaymentModeRecipientViewModel.swift

@ -0,0 +1,31 @@
//
// SendMoneyRecipientViewModel.swift
// GMERemittance
//
// Created by gme_2 on 28/08/2018.
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class SendMoneyRecipientViewModel {
var id: String?
var firstName: String?
var middleName: String?
var lastName: String?
var country: String?
var state: String?
var stateId: String?
var city: String?
var address: String?
var district: String?
var districtId: String?
var relation: String?
var relationId: String?
var mobileNumber: String?
var email: String?
var recipientId: String?
var reason: String?
var reasonId: String?
var countryId: String?
}

2
GME Remit/Models/Response/NativeCountry.swift

@ -51,7 +51,7 @@ struct NativeCountryModel: Mappable, TablePresenterProtocol {
}
}
fileprivate let countries =
private let countries =
"""
{
"NativeCountry":[

1
GME Remit/Models/Response/ResendDetail.swift

@ -9,7 +9,6 @@
import Foundation
import ObjectMapper
class ResendDetailModelContainer: Mappable {
var errorCode: String?
var message: String?

1
GME Remit/Models/Response/ResendListModel.swift

@ -9,7 +9,6 @@
import Foundation
import ObjectMapper
class ResendListModelContainer: Mappable {
var errorCode: String?
var message: String?

1
GME Remit/Models/Response/SendMoneyProvinceViewModel.swift

@ -8,7 +8,6 @@
import Foundation
struct SendMoneyProvienceViewModel {
var name: String?
var id: String?

1
GME Remit/Models/Response/SendMoneyRelationViewModel.swift

@ -8,7 +8,6 @@
import Foundation
struct SendMoneyRelationViewModel {
var title: String?
var id: String?

1
GME Remit/Models/Response/SendMoneyTransFerReasonViewModel.swift

@ -8,7 +8,6 @@
import Foundation
struct SendMoneyTransferReasonViewModel {
var title: String?
var id: String?

4
GME Remit/Modules/AutoDebitModules/AddAccount/User Interface/Wireframe/AddAccountWireframe.swift

@ -41,10 +41,10 @@ extension AddAccountWireframe: AddAccountWireframeInput {
}
func pushKFTCViewControllerOf(url: String, header: [KftcHeader]?) {
let viewcontroller = UIStoryboard(
guard let viewcontroller = UIStoryboard(
name: "WKWebView",
bundle: nil
).instantiateViewController(withIdentifier: "WkWebViewController") as! WkWebViewController
).instantiateViewController(withIdentifier: "WkWebViewController") as? WkWebViewController else { return }
viewcontroller.url = url
viewcontroller.headers = header

3
GME Remit/Modules/AutoDebitModules/AutoDebit/Application Logic/Interactor/AutoDebitInteractorIO.swift

@ -11,7 +11,6 @@ protocol AutoDebitInteractorInput: class {
/// Fetch KFTC registerd bank account list
func fetchKFTCBankAccountList()
/// Delete selected bank account
///
/// - Parameters:
@ -19,7 +18,6 @@ protocol AutoDebitInteractorInput: class {
/// - account: bank account
func deleteKFTCBankAccount(of username: String, with account: Account)
/// Refresh Token
///
/// - Parameter language: selected language
@ -33,7 +31,6 @@ protocol AutoDebitInteractorOutput: class {
/// If did fail delete KFTC bank account
func didFailDeleteAccount(with error: Error)
/// Set KFTCModel
///
/// - Parameter model: KFTCModel

2
GME Remit/Modules/AutoDebitModules/AutoDebit/Application Logic/Service/AutoDebitServiceType.swift

@ -21,7 +21,6 @@ protocol AutoDebitServiceType: class, ApiServiceType {
failure: @escaping (Error) -> Void
)
/// Delete selected row's KFTC bank account
///
/// - Parameters:
@ -36,7 +35,6 @@ protocol AutoDebitServiceType: class, ApiServiceType {
failure: @escaping (Error) -> Void
)
/// Refresh token
///
/// - Parameters:

1
GME Remit/Modules/AutoDebitModules/AutoDebit/Module Interface/AutoDebitModuleInterface.swift

@ -18,7 +18,6 @@ protocol AutoDebitModuleInterface: class {
/// - account: bank account for delete
func deleteKFTCBankAccount(of username: String, with account: Account)
/// Present AddAccount ViewController in front of these ViewController
///
/// - Parameter model: KFTCModel

4
GME Remit/Modules/AutoDebitModules/AutoDebit/User Interface/Presenter/AutoDebitPresenter.swift

@ -32,7 +32,7 @@ extension AutoDebitPresenter: AutoDebitModuleInterface {
interactor?.deleteKFTCBankAccount(of: username, with: account)
}
func goAddAccount(model: KFTCModel?){
func goAddAccount(model: KFTCModel?) {
wireframe?.goAddAccountViewController(with: model)
}
@ -67,7 +67,7 @@ extension AutoDebitPresenter: AutoDebitInteractorOutput {
view?.didDeleteAccount()
}
func didFailDeleteAccount(with error: Error){
func didFailDeleteAccount(with error: Error) {
view?.endLoading()
view?.didFailDeleteAccount(with: error)
}

1
GME Remit/Modules/AutoDebitModules/AutoDebit/User Interface/Wireframe/AutoDebitWireframeInput.swift

@ -13,7 +13,6 @@ protocol AutoDebitWireframeInput: WireframeInput {
/// - Parameter model: KFTCModel
func goAddAccountViewController(with model: KFTCModel?)
/// Present Refresh Token
///
/// - Parameters:

2
GME Remit/Modules/BiometricAuthModules/BiometricAuthentication/User Interface/Wireframe/BiometricAuthenticationWireframe.swift

@ -42,7 +42,7 @@ extension BiometricAuthenticationWireframe: BiometricAuthenticationWireframeInpu
let vc = self.view as? BiometricAuthenticationViewController ?? BiometricAuthenticationViewController()
if let bioPolicy = delegate?.doSelectLocalAuthenticationPolicy(vc){
if let bioPolicy = delegate?.doSelectLocalAuthenticationPolicy(vc) {
switch bioPolicy {
case .deviceOwnerAuthentication:
self.policy = .deviceOwnerAuthentication

2
GME Remit/Modules/ExchangeRates/User Interface/Wireframe/ExchangeRatesWireframe.swift

@ -30,6 +30,4 @@ extension ExchangeRatesWireframe: ExchangeRatesWireframeInput {
self.view = viewController
return viewController
}
}

1
GME Remit/Modules/ForgotPassword/Application Logic/Service/ForgotPasswordServiceType.swift

@ -8,7 +8,6 @@
import Foundation
protocol ForgotPasswordServiceType: class, PasswordResetService {
}

30
GME Remit/Modules/Home/User Interface/View/HomeViewController.swift

@ -431,21 +431,21 @@ class HomeViewController: UIViewController {
}
@objc private func showResendMoney() {
let kycSubmited = user?.kyc ?? false
let pennyTestComplete = Utility.pennyTestVerified()
if kycSubmited == true && pennyTestComplete == false {
self.show(error: StringConstants().pennyTestPrimaryBankText)
return
}
if isUserVerified() {
if let navigation = self.navigationController {
let wireframe = ResendWireframe()
wireframe.pushMainView(in: navigation)
}
} else {
self.showUnVerifiedMessage()
}
// let kycSubmited = user?.kyc ?? false
// let pennyTestComplete = Utility.pennyTestVerified()
//
// if kycSubmited == true && pennyTestComplete == false {
// self.show(error: StringConstants().pennyTestPrimaryBankText)
// return
// }
// if isUserVerified() {
// if let navigation = self.navigationController {
// let wireframe = ResendWireframe()
// wireframe.pushMainView(in: navigation)
// }
// } else {
// self.showUnVerifiedMessage()
// }
}
@objc private func showMobileRecharge() {

1
GME Remit/Modules/Main/Application Logic/Interactor/MainInteractor.swift

@ -5,7 +5,6 @@
// Created by shishir sapkota
//
import Foundation
class MainInteractor: MainInteractorInput {

1
GME Remit/Modules/Main/Application Logic/Service/MainService.swift

@ -5,7 +5,6 @@
// Created by shishir sapkota
//
import Foundation
class MainService: MainServiceType {

4
GME Remit/Modules/Main/Module Interface/MainModuleInterface.swift

@ -5,6 +5,4 @@
// Created by shishir sapkota
//
protocol MainModuleInterface: class {
}
protocol MainModuleInterface: class {}

2
GME Remit/Modules/Main/User Interface/View/MainViewController.swift

@ -5,14 +5,12 @@
// Created by shishir sapkota
//
import Foundation
import UIKit
class MainViewController: UITabBarController {
// MARK: Properties
// MARK: ENUMS:
private enum Items: Int {
case home = 0

5
GME Remit/Modules/Main/User Interface/View/MainViewInterface.swift

@ -5,7 +5,4 @@
// Created by shishir sapkota
//
protocol MainViewInterface: class {
}
protocol MainViewInterface: class {}

1
GME Remit/Modules/Main/User Interface/Wireframe/MainWireframeInput.swift

@ -5,7 +5,6 @@
// Created by shishir sapkota
//
import Foundation
protocol MainWireframeInput: WireframeInput {

2
GME Remit/Modules/RecipientModules/Recipients/Application Logic/Model/Recipient/Recipient.swift

@ -168,7 +168,7 @@ struct Recipient: Mappable {
"countryId": countryID ?? "",
"relationshipId": relationshipID ?? "",
"districtId": districtID ?? "",
"purposeOfRemitId": purposeOfRemitID ?? "",
"purposeOfRemitId": purposeOfRemitID ?? ""
]
}
}

20
GME Remit/Modules/RecipientModules/Recipients/User Interface/View/Recipients.storyboard

@ -126,32 +126,32 @@
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="JRd-10-b03">
<rect key="frame" x="0.0" y="74.5" width="225" height="13.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="BankDeposit" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="fp5-32-al9">
<rect key="frame" x="0.0" y="0.0" width="225" height="5.5"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BankDeposit" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="fp5-32-al9">
<rect key="frame" x="0.0" y="0.0" width="225" height="13.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="ShinhanBank ShinhanBank " textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="llO-GY-kgJ">
<rect key="frame" x="0.0" y="7.5" width="225" height="0.0"/>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ShinhanBank ShinhanBank " textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="llO-GY-kgJ">
<rect key="frame" x="0.0" y="0.0" width="225" height="0.0"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Seoul" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="e6I-QA-szH">
<rect key="frame" x="0.0" y="9.5" width="225" height="0.0"/>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Seoul" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="e6I-QA-szH">
<rect key="frame" x="0.0" y="0.0" width="225" height="0.0"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="110224458044" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="VyT-Xs-vLr">
<rect key="frame" x="0.0" y="11.5" width="225" height="0.0"/>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="110224458044" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="VyT-Xs-vLr">
<rect key="frame" x="0.0" y="0.0" width="225" height="0.0"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="+821052850125" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="TPT-6m-Woe">
<rect key="frame" x="0.0" y="13.5" width="225" height="0.0"/>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="+821052850125" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="TPT-6m-Woe">
<rect key="frame" x="0.0" y="0.0" width="225" height="0.0"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>

1
GME Remit/Modules/RecipientModules/SetupRecipient/User Interface/Wireframe/SetupRecipientWireframe.swift

@ -15,7 +15,6 @@ class SetupRecipientWireframe {
private weak var delegate: SetupRecipientDelegate?
}
extension SetupRecipientWireframe: SetupRecipientWireframeInput {
var storyboardName: String {return "SetupRecipient"}

31
GME Remit/Modules/RegisterModules/KYC/kycForm1/User Interface/View/kycForm1ViewController.swift

@ -136,7 +136,7 @@ class KycForm1ViewController: UIViewController {
var errorLabels: [UILabel] = []
var textfields: [UITextField] = []
var delegate: KYCForm1Delegate?
weak var delegate: KYCForm1Delegate?
var occupations: [KeyValueModel]?
var kycModel: KycModel? {
@ -165,7 +165,7 @@ class KycForm1ViewController: UIViewController {
}
private var isValid = false {
didSet{
didSet {
saveButton.isEnabled = isValid
saveButton.backgroundColor = isValid ? .themeRed : .lightGray
}
@ -299,7 +299,7 @@ class KycForm1ViewController: UIViewController {
dobTextField.sendActions(for: .editingChanged)
}
private func setCustomTextFields(){
private func setCustomTextFields() {
genderTextField.inputView = UIView()
genderTextField.keyboardToolbar.isHidden = true
@ -347,7 +347,6 @@ extension KycForm1ViewController: IndicatorInfoProvider {
}
}
extension KycForm1ViewController: UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
switch textField {
@ -362,10 +361,14 @@ extension KycForm1ViewController: UITextFieldDelegate {
}
}
extension KycForm1ViewController {
private func showGenderPicker() {
let alertcontroller = UIAlertController.init(title: "gender_text".localized(), message: nil, preferredStyle: .actionSheet)
let alertcontroller = UIAlertController(
title: "gender_text".localized(),
message: nil,
preferredStyle: .actionSheet
)
alertcontroller.view.tintColor = UIColor.init(hex: "#7b7a7a")
let maleAction = UIAlertAction(title: Constants.male, style: .default, handler: { _ in
self.genderTextField.text = Constants.male
@ -385,7 +388,6 @@ extension KycForm1ViewController {
self.genderTextField.sendActions(for: .editingChanged)
})
let cancelAction = UIAlertAction(title: Constants.cancelTitleString, style: .cancel, handler: nil)
alertcontroller.addAction(maleAction)
@ -393,10 +395,15 @@ extension KycForm1ViewController {
alertcontroller.addAction(otherAction)
alertcontroller.addAction(cancelAction)
if UIDevice.current.userInterfaceIdiom == .pad { // iPad
if let popoverController = alertcontroller.popoverPresentationController { // ActionSheet .
if UIDevice.current.userInterfaceIdiom == .pad {
if let popoverController = alertcontroller.popoverPresentationController {
popoverController.sourceView = self.view
popoverController.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
popoverController.sourceRect = CGRect(
x: self.view.bounds.midX,
y: self.view.bounds.midY,
width: 0,
height: 0
)
popoverController.permittedArrowDirections = []
self.present(alertcontroller, animated: true, completion: nil)
@ -420,7 +427,7 @@ extension KycForm1ViewController {
textField.removeNonASCII()
}
let tf = textField as! ValidationTextField
guard let tf = textField as? ValidationTextField else { return }
switch tf {
case firstNameTextField:
@ -441,7 +448,7 @@ extension KycForm1ViewController {
break
}
isValid = validDic.reduce(true){ $0 && $1.value}
isValid = validDic.allSatisfy { $0.value }
}
private func generateModel() -> KycForm1Model {

14
GME Remit/Modules/RegisterModules/KYC/kycForm1/User Interface/Wireframe/kycForm1Wireframe.swift

@ -10,7 +10,7 @@ import UIKit
class KycForm1Wireframe {
weak var view: UIViewController!
var delegate: KYCForm1Delegate?
weak var delegate: KYCForm1Delegate?
private weak var output: KycForm1WireframeOutput?
}
@ -61,8 +61,6 @@ extension KycForm1Wireframe: KycForm1WireframeInput {
}
}
extension KycForm1Wireframe: TablePresenterDelegate {
func tablePresenterView(_ viewController: TablePresenterViewController) -> TablePresenterConfiguration {
@ -101,12 +99,12 @@ extension KycForm1Wireframe: TablePresenterDelegate {
isUseSearchBar: true
)
}
}
func tablePresenterView(_ viewController: TablePresenterViewController, didSelectModel model: TablePresenterProtocol?) {
func tablePresenterView(
_ viewController: TablePresenterViewController,
didSelectModel model: TablePresenterProtocol?
) {
switch viewController.view.tag {
case 0:
output?.setOccupation(model as? KeyValueModel)
@ -114,7 +112,5 @@ extension KycForm1Wireframe: TablePresenterDelegate {
output?.setProvience(model as? KeyValueModel)
default: break
}
}
}

9
GME Remit/Modules/RegisterModules/KYC/kycForm2/User Interface/Wireframe/kycForm2Wireframe.swift

@ -10,7 +10,7 @@ import UIKit
class KycForm2Wireframe {
weak var view: UIViewController!
var delegate: KYCForm2Delegate?
weak var delegate: KYCForm2Delegate?
private weak var output: kycForm2WireframeOutput?
}
@ -106,7 +106,10 @@ extension KycForm2Wireframe: TablePresenterDelegate {
)
}
func tablePresenterView(_ viewController: TablePresenterViewController, didSelectModel model: TablePresenterProtocol?) {
func tablePresenterView(
_ viewController: TablePresenterViewController,
didSelectModel model: TablePresenterProtocol?
) {
switch viewController.view.tag {
case 0:
output?.setSelectedBank(model as? KeyValueModel)
@ -119,6 +122,4 @@ extension KycForm2Wireframe: TablePresenterDelegate {
}
}
}

6
GME Remit/Modules/RegisterModules/KYC/kycForm3/User Interface/View/kycForm3ViewController.swift

@ -11,7 +11,6 @@ import XLPagerTabStrip
import PMAlertController
import VisualEffectView
enum PictureType: Int {
case front
case back
@ -69,7 +68,7 @@ class KycForm3ViewController: UIViewController {
// MARK: Properties
var presenter: KycForm3ModuleInterface?
var delegate: KYCForm3Delegate?
weak var delegate: KYCForm3Delegate?
var multiMediaManager: MultiMediaManager?
var imageCropper: ImageCroper?
@ -95,7 +94,6 @@ class KycForm3ViewController: UIViewController {
// MARK: IBActions
// sample actions
@IBAction func front(_ sender: UIButton) {
@ -126,7 +124,6 @@ class KycForm3ViewController: UIViewController {
self.delegate?.submit(model: generateModel())
}
// MARK: Other Functions
private func setup() {
@ -237,4 +234,3 @@ extension KycForm3ViewController: ImageCropperDelegate {
self.alert(type: .error, message: error.localizedDescription)
}
}

48
GME Remit/Modules/RegisterModules/KYC/kycForm3/User Interface/Wireframe/kycForm3Wireframe.swift

@ -9,32 +9,32 @@
import UIKit
class KycForm3Wireframe {
weak var view: UIViewController!
var delegate: KYCForm3Delegate?
weak var view: UIViewController!
weak var delegate: KYCForm3Delegate?
}
extension KycForm3Wireframe: KycForm3WireframeInput {
var storyboardName: String {return "kycForm3"}
func getMainView() -> UIViewController {
let service = KycForm3Service()
let interactor = KycForm3Interactor(service: service)
let presenter = KycForm3Presenter()
let viewController = viewControllerFromStoryboard(of: KycForm3ViewController.self)
viewController.delegate = self.delegate
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
var storyboardName: String {return "kycForm3"}
func getMainView() -> UIViewController {
let service = KycForm3Service()
let interactor = KycForm3Interactor(service: service)
let presenter = KycForm3Presenter()
let viewController = viewControllerFromStoryboard(of: KycForm3ViewController.self)
viewController.delegate = self.delegate
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
self.view = viewController
return viewController
}
func getMainViewWithDelegate(delegate: KYCForm3Delegate) -> UIViewController {
self.delegate = delegate
return self.getMainView()
}
self.view = viewController
return viewController
}
func getMainViewWithDelegate(delegate: KYCForm3Delegate) -> UIViewController {
self.delegate = delegate
return self.getMainView()
}
}

8
GME Remit/Modules/RegisterModules/PennyTest/User Interface/View/PennyTestViewController.swift

@ -30,7 +30,13 @@ class PennyTestViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(self.closePennyTest(sender:)), name: NSNotification.Name.init("closePennyTest"), object: nil)
NotificationCenter.default.addObserver(
self,
selector: #selector(self.closePennyTest(sender:)),
name: NSNotification.Name.init("closePennyTest"),
object: nil
)
self.setup()
}

13
GME Remit/Modules/RegisterModules/PennyTestSubmit/Application Logic/Service/PennyTestSubmitServiceType.swift

@ -8,15 +8,6 @@
import Foundation
protocol PennyTestSubmitServiceType: class {
}
protocol PennyTestVerificationService {
// func verify(param: [String: String], success)
}
protocol PennyTestSubmitServiceType: class {}
protocol PennyTestVerificationService {}

54
GME Remit/Modules/RegisterModules/Register/Application Logic/Service/RegisterServiceType.swift

@ -11,8 +11,6 @@ import Alamofire
protocol RegisterServiceType: class, CommonServiceType, RegisterUserService { }
protocol RegisterUserService: ApiServiceType {
func register(
model: RegisterRequestModel,
@ -23,31 +21,29 @@ protocol RegisterUserService: ApiServiceType {
}
extension RegisterUserService {
func register(
model: RegisterRequestModel,
token: String,
success: @escaping (String?) -> Void,
failure: @escaping (Error) -> Void
) {
APIRouter
.customerRegister(
registerModel: model,
firebaseToken: token
)
.request(
needsAuthorization: false,
success: {(response: ResponseMessage) in
if (response.errorCode ?? "") == "1" {
let error = NSError(domain: "Network", code: 0, message: response.message ?? "")
failure(error)
} else {
success(response.message)
}
},
failure: {failure($0)}
)
}
func register(
model: RegisterRequestModel,
token: String,
success: @escaping (String?) -> Void,
failure: @escaping (Error) -> Void
) {
APIRouter
.customerRegister(
registerModel: model,
firebaseToken: token
)
.request(
needsAuthorization: false,
success: {(response: ResponseMessage) in
if (response.errorCode ?? "") == "1" {
let error = NSError(domain: "Network", code: 0, message: response.message ?? "")
failure(error)
} else {
success(response.message)
}
},
failure: {failure($0)}
)
}
}

2
GME Remit/Modules/RegisterModules/Register/User Interface/Wireframe/RegisterWireframe.swift

@ -39,7 +39,7 @@ extension RegisterWireframe: RegisterWireframeInput {
if let navigation = self.view.navigationController {
loginWireFrame.pushMainView(in: navigation)
}
}else {
} else {
self.view.navigationController?.popViewController(animated: true)
}
}

1
GME Remit/Modules/RemittanceModules/DomesticModules/DomesticRemit/Application Logic/Model/DomesticRemitResponseModel.swift

@ -6,7 +6,6 @@
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import ObjectMapper
struct DomesticRemitResponseModel: Mappable {

2
GME Remit/Modules/RemittanceModules/DomesticModules/RecentHistories/Module Interface/RecentHistoriesModuleInterface.swift

@ -12,6 +12,6 @@ protocol RecentHistoriesModuleInterface: class {
to: String
)
func presentDatePicker(completion: ((_ from: String?, _ to: String?) -> ())?)
func presentDatePicker(completion: ((_ from: String?, _ to: String?) -> Void)?)
}

8
GME Remit/Modules/RemittanceModules/DomesticModules/RecentHistories/User Interface/Wireframe/RecentHistoriesWireframe.swift

@ -11,7 +11,7 @@ import UIKit
class RecentHistoriesWireframe {
weak var view: UIViewController!
weak var output: RecentHistoriesWireframeOutput?
private var delegate: RecentHistoriesDelegate?
private weak var delegate: RecentHistoriesDelegate?
}
extension RecentHistoriesWireframe: RecentHistoriesWireframeInput {
@ -48,12 +48,12 @@ extension RecentHistoriesWireframe: RecentHistoriesWireframeInput {
source.present(vc, animated: true, completion: nil)
}
func presentDatePicker(completion: ((_ from: String?, _ to: String?) -> ())?) {
let datePickerViewController = UIStoryboard
func presentDatePicker(completion: ((_ from: String?, _ to: String?) -> Void)?) {
guard let datePickerViewController = UIStoryboard
.init(name: "TransactionHistoryDatePicker", bundle: nil)
.instantiateViewController(
withIdentifier: "DatePickerViewController"
) as! DatePickerViewController
) as? DatePickerViewController else { return }
datePickerViewController.completion = completion

2
GME Remit/Modules/RemittanceModules/DomesticModules/RecentHistories/User Interface/Wireframe/RecentHistoriesWireframeInputOutput.swift

@ -9,7 +9,7 @@
import Foundation
protocol RecentHistoriesWireframeInput: WireframeInput {
func presentDatePicker(completion: ((_ from: String?, _ to: String?) -> ())?)
func presentDatePicker(completion: ((_ from: String?, _ to: String?) -> Void)?)
}
protocol RecentHistoriesWireframeOutput: class {

31
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Application Logic/Interactor/PaymentSelectionInteractor.swift

@ -1,31 +0,0 @@
//
// PaymentSelectionInteractor.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class PaymentSelectionInteractor {
// MARK: Properties
weak var output: PaymentSelectionInteractorOutput?
private let service: PaymentSelectionServiceType
// MARK: Initialization
init(service: PaymentSelectionServiceType) {
self.service = service
}
// MARK: Converting entities
}
// MARK: PaymentSelection interactor input interface
extension PaymentSelectionInteractor: PaymentSelectionInteractorInput {
}

15
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Application Logic/Interactor/PaymentSelectionInteractorIO.swift

@ -1,15 +0,0 @@
//
// PaymentSelectionInteractorIO.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol PaymentSelectionInteractorInput: class {
}
protocol PaymentSelectionInteractorOutput: class {
}

19
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Application Logic/Service/PaymentSelectionService.swift

@ -1,19 +0,0 @@
//
// PaymentSelectionService.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class PaymentSelectionService: PaymentSelectionServiceType {
// MARK: Properties
// MARK: Initialization
// MARK: Data management
}

13
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Application Logic/Service/PaymentSelectionServiceType.swift

@ -1,13 +0,0 @@
//
// PaymentSelectionServiceType.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol PaymentSelectionServiceType: class {
}

11
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/Module Interface/PaymentSelectionModuleInterface.swift

@ -1,11 +0,0 @@
//
// PaymentSelectionModuleInterface.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol PaymentSelectionModuleInterface: class {
}

32
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/Presenter/PaymentSelectionPresenter.swift

@ -1,32 +0,0 @@
//
// PaymentSelectionPresenter.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class PaymentSelectionPresenter {
// MARK: Properties
weak var view: PaymentSelectionViewInterface?
var interactor: PaymentSelectionInteractorInput?
var wireframe: PaymentSelectionWireframeInput?
// MARK: Converting entities
}
// MARK: PaymentSelection module interface
extension PaymentSelectionPresenter: PaymentSelectionModuleInterface {
}
// MARK: PaymentSelection interactor output interface
extension PaymentSelectionPresenter: PaymentSelectionInteractorOutput {
}

27
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/View/Cells/PaymentSelectionTableViewCell.swift

@ -1,27 +0,0 @@
//
// PaymentSelectionTableViewCell.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class PaymentSelectionTableViewCell: UITableViewCell {
@IBOutlet weak var titlelabel: UILabel!
@IBOutlet weak var accountLabel: UILabel!
var acunt: Account?
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func setup() {
titlelabel.text = acunt?.bankName
accountLabel.text = acunt?.accountNumMasked
}
}

194
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/View/PaymentSelection.storyboard

@ -1,194 +0,0 @@
<?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="HSb-ou-7T5">
<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-Regular.otf">
<string>SanFranciscoDisplay-Regular</string>
</array>
<array key="SanFranciscoDisplay-Semibold.otf">
<string>SanFranciscoDisplay-Semibold</string>
</array>
</customFonts>
<scenes>
<!--PaymentSelection-->
<scene sceneID="R60-Pu-Hpy">
<objects>
<viewController storyboardIdentifier="PaymentSelectionViewController" title="PaymentSelection" modalTransitionStyle="crossDissolve" modalPresentationStyle="overFullScreen" id="HSb-ou-7T5" customClass="PaymentSelectionViewController" customModule="GME_Remit" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="9Uc-9s-KgO">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EZ8-nK-JSF" userLabel="TransparentView">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<subviews>
<view opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FRs-VK-sJB" userLabel="mainView">
<rect key="frame" x="20" y="180" width="335" height="467"/>
<subviews>
<tableView opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="atI-We-kZt">
<rect key="frame" x="0.0" y="0.0" width="335" height="403"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<view key="tableFooterView" contentMode="scaleToFill" id="Ne9-9p-cHS">
<rect key="frame" x="0.0" y="108" width="335" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="PaymentSelectionTableViewCell" rowHeight="80" id="34o-kc-rwZ" customClass="PaymentSelectionTableViewCell" customModule="GME_Remit" customModuleProvider="target">
<rect key="frame" x="0.0" y="28" width="335" height="80"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="34o-kc-rwZ" id="JvE-dP-tuR">
<rect key="frame" x="0.0" y="0.0" width="335" height="80"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gLK-dh-JSU">
<rect key="frame" x="0.0" y="0.0" width="335" height="80"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tQy-x7-NXV">
<rect key="frame" x="20" y="20" width="40" height="40"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="D8X-WM-woC"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillProportionally" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="n1C-Wg-wgf">
<rect key="frame" x="80" y="20" width="245" height="41"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Bla Bla Account" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8Q4-aQ-m9Z">
<rect key="frame" x="0.0" y="0.0" width="245" height="18.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="17"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Bla Bla Account" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FMg-Nt-IHZ">
<rect key="frame" x="0.0" y="23.5" width="245" height="17.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="17"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="8Q4-aQ-m9Z" firstAttribute="width" secondItem="FMg-Nt-IHZ" secondAttribute="width" id="F3l-E3-y1I"/>
</constraints>
</stackView>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_add" translatesAutoresizingMaskIntoConstraints="NO" id="idZ-Fs-idm">
<rect key="frame" x="20" y="20" width="40" height="40"/>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="n1C-Wg-wgf" secondAttribute="bottom" constant="19" id="00T-wz-3hc"/>
<constraint firstItem="n1C-Wg-wgf" firstAttribute="top" secondItem="gLK-dh-JSU" secondAttribute="top" constant="20" id="50J-Bi-7FX"/>
<constraint firstItem="tQy-x7-NXV" firstAttribute="centerY" secondItem="gLK-dh-JSU" secondAttribute="centerY" id="8Rw-u8-Ztd"/>
<constraint firstItem="idZ-Fs-idm" firstAttribute="centerX" secondItem="tQy-x7-NXV" secondAttribute="centerX" id="8t0-mx-QQA"/>
<constraint firstAttribute="trailing" secondItem="n1C-Wg-wgf" secondAttribute="trailing" constant="10" id="Dh1-CK-yTo"/>
<constraint firstAttribute="height" constant="80" id="Kn0-XH-Rg1"/>
<constraint firstItem="n1C-Wg-wgf" firstAttribute="leading" secondItem="tQy-x7-NXV" secondAttribute="trailing" constant="20" id="RQE-gg-6RX"/>
<constraint firstItem="idZ-Fs-idm" firstAttribute="centerY" secondItem="tQy-x7-NXV" secondAttribute="centerY" id="VAq-u6-69Z"/>
<constraint firstItem="idZ-Fs-idm" firstAttribute="width" secondItem="tQy-x7-NXV" secondAttribute="width" id="Zxj-w7-e0h"/>
<constraint firstItem="tQy-x7-NXV" firstAttribute="top" secondItem="gLK-dh-JSU" secondAttribute="top" constant="20" id="cv4-gT-itG"/>
<constraint firstItem="tQy-x7-NXV" firstAttribute="leading" secondItem="gLK-dh-JSU" secondAttribute="leading" constant="20" id="dy8-uf-JCG"/>
<constraint firstItem="idZ-Fs-idm" firstAttribute="height" secondItem="tQy-x7-NXV" secondAttribute="height" id="mmP-Ml-6Yp"/>
<constraint firstAttribute="bottom" secondItem="tQy-x7-NXV" secondAttribute="bottom" constant="20" id="qu1-N4-RYz"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstItem="gLK-dh-JSU" firstAttribute="leading" secondItem="JvE-dP-tuR" secondAttribute="leading" id="4Ad-t1-OnT"/>
<constraint firstAttribute="bottom" secondItem="gLK-dh-JSU" secondAttribute="bottom" id="NI4-mD-7cg"/>
<constraint firstItem="gLK-dh-JSU" firstAttribute="top" secondItem="JvE-dP-tuR" secondAttribute="top" id="NsI-rl-1qT"/>
<constraint firstAttribute="trailing" secondItem="gLK-dh-JSU" secondAttribute="trailing" id="dNE-MH-xpV"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="accountLabel" destination="FMg-Nt-IHZ" id="1Xk-Xg-cvx"/>
<outlet property="titlelabel" destination="8Q4-aQ-m9Z" id="L9E-Lx-2BR"/>
</connections>
</tableViewCell>
</prototypes>
</tableView>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oHg-90-q29">
<rect key="frame" x="10" y="413" width="315" height="44"/>
<color key="backgroundColor" red="0.92941176469999998" green="0.1058823529" blue="0.14117647059999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="LbW-pW-Xzt"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Semibold" family="San Francisco Display" pointSize="16"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="Close">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="close:" destination="HSb-ou-7T5" eventType="touchUpInside" id="hS6-FK-3s0"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="atI-We-kZt" firstAttribute="top" secondItem="FRs-VK-sJB" secondAttribute="top" id="GBI-6W-QHq"/>
<constraint firstAttribute="trailing" secondItem="atI-We-kZt" secondAttribute="trailing" id="ZHz-Tx-zK3"/>
<constraint firstAttribute="bottom" secondItem="oHg-90-q29" secondAttribute="bottom" constant="10" id="aBc-P5-2vy"/>
<constraint firstItem="atI-We-kZt" firstAttribute="leading" secondItem="FRs-VK-sJB" secondAttribute="leading" id="blE-ru-A2d"/>
<constraint firstAttribute="trailing" secondItem="oHg-90-q29" secondAttribute="trailing" constant="10" id="g5i-hQ-AJ2"/>
<constraint firstItem="oHg-90-q29" firstAttribute="leading" secondItem="FRs-VK-sJB" secondAttribute="leading" constant="10" id="mrL-nA-SFz"/>
<constraint firstItem="oHg-90-q29" firstAttribute="top" secondItem="atI-We-kZt" secondAttribute="bottom" constant="10" id="peO-e7-wjT"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.39984384048356159" colorSpace="custom" customColorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="FRs-VK-sJB" firstAttribute="height" secondItem="EZ8-nK-JSF" secondAttribute="height" multiplier="0.7:1" id="91P-L7-2Kp"/>
<constraint firstAttribute="bottom" secondItem="FRs-VK-sJB" secondAttribute="bottom" constant="20" id="Ihw-O4-qdW"/>
<constraint firstItem="FRs-VK-sJB" firstAttribute="top" secondItem="EZ8-nK-JSF" secondAttribute="top" constant="60" id="XeD-Y9-CaM"/>
<constraint firstItem="FRs-VK-sJB" firstAttribute="leading" secondItem="EZ8-nK-JSF" secondAttribute="leading" constant="20" id="bbZ-co-k4c"/>
<constraint firstAttribute="trailing" secondItem="FRs-VK-sJB" secondAttribute="trailing" constant="20" id="viJ-Pe-vR8"/>
<constraint firstAttribute="bottom" secondItem="FRs-VK-sJB" secondAttribute="bottom" constant="40" id="zSe-LA-nBA"/>
</constraints>
<variation key="default">
<mask key="constraints">
<exclude reference="XeD-Y9-CaM"/>
<exclude reference="zSe-LA-nBA"/>
</mask>
</variation>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="EZ8-nK-JSF" secondAttribute="bottom" id="8ed-sq-lEa"/>
<constraint firstItem="efA-aX-q5R" firstAttribute="trailing" secondItem="EZ8-nK-JSF" secondAttribute="trailing" id="D6O-ru-gXz"/>
<constraint firstItem="EZ8-nK-JSF" firstAttribute="top" secondItem="9Uc-9s-KgO" secondAttribute="top" id="hBz-do-YP8"/>
<constraint firstItem="EZ8-nK-JSF" firstAttribute="leading" secondItem="efA-aX-q5R" secondAttribute="leading" id="v7m-l0-m31"/>
</constraints>
<viewLayoutGuide key="safeArea" id="efA-aX-q5R"/>
</view>
<connections>
<outlet property="closeButton" destination="oHg-90-q29" id="9sk-Cp-zlL"/>
<outlet property="mainView" destination="FRs-VK-sJB" id="E53-FG-gps"/>
<outlet property="tableView" destination="atI-We-kZt" id="ndU-BN-ohp"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="8je-5K-XuW" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-279.19999999999999" y="123.68815592203899"/>
</scene>
</scenes>
<resources>
<image name="ic_add" width="63" height="63"/>
</resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</document>

95
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/View/PaymentSelectionViewController.swift

@ -1,95 +0,0 @@
//
// PaymentSelectionViewController.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class PaymentSelectionViewController: UIViewController {
struct StringConstants {
// Todo ccr
let closeText = "penny_test_close_text".localized()
}
// MARK: IBOutlets
@IBOutlet weak var mainView: UIView!
@IBOutlet weak var closeButton: UIButton!
// MARK: Properties
var accounts: [Account]?
var onSelection: ((Account) -> Void)?
@IBOutlet weak var tableView: UITableView!
var presenter: PaymentSelectionModuleInterface?
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
self.setup()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
mainView.bottomToOrigin()
}
// MARK: IBActions
@IBAction func close(_ sender: Any) {
mainView.originToBottom() {
self.dismiss(animated: true, completion: nil)
}
}
// MARK: Other Functions
private func setup() {
// all setup should be done here
self.mainView.layer.cornerRadius = 5
self.mainView.clipsToBounds = true
self.tableView.dataSource = self
self.tableView.delegate = self
self.tableView.reloadData()
configureText()
mainView.layer.cornerRadius = 5
closeButton.layer.cornerRadius = 5
}
private func configureText() {
self.closeButton.setTitle(StringConstants().closeText, for: UIControl.State.normal)
}
}
// MARK: PaymentSelectionViewInterface
extension PaymentSelectionViewController: PaymentSelectionViewInterface {
}
extension PaymentSelectionViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if self.accounts?.elementAt(index: indexPath.row) != nil {
mainView.originToBottom() {
self.dismiss(animated: true, completion: nil)
}
}
}
}
extension PaymentSelectionViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.accounts?.count ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let model = tableView.dequeueReusableCell(withIdentifier: "PaymentSelectionTableViewCell") as? PaymentSelectionTableViewCell else {
return UITableViewCell()
}
model.acunt = accounts?.elementAt(index: indexPath.row)
model.setup()
return model
}
}

10
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/View/PaymentSelectionViewInterface.swift

@ -1,10 +0,0 @@
//
// PaymentSelectionViewInterface.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol PaymentSelectionViewInterface: class {
}

43
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/Wireframe/PaymentSelectionWireframe.swift

@ -1,43 +0,0 @@
//
// PaymentSelectionWireframe.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class PaymentSelectionWireframe {
weak var view: UIViewController!
var accounts: [Account]?
var onSeelction: ((Account) -> ())?
}
extension PaymentSelectionWireframe: PaymentSelectionWireframeInput {
var storyboardName: String {return "PaymentSelection"}
func getMainView() -> UIViewController {
let service = PaymentSelectionService()
let interactor = PaymentSelectionInteractor(service: service)
let presenter = PaymentSelectionPresenter()
let viewController = viewControllerFromStoryboard(of: PaymentSelectionViewController.self)
viewController.accounts = self.accounts
viewController.onSelection = self.onSeelction
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
self.view = viewController
return viewController
}
func openPaymentSelection(accounts: [Account], onSelection: @escaping (Account) -> (), source: UIViewController) {
self.accounts = accounts
self.onSeelction = onSelection
self.openMainView(source: source)
}
}

13
GME Remit/Modules/RemittanceModules/OverseasModules/PaymentSelection/User Interface/Wireframe/PaymentSelectionWireframeInput.swift

@ -1,13 +0,0 @@
//
// PaymentSelectionWireframeInput.swift
// GME Remit
//
// Created by gme_2 on 07/01/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol PaymentSelectionWireframeInput: WireframeInput {
}

46
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Application Logic/Interactor/ResendInteractor.swift

@ -1,46 +0,0 @@
//
// ResendInteractor.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ResendInteractor {
// MARK: Properties
weak var output: ResendInteractorOutput?
private let service: ResendServiceType
// MARK: Initialization
init(service: ResendServiceType) {
self.service = service
}
// MARK: Converting entities
}
// MARK: Resend interactor input interface
extension ResendInteractor: ResendInteractorInput {
func fetchList(fromDate: String?, toDate: String?) {
let userName = Utility.getMyUserName()
var param: [String: String] = [:]
if let fromDate = fromDate {
param["FromDate"] = fromDate
}
if let toDate = toDate {
param["ToDate"] = toDate
}
self.service.fetchResendService(user: userName, param: param, success: { (model) in
guard let model = model else {return}
self.output?.show(model: model)
}) { (error) in
self.output?.show(error: error)
}
}
}

16
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Application Logic/Interactor/ResendInteractorIO.swift

@ -1,16 +0,0 @@
//
// ResendInteractorIO.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol ResendInteractorInput: class {
func fetchList(fromDate: String?, toDate: String?)
}
protocol ResendInteractorOutput: class {
func show(model: ResendListModel)
func show(error: Error)
}

18
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Application Logic/Service/ResendService.swift

@ -1,18 +0,0 @@
//
// ResendService.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ResendService: ResendServiceType {
// MARK: Properties
// MARK: Initialization
// MARK: Data management
}

38
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Application Logic/Service/ResendServiceType.swift

@ -1,38 +0,0 @@
//
// ResendServiceType.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
import Alamofire
protocol ResendServiceType: class , FetchResendService {
}
protocol FetchResendService: ApiServiceType {
func fetchResendService(user: String, param: [String: String]?, success: @escaping ((ResendListModel?) -> ()), failure: @escaping ((Error) -> ()))
}
extension FetchResendService {
func fetchResendService(user: String, param: [String: String]?, success: @escaping ((ResendListModel?) -> ()), failure: @escaping ((Error) -> ())) {
let url = baseUrl + "/resend/list"
self.auth.request(method: .post, url: url, params: param, success: { (response: ResendListModelContainer) in
if (response.errorCode ?? "") == "1" {
let error = NSError.init(domain: "Network", code: 0, userInfo: [NSLocalizedDescriptionKey : response.message ?? ""])
failure(error)
}else {
let model = response.data
success(model)
}
}) { (error) in
failure(error)
}
}
}

13
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/Module Interface/ResendModuleInterface.swift

@ -1,13 +0,0 @@
//
// ResendModuleInterface.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol ResendModuleInterface: class {
func viewIsReady()
func fetchList(fromDate: String, toDate: String)
func filter(searchText: String)
}

71
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/Presenter/ResendPresenter.swift

@ -1,71 +0,0 @@
//
// ResendPresenter.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ResendPresenter {
// MARK: Properties
var transactions: [ResendTransactionModel] = []
var filteredTransaction: [ResendTransactionModel] = []
weak var view: ResendViewInterface?
var interactor: ResendInteractorInput?
var wireframe: ResendWireframeInput?
// MARK: Converting entities
}
// MARK: Resend module interface
extension ResendPresenter: ResendModuleInterface {
func fetchList(fromDate: String, toDate: String) {
self.interactor?.fetchList(fromDate: fromDate, toDate: toDate)
}
func viewIsReady() {
self.view?.showLoading()
self.interactor?.fetchList(fromDate: nil, toDate: nil)
}
func filter(searchText: String) {
if searchText.isEmpty {
self.filteredTransaction = self.transactions
return
}
self.filteredTransaction = self.transactions.filter({
return ($0.controlNumber ?? "").lowercased().contains(searchText) || ($0.bankName ?? "").lowercased().contains(searchText) || ($0.recieverName ?? "").lowercased().contains(searchText)
}).sorted(by: { (model, _) in
return (model.controlNumber ?? "").lowercased().hasPrefix(searchText) || (model.recieverName ?? "").lowercased().hasPrefix(searchText) || (model.bankName ?? "").lowercased().hasPrefix(searchText)
})
self.view?.show(models: filteredTransaction)
}
}
// MARK: Resend interactor output interface
extension ResendPresenter: ResendInteractorOutput {
func show(error: Error) {
self.view?.hideLoading()
self.view?.hideLoading()
}
func show(model: ResendListModel) {
self.view?.hideLoading()
self.transactions = model.transactions ?? []
self.view?.show(model: model)
}
}

50
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/View/Cell/ResendTableViewCell.swift

@ -1,50 +0,0 @@
//
// ResendTableViewCell.swift
// GME Remit
//
// Created by gme_2 on 19/03/2019.
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class ResendTableViewCell: UITableViewCell {
enum Status: String {
case paid
case unpaid
}
@IBOutlet weak var bgView: UIView!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var amountLabel: UILabel!
@IBOutlet weak var paymentMethodLabel: UILabel!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var transactionNumberLabel: UILabel!
@IBOutlet weak var controlNumberLabel: UILabel!
@IBOutlet weak var bankDetailLabel: UILabel!
var model: ResendTransactionModel?
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func setup() {
self.dateLabel.text = model?.sendDate
self.amountLabel.text = (model?.pAmt ?? "") + " " + (model?.pCurrency ?? "")
self.paymentMethodLabel.text = model?.payOutMode
self.nameLabel.text = model?.recieverName
let paystatus = model?.payStatus ?? ""
self.transactionNumberLabel.text = paystatus.uppercased() // show pay status, paid or unpaid
self.transactionNumberLabel.textColor = .white
self.transactionNumberLabel.layer.cornerRadius = 5
self.controlNumberLabel.text = self.model?.controlNumber
let status = Status.init(rawValue: paystatus.lowercased()) ?? .unpaid
self.transactionNumberLabel.backgroundColor = status == .paid ? .themeBlue : .themeRed
self.bankDetailLabel.text = model?.bankName
amountLabel.textColor = .themeRed
}
}

291
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/View/Resend.storyboard

@ -1,291 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<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>
<array key="SanFranciscoDisplay-Semibold.otf">
<string>SanFranciscoDisplay-Semibold</string>
</array>
</customFonts>
<scenes>
<!--Resend View Controller-->
<scene sceneID="esg-O8-5fQ">
<objects>
<viewController storyboardIdentifier="ResendViewController" id="ini-e3-PH4" customClass="ResendViewController" customModule="GME_Remit" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="dvf-dP-nbX">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BQR-ag-XpK">
<rect key="frame" x="0.0" y="20" width="375" height="647"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kqy-UM-ppa">
<rect key="frame" x="0.0" y="0.0" width="375" height="50"/>
<subviews>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Search with Control No..." textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="DUl-wm-L0p">
<rect key="frame" x="15" y="7.5" width="311" height="35"/>
<constraints>
<constraint firstAttribute="height" constant="35" id="ZU1-jY-pl7"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rNr-vr-KE8">
<rect key="frame" x="341" y="14" width="24" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="24" id="WSp-vk-uxX"/>
<constraint firstAttribute="height" constant="22" id="WU5-kc-EnC"/>
</constraints>
<state key="normal" image="ic_calender"/>
<connections>
<action selector="openSearchFilter:" destination="ini-e3-PH4" eventType="touchUpInside" id="ci9-TE-5eM"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" red="0.97647058819999999" green="0.97647058819999999" blue="0.97647058819999999" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="DUl-wm-L0p" firstAttribute="leading" secondItem="Kqy-UM-ppa" secondAttribute="leading" constant="15" id="2VX-To-lrq"/>
<constraint firstItem="rNr-vr-KE8" firstAttribute="leading" secondItem="DUl-wm-L0p" secondAttribute="trailing" constant="15" id="4Gf-H4-L0R"/>
<constraint firstItem="rNr-vr-KE8" firstAttribute="centerY" secondItem="Kqy-UM-ppa" secondAttribute="centerY" id="IHF-Xl-G93"/>
<constraint firstItem="DUl-wm-L0p" firstAttribute="centerY" secondItem="Kqy-UM-ppa" secondAttribute="centerY" id="cea-VS-XmO"/>
<constraint firstAttribute="height" constant="50" id="jcV-RK-Oih"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="39p-cv-uyM">
<rect key="frame" x="0.0" y="48" width="375" height="599"/>
<subviews>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="No Transaction Found" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ujq-FS-I1H">
<rect key="frame" x="122" y="277.5" width="131" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="lDS-eC-vrU"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="0.70315250880000002" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="onDrag" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="s07-ms-I7n">
<rect key="frame" x="10" y="55" width="355" height="544"/>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="ResendTableViewCell" rowHeight="120" id="IDR-UG-A5a" customClass="ResendTableViewCell" customModule="GME_Remit" customModuleProvider="target">
<rect key="frame" x="0.0" y="28" width="355" height="120"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="IDR-UG-A5a" id="2ii-qB-Cru">
<rect key="frame" x="0.0" y="0.0" width="355" height="120"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="n76-t2-wdT">
<rect key="frame" x="5" y="5" width="345" height="110"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="8Ky-ya-IdP">
<rect key="frame" x="15" y="10" width="315" height="66.5"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Xkq-N0-ok7">
<rect key="frame" x="0.0" y="0.0" width="315" height="14.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" text="Tue, 19/12/2017" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ik8-JU-GZk">
<rect key="frame" x="0.0" y="0.0" width="157.5" height="14.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Amount" textAlignment="right" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hiE-Xo-tO7">
<rect key="frame" x="157.5" y="0.0" width="157.5" height="14.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3kc-yR-MOT">
<rect key="frame" x="0.0" y="14.5" width="315" height="36"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="200" verticalCompressionResistancePriority="700" text="To: Dhan Singh Saud To: Dhan Singh Saud" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kNZ-hY-07f">
<rect key="frame" x="0.0" y="0.0" width="157.5" height="36"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="30" id="sF3-gW-FNy"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="15"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="255" verticalHuggingPriority="251" horizontalCompressionResistancePriority="755" text="-1,000,000" textAlignment="right" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bim-W1-ROr">
<rect key="frame" x="157.5" y="0.0" width="157.5" height="36"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="18"/>
<color key="textColor" red="0.92941176469999998" green="0.10980392160000001" blue="0.14117647059999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3yv-W2-6iD">
<rect key="frame" x="0.0" y="50.5" width="315" height="16"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" text="Cash Payment" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pnu-bl-6Sw">
<rect key="frame" x="0.0" y="0.0" width="263" height="16"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Semibold" family="San Francisco Display" pointSize="12"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Unpaid" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bZU-Fy-Wgb">
<rect key="frame" x="263" y="0.0" width="52" height="16"/>
<constraints>
<constraint firstAttribute="width" constant="52" id="WcK-vF-K6m"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Semibold" family="San Francisco Display" pointSize="13"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="InP-8f-D97" userLabel="bank">
<rect key="frame" x="15" y="83" width="315" height="17"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" text="GLOBAL BANK PRIAATE LIMITED KATHMANDU" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="brQ-QI-mse">
<rect key="frame" x="0.0" y="0.0" width="315" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="0.84999999999999998" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="InP-8f-D97" firstAttribute="trailing" secondItem="8Ky-ya-IdP" secondAttribute="trailing" id="1bc-0H-tfx"/>
<constraint firstItem="8Ky-ya-IdP" firstAttribute="top" secondItem="n76-t2-wdT" secondAttribute="top" constant="10" id="9N3-iG-Jjf"/>
<constraint firstAttribute="trailing" secondItem="8Ky-ya-IdP" secondAttribute="trailing" constant="15" id="HDg-OC-tbl"/>
<constraint firstItem="InP-8f-D97" firstAttribute="top" secondItem="8Ky-ya-IdP" secondAttribute="bottom" constant="6.5" id="rRZ-3V-Yr9"/>
<constraint firstItem="8Ky-ya-IdP" firstAttribute="leading" secondItem="n76-t2-wdT" secondAttribute="leading" constant="15" id="rzO-r4-kwb"/>
<constraint firstItem="InP-8f-D97" firstAttribute="leading" secondItem="8Ky-ya-IdP" secondAttribute="leading" id="xmZ-hR-flv"/>
<constraint firstAttribute="bottom" secondItem="InP-8f-D97" secondAttribute="bottom" constant="10" id="za4-Ft-OMR"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="n76-t2-wdT" secondAttribute="trailing" constant="5" id="RQJ-Di-USc"/>
<constraint firstItem="n76-t2-wdT" firstAttribute="leading" secondItem="2ii-qB-Cru" secondAttribute="leading" constant="5" id="iiU-qz-ZjR"/>
<constraint firstItem="n76-t2-wdT" firstAttribute="top" secondItem="2ii-qB-Cru" secondAttribute="top" constant="5" id="kjN-HZ-zqN"/>
<constraint firstAttribute="bottom" secondItem="n76-t2-wdT" secondAttribute="bottom" constant="5" id="tdh-kN-YwZ"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="amountLabel" destination="Bim-W1-ROr" id="i0u-03-gkG"/>
<outlet property="bankDetailLabel" destination="brQ-QI-mse" id="7RU-BP-WF8"/>
<outlet property="bgView" destination="n76-t2-wdT" id="1Oa-Y0-Ijr"/>
<outlet property="controlNumberLabel" destination="hiE-Xo-tO7" id="Xxe-gc-Khr"/>
<outlet property="dateLabel" destination="Ik8-JU-GZk" id="gH1-LL-Dd1"/>
<outlet property="nameLabel" destination="kNZ-hY-07f" id="Apv-hN-G3z"/>
<outlet property="paymentMethodLabel" destination="pnu-bl-6Sw" id="oeG-wi-hDw"/>
<outlet property="transactionNumberLabel" destination="bZU-Fy-Wgb" id="te7-JB-C8j"/>
</connections>
</tableViewCell>
</prototypes>
</tableView>
<stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="v7J-ZH-GHp">
<rect key="frame" x="10" y="10" width="355" height="35"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mDh-dH-fw4">
<rect key="frame" x="0.0" y="0.0" width="170" height="35"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="16"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="-" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="b2R-UN-TUl">
<rect key="frame" x="175" y="0.0" width="5.5" height="35"/>
<constraints>
<constraint firstAttribute="width" constant="5.5" id="jgo-Hd-56n"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uLQ-0q-P97">
<rect key="frame" x="185.5" y="0.0" width="169.5" height="35"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="16"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="mDh-dH-fw4" firstAttribute="width" secondItem="uLQ-0q-P97" secondAttribute="width" id="EtE-2N-T5i"/>
<constraint firstAttribute="height" constant="35" id="eOh-zH-x3P"/>
</constraints>
</stackView>
</subviews>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="s07-ms-I7n" firstAttribute="leading" secondItem="39p-cv-uyM" secondAttribute="leading" constant="10" id="0wn-Vo-dZK"/>
<constraint firstItem="s07-ms-I7n" firstAttribute="top" secondItem="v7J-ZH-GHp" secondAttribute="bottom" constant="10" id="ANh-9w-DOY"/>
<constraint firstItem="Ujq-FS-I1H" firstAttribute="centerY" secondItem="39p-cv-uyM" secondAttribute="centerY" id="LeD-fH-Lyq"/>
<constraint firstItem="v7J-ZH-GHp" firstAttribute="trailing" secondItem="s07-ms-I7n" secondAttribute="trailing" id="dBc-Iq-t4O"/>
<constraint firstItem="v7J-ZH-GHp" firstAttribute="leading" secondItem="s07-ms-I7n" secondAttribute="leading" id="dVs-eD-2gc"/>
<constraint firstItem="Ujq-FS-I1H" firstAttribute="centerX" secondItem="39p-cv-uyM" secondAttribute="centerX" id="jw6-m8-Nbu"/>
<constraint firstAttribute="trailing" secondItem="s07-ms-I7n" secondAttribute="trailing" constant="10" id="oyJ-mB-sel"/>
<constraint firstAttribute="bottom" secondItem="s07-ms-I7n" secondAttribute="bottom" id="q8g-38-hD1"/>
<constraint firstItem="v7J-ZH-GHp" firstAttribute="top" secondItem="39p-cv-uyM" secondAttribute="top" constant="10" id="vi5-3J-wx4"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="rNr-vr-KE8" firstAttribute="trailing" secondItem="s07-ms-I7n" secondAttribute="trailing" id="FZW-fs-p3W"/>
<constraint firstItem="39p-cv-uyM" firstAttribute="leading" secondItem="BQR-ag-XpK" secondAttribute="leading" id="WL3-sn-Dxd"/>
<constraint firstAttribute="trailing" secondItem="39p-cv-uyM" secondAttribute="trailing" id="bwb-XA-oQ6"/>
<constraint firstItem="39p-cv-uyM" firstAttribute="top" secondItem="Kqy-UM-ppa" secondAttribute="bottom" constant="-2" id="h1G-D1-tht"/>
<constraint firstItem="Kqy-UM-ppa" firstAttribute="top" secondItem="BQR-ag-XpK" secondAttribute="top" id="lho-d4-gas"/>
<constraint firstItem="Kqy-UM-ppa" firstAttribute="leading" secondItem="BQR-ag-XpK" secondAttribute="leading" id="o6C-np-hAn"/>
<constraint firstAttribute="trailing" secondItem="Kqy-UM-ppa" secondAttribute="trailing" id="xgA-X8-KqY"/>
<constraint firstAttribute="bottom" secondItem="39p-cv-uyM" secondAttribute="bottom" id="yyC-o4-sbn"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="BQR-ag-XpK" firstAttribute="bottom" secondItem="vGv-NT-vse" secondAttribute="bottom" id="5x5-S8-LuL"/>
<constraint firstItem="BQR-ag-XpK" firstAttribute="trailing" secondItem="vGv-NT-vse" secondAttribute="trailing" id="Czi-pe-eDI"/>
<constraint firstItem="BQR-ag-XpK" firstAttribute="top" secondItem="vGv-NT-vse" secondAttribute="top" id="OOR-r0-cCn"/>
<constraint firstItem="BQR-ag-XpK" firstAttribute="leading" secondItem="vGv-NT-vse" secondAttribute="leading" id="V8b-R2-ptS"/>
</constraints>
<viewLayoutGuide key="safeArea" id="vGv-NT-vse"/>
</view>
<connections>
<outlet property="dateRangeLabelHeightConstraint" destination="eOh-zH-x3P" id="3UR-tj-HGn"/>
<outlet property="emptyLabel" destination="Ujq-FS-I1H" id="Kcr-7p-lCi"/>
<outlet property="fromDateLabel" destination="mDh-dH-fw4" id="8k8-Zj-4Ji"/>
<outlet property="searchTextField" destination="DUl-wm-L0p" id="rHS-xg-UjX"/>
<outlet property="tableView" destination="s07-ms-I7n" id="oOe-nf-8aE"/>
<outlet property="toDateLabel" destination="uLQ-0q-P97" id="FTX-qu-5IO"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="DTQ-QR-ENp" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="629.60000000000002" y="75.112443778110944"/>
</scene>
</scenes>
<resources>
<image name="ic_calender" width="25" height="25"/>
</resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</document>

255
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/View/ResendViewController.swift

@ -1,255 +0,0 @@
//
// ResendViewController.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
import Localize_Swift
// func getParams(model: SendMoneyRequestModel, reciepient: Recipient) -> [String: String] { // last api call
class ResendRequestModel {
var exchangeRateDetail: SendMoneyExchangeRateModel?
var autoDebitAccount: Account?
var paymemtMode: SendMoneyPayoutMode?
var bankAgent: SendMoneyBank?
var branch: SendMoneyBankBranch?
var accountNumber: String?
var payingAmount: String?
var transactionPassword: String?
var transaction: ResendTransactionModel?
var reciepient: Recipient?
}
class ResendViewController: UIViewController {
struct Constant {
static let heightOfDateRangeLabel: CGFloat = 35
}
struct StringConstants {
let searchPlaceholderText = "resend_search_hint_text".localized()
}
// MARK: IBOutlets
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var dateRangeLabelHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var emptyLabel: UILabel!
@IBOutlet weak var fromDateLabel: UILabel!
@IBOutlet weak var toDateLabel: UILabel!
@IBOutlet weak var searchTextField: UITextField!
// MARK: Properties
var requestModel: ResendRequestModel?
var from: String?
var to: String?
var model: ResendListModel? {
didSet {
self.transactions = model?.transactions ?? []
self.accounts = model?.account ?? []
}
}
var accounts: [Account] = []
var transactions: [ResendTransactionModel] = [] {
didSet {
self.filteredTransaction = transactions
}
}
var filteredTransaction: [ResendTransactionModel] = [] {
didSet {
self.emptyLabel.isHidden = !transactions.isEmpty
self.tableView.reloadData()
guard let fromDate = from, let toDate = to else {
self.dateRangeLabelHeightConstraint.constant = 0
return
}
self.fromDateLabel.text = self.getHUmanReadableDate(date: fromDate)
self.toDateLabel.text = self.getHUmanReadableDate(date: toDate)
UIView.animate(withDuration: 0.33, animations: {
self.dateRangeLabelHeightConstraint.constant = Constant.heightOfDateRangeLabel
})
}
}
var selectedIndex: Int?
var presenter: ResendModuleInterface?
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
self.setupNormalNavigation()
self.setup()
self.presenter?.viewIsReady()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = "resend_money_text".localized()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = ""
self.view.endEditing(true)
}
// MARK: IBActions
@IBAction func openSearchFilter(_ sender: UIButton) {
// open search filter
let viewController = UIStoryboard.init(name: "TransactionHistoryDatePicker", bundle: nil).instantiateViewController(withIdentifier: "DatePickerViewController") as! DatePickerViewController
viewController.completion = self.selectedDate
self.present(viewController, animated: true, completion: nil)
}
// MARK: Other Functions
private func setup() {
// all setup should be done here
self.requestModel = ResendRequestModel()
setupSearchTextField()
setupDelegates()
self.dateRangeLabelHeightConstraint.constant = 0
}
private func selectedDate(from: String?, to: String?) {
self.from = from
self.to = to
self.fetchList(fromDate: from, toDate: to)
// TODO
}
private func fetchList(fromDate: String? = nil, toDate: String? = nil) {
guard let fromDate = fromDate, let toDate = toDate else { return }
self.presenter?.fetchList(fromDate: fromDate, toDate: toDate)
}
private func setupSearchTextField() {
searchTextField.placeholder = StringConstants().searchPlaceholderText
let imageview = UIImageView(image: #imageLiteral(resourceName: "ic_search"))
self.searchTextField.leftView = imageview
self.searchTextField.leftViewMode = .always
self.searchTextField.addTarget(self, action: #selector(search(sender:)), for: UIControl.Event.editingChanged)
}
@objc func search(sender: UITextField) {
let searchText = sender.text!.lowercased()
self.presenter?.filter(searchText: searchText)
}
private func setupDelegates() {
self.tableView.delegate = self
self.tableView.dataSource = self
}
private func showMethodSelection(for index: Int) {
self.selectedIndex = index
// let wireframe = PaymentSelectionWireframe()
// wireframe.openPaymentSelection(accounts: self.accounts ?? [], onSelection: self.selectedAcunt, source: self)
let wireframe = SelectPaymentWireframe()
wireframe.delegate = self
wireframe.openSelectPaymentUsingPanModal(with: self.accounts, in: self)
}
func selectedAcunt(acunt: Account) {
guard let index = self.selectedIndex, let transaction = self.filteredTransaction.elementAt(index: index), let requestModel = self.requestModel, let transactionId = self.filteredTransaction.elementAt(index: index)?.transactionId else {return}
requestModel.autoDebitAccount = acunt
requestModel.transaction = transaction
if let navigation = self.navigationController {
let wireframe = ResendExchangeWireframe()
wireframe.openExchangeWireFrame(model: requestModel, transactionId: transactionId , source: navigation)
}
}
private func getHUmanReadableDate(date: String?) -> String? {
if let date = DateFormatter.toDate(dateString: date ?? "", format: AppConstants.dateFormat) {
let dateString = DateFormatter.toString(date: date, format: AppConstants.humanReadableDateFormat)
return dateString
}
return nil
}
}
// MARK: TransactionHistoryViewInterface
extension ResendViewController: ResendViewInterface {
func show(model: ResendListModel) {
self.model = model
}
func showLoading() {
self.showProgressHud()
}
func hideLoading() {
self.hideProgressHud()
}
func show(error: String) {
self.alert(type: .error, message: error)
}
func show(models: [ResendTransactionModel]) {
self.filteredTransaction = models
}
}
// MARK: TableViewDelegate
extension ResendViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.selectedIndex = indexPath.row
self.showMethodSelection(for: indexPath.row)
}
}
// MARK: TableViewDatasource
extension ResendViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return filteredTransaction.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ResendTableViewCell") as! ResendTableViewCell
cell.model = self.filteredTransaction.elementAt(index: indexPath.row)
cell.setup()
return cell
}
}
extension ResendViewController: SelectPaymentDelegate {
func selectPayment(_ viewController: SelectPaymentViewController, selectedAccount: Account) {
selectedAcunt(acunt: selectedAccount)
viewController.dismiss(animated: true, completion: nil)
}
func selectPayment(_ viewController: SelectPaymentViewController, error: Error) {
viewController.dismiss(animated: true, completion: nil)
}
}

15
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/View/ResendViewInterface.swift

@ -1,15 +0,0 @@
//
// ResendViewInterface.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol ResendViewInterface: class {
func showLoading()
func hideLoading()
func show(model: ResendListModel)
func show(models: [ResendTransactionModel])
func show(error: String)
}

34
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/Wireframe/ResendWireframe.swift

@ -1,34 +0,0 @@
//
// ResendWireframe.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class ResendWireframe {
weak var view: UIViewController!
}
extension ResendWireframe: ResendWireframeInput {
var storyboardName: String {return "Resend"}
func getMainView() -> UIViewController {
let service = ResendService()
let interactor = ResendInteractor(service: service)
let presenter = ResendPresenter()
let viewController = viewControllerFromStoryboard(of: ResendViewController.self)
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
self.view = viewController
return viewController
}
}

13
GME Remit/Modules/RemittanceModules/OverseasModules/Resend/User Interface/Wireframe/ResendWireframeInput.swift

@ -1,13 +0,0 @@
//
// ResendWireframeInput.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol ResendWireframeInput: WireframeInput {
}

90
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Application Logic/Interactor/ResendExchangeInteractor.swift

@ -1,90 +0,0 @@
//
// ResendExchangeInteractor.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ResendExchangeInteractor {
struct ApiConstants {
static let senderAmount = "cAmount"
static let senderCurrency = "sCurrency"
static let recieverAmount = "pAmount"
static let recieverCurrency = "pCurrency"
static let recieverCountryId = "pCountry"
static let paymentMethod = "paymentType"
static let paymentMethodId = "serviceType"
static let calcBy = "calcBy"
static let recieverCountryName = "pCountryName"
static let senderCountryId = "sCountry"
static let bankId = "pAgent"
static let payOutPartner = "payOutPartner"
static let userId = "userId"
}
// MARK: Properties
weak var output: ResendExchangeInteractorOutput?
private let service: ResendExchangeServiceType
var transactionId: String?
// MARK: Initialization
init(service: ResendExchangeServiceType, transactionId: String?) {
self.service = service
self.transactionId = transactionId
}
// MARK: Converting entities
}
// MARK: ResendExchange interactor input interface
extension ResendExchangeInteractor: ResendExchangeInteractorInput {
func viewIsReady() {
self.service.fetch(transactionId: self.transactionId ?? "", success: { (model) in
// ResendDetail
guard let model = model else {return}
self.output?.show(model: model)
}) { (error) in
self.output?.show(error: error)
}
}
func calculate(senderAmt: String, senderCurrency: String, recieverAmt: String, recieverCurrency: String, recieverCountryName: String, recieverCountryId: String, paymentMethod: String, paymentMethodId: String, calcBy: String, senderCountryId: String, payoutPartner: String, userId: String, bankId: String) {
var param: [String: String] =
[
ApiConstants.senderAmount : senderAmt,
ApiConstants.senderCurrency : senderCurrency,
ApiConstants.recieverAmount : recieverAmt,
ApiConstants.recieverCurrency : recieverCurrency,
ApiConstants.recieverCountryName: recieverCountryName,
ApiConstants.recieverCountryId : recieverCountryId,
ApiConstants.paymentMethod: paymentMethod,
ApiConstants.paymentMethodId: paymentMethodId,
ApiConstants.calcBy : calcBy,
ApiConstants.senderCountryId : senderCountryId,
// ApiConstants.payOutPartner : payoutPartner,
ApiConstants.userId : userId,
ApiConstants.bankId : bankId
]
if !payoutPartner.isEmpty {
param[ApiConstants.payOutPartner] = payoutPartner
}
self.service.calculate(params: param, success: { (model) in
guard let model = model else {return}
self.output?.show(model: model)
}) { (error) in
self.output?.showExchangeRate(error: error)
}
}
}

19
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Application Logic/Interactor/ResendExchangeInteractorIO.swift

@ -1,19 +0,0 @@
//
// ResendExchangeInteractorIO.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol ResendExchangeInteractorInput: class {
func viewIsReady()
func calculate(senderAmt: String, senderCurrency: String, recieverAmt: String, recieverCurrency: String, recieverCountryName: String, recieverCountryId: String, paymentMethod: String, paymentMethodId: String, calcBy: String, senderCountryId: String, payoutPartner: String, userId: String, bankId: String)
}
protocol ResendExchangeInteractorOutput: class {
func show(model: ResendDetail)
func show(model: SendMoneyExchangeRateModel)
func show(error: Error)
func showExchangeRate(error: Error)
}

22
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Application Logic/Service/ResendExchangeService.swift

@ -1,22 +0,0 @@
//
// ResendExchangeService.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ResendExchangeService: ResendExchangeServiceType {
// MARK: Properties
// MARK: Initialization
// MARK: Data management
}

37
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Application Logic/Service/ResendExchangeServiceType.swift

@ -1,37 +0,0 @@
//
// ResendExchangeServiceType.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol ResendExchangeServiceType: class, FetchResendDetailService, FetchSendMoneyExchangeRateService {
}
protocol FetchResendDetailService: ApiServiceType {
func fetch(transactionId: String, success: @escaping (ResendDetail?) -> (), failure: @escaping (Error) -> ())
}
extension FetchResendDetailService {
func fetch(transactionId: String, success: @escaping (ResendDetail?) -> (), failure: @escaping (Error) -> ()) {
let url = baseUrl + "/resend/detail"
let params = ["tranId": transactionId]
self.auth.request(method: .post, url: url, params: params, success: { (response: ResendDetailModelContainer) in
if (response.errorCode ?? "") != "0" {
let error = NSError.init(domain: "Network", code: 0, userInfo: [NSLocalizedDescriptionKey : response.message ?? ""])
failure(error)
}else {
let model = response.data
success(model)
}
}) { (error) in
failure(error)
}
}
}

15
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/Module Interface/ResendExchangeModuleInterface.swift

@ -1,15 +0,0 @@
//
// ResendExchangeModuleInterface.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol ResendExchangeModuleInterface: class {
func viewIsReady()
func calculate(senderAmt: String, senderCurrency: String, recieverAmt: String, recieverCurrency: String, recieverCountryName: String, recieverCountryId: String, paymentMethod: String, paymentMethodId: String, calcBy: String, senderCountryId: String, payoutPartner: String, userId: String, bankId: String)
}

57
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/Presenter/ResendExchangePresenter.swift

@ -1,57 +0,0 @@
//
// ResendExchangePresenter.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ResendExchangePresenter {
// MARK: Properties
weak var view: ResendExchangeViewInterface?
var interactor: ResendExchangeInteractorInput?
var wireframe: ResendExchangeWireframeInput?
// MARK: Converting entities
}
// MARK: ResendExchange module interface
extension ResendExchangePresenter: ResendExchangeModuleInterface {
func viewIsReady() {
interactor?.viewIsReady()
}
func calculate(senderAmt: String, senderCurrency: String, recieverAmt: String, recieverCurrency: String, recieverCountryName: String, recieverCountryId: String, paymentMethod: String, paymentMethodId: String, calcBy: String, senderCountryId: String, payoutPartner: String, userId: String, bankId: String) {
self.view?.showLoading()
interactor?.calculate(senderAmt: senderAmt, senderCurrency: senderCurrency, recieverAmt: recieverAmt, recieverCurrency: recieverCurrency, recieverCountryName: recieverCountryName, recieverCountryId: recieverCountryId, paymentMethod: paymentMethod, paymentMethodId: paymentMethodId, calcBy: calcBy, senderCountryId: senderCountryId, payoutPartner: payoutPartner, userId: userId, bankId: bankId)
}
}
// MARK: ResendExchange interactor output interface
extension ResendExchangePresenter: ResendExchangeInteractorOutput {
func show(model: ResendDetail) {
self.view?.hideLoading()
self.view?.show(model: model)
}
func show(model: SendMoneyExchangeRateModel) {
self.view?.hideLoading()
self.view?.show(model: model)
}
func showExchangeRate(error: Error) {
self.view?.hideLoading()
self.view?.showExchangeRate(error: error.localizedDescription)
}
func show(error: Error) {
self.view?.hideLoading()
self.view?.show(error: error.localizedDescription)
}
}

546
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/View/ResendExchange.storyboard

@ -1,546 +0,0 @@
<?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" colorMatched="YES">
<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-Bold.otf">
<string>SanFranciscoDisplay-Bold</string>
</array>
<array key="SanFranciscoDisplay-Medium.otf">
<string>SanFranciscoDisplay-Medium</string>
</array>
<array key="SanFranciscoDisplay-Regular.otf">
<string>SanFranciscoDisplay-Regular</string>
</array>
<array key="SanFranciscoDisplay-Semibold.otf">
<string>SanFranciscoDisplay-Semibold</string>
</array>
</customFonts>
<scenes>
<!--Resend Exchange View Controller-->
<scene sceneID="SMX-ZZ-P09">
<objects>
<viewController storyboardIdentifier="ResendExchangeViewController" id="ipk-bU-HJJ" customClass="ResendExchangeViewController" customModule="GME_Remit" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="bAP-qa-4a0">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" keyboardDismissMode="onDrag" translatesAutoresizingMaskIntoConstraints="NO" id="UOX-Rk-d2G">
<rect key="frame" x="0.0" y="64" width="375" height="603"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ORT-Zx-YgH">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="0dp-2J-x5o">
<rect key="frame" x="10" y="20" width="355" height="226"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="QGT-uB-WH5">
<rect key="frame" x="0.0" y="0.0" width="355" height="70"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dAt-Rq-Gck">
<rect key="frame" x="0.0" y="0.0" width="355" height="70"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="S5s-oa-wDv">
<rect key="frame" x="8" y="0.0" width="347" height="70"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalCentering" translatesAutoresizingMaskIntoConstraints="NO" id="DKF-dM-GNV">
<rect key="frame" x="0.0" y="0.0" width="222" height="70"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="05G-VD-aSJ">
<rect key="frame" x="0.0" y="0.0" width="222" height="6"/>
<constraints>
<constraint firstAttribute="height" constant="6" id="SXi-GB-bCQ"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="You Send" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cUO-HA-FGN">
<rect key="frame" x="0.0" y="6" width="222" height="14"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="10,000,000" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="RrL-Ia-5PK" customClass="GMENumberTextField" customModule="GME_Remit" customModuleProvider="target">
<rect key="frame" x="0.0" y="20" width="222" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="w3x-rA-gte"/>
</constraints>
<color key="textColor" red="0.92941176469999998" green="0.1137254902" blue="0.1960784314" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Semibold" family="San Francisco Display" pointSize="33"/>
<textInputTraits key="textInputTraits" keyboardType="decimalPad"/>
</textField>
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YmT-Dq-eHM">
<rect key="frame" x="222" y="0.0" width="125" height="70"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="3QA-ou-Zac">
<rect key="frame" x="25.5" y="22" width="74" height="26"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Korea" translatesAutoresizingMaskIntoConstraints="NO" id="vZD-fe-l60">
<rect key="frame" x="0.0" y="0.0" width="26" height="26"/>
<constraints>
<constraint firstAttribute="width" constant="26" id="pcX-b5-a5b"/>
<constraint firstAttribute="height" constant="26" id="zLT-Gu-MXx"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="KRW" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fWD-kn-5nM">
<rect key="frame" x="36" y="0.0" width="38" height="26"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Bold" family="San Francisco Display" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" red="0.1764705882" green="0.21176470589999999" blue="0.56078431370000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="125" id="0Bb-Sn-ij1"/>
<constraint firstItem="3QA-ou-Zac" firstAttribute="centerX" secondItem="YmT-Dq-eHM" secondAttribute="centerX" id="9ab-PX-Wvx"/>
<constraint firstItem="3QA-ou-Zac" firstAttribute="centerY" secondItem="YmT-Dq-eHM" secondAttribute="centerY" id="zht-Al-MpX"/>
</constraints>
</view>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="S5s-oa-wDv" firstAttribute="leading" secondItem="dAt-Rq-Gck" secondAttribute="leading" constant="8" id="IeD-Oe-4eK"/>
<constraint firstAttribute="trailing" secondItem="S5s-oa-wDv" secondAttribute="trailing" id="Ngf-uj-axX"/>
<constraint firstItem="S5s-oa-wDv" firstAttribute="top" secondItem="dAt-Rq-Gck" secondAttribute="top" id="Q3Y-YN-ACx"/>
<constraint firstAttribute="bottom" secondItem="S5s-oa-wDv" secondAttribute="bottom" id="nqY-jx-pm2"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="70" id="7bz-Ac-p8S"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="AFY-c1-G3T">
<rect key="frame" x="0.0" y="90" width="355" height="46"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gUz-OR-U8R">
<rect key="frame" x="0.0" y="0.0" width="355" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p6j-Bv-gbe">
<rect key="frame" x="0.0" y="0.0" width="10" height="20.5"/>
<constraints>
<constraint firstAttribute="width" constant="10" id="CDs-Lk-Zzo"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="ZOr-JN-fja">
<rect key="frame" x="10" y="0.0" width="345" height="20.5"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="QL4-sy-IsQ">
<rect key="frame" x="0.0" y="0.0" width="345" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text=" - (Transfer Fees Included" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PoS-xP-r27">
<rect key="frame" x="0.0" y="0.0" width="345" height="20.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
</stackView>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="shr-2X-JiH">
<rect key="frame" x="0.0" y="25.5" width="355" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Djh-8V-b3T">
<rect key="frame" x="0.0" y="0.0" width="10" height="20.5"/>
<constraints>
<constraint firstAttribute="width" constant="10" id="6da-cM-UmC"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="2Bk-Q8-XyZ">
<rect key="frame" x="10" y="0.0" width="345" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" - (Transfer Fees Included" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lpd-5g-qAX">
<rect key="frame" x="0.0" y="0.0" width="345" height="20.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="txz-Z2-j95">
<rect key="frame" x="0.0" y="156" width="355" height="70"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gsA-E3-L0L">
<rect key="frame" x="0.0" y="0.0" width="355" height="70"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CEP-Tt-tXC">
<rect key="frame" x="8" y="0.0" width="347" height="70"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalCentering" translatesAutoresizingMaskIntoConstraints="NO" id="3gg-1Z-NH4">
<rect key="frame" x="0.0" y="0.0" width="222" height="70"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vH0-7i-K9L">
<rect key="frame" x="0.0" y="0.0" width="222" height="6"/>
<constraints>
<constraint firstAttribute="height" constant="6" id="140-1X-yk5"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Recepient Gets" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="D6K-jA-ARY">
<rect key="frame" x="0.0" y="6" width="222" height="14"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="10,00,000" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3yD-t0-8ha" customClass="GMENumberTextField" customModule="GME_Remit" customModuleProvider="target">
<rect key="frame" x="0.0" y="20" width="222" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="bLT-gY-yAB"/>
</constraints>
<color key="textColor" red="0.92941176469999998" green="0.1137254902" blue="0.1960784314" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Semibold" family="San Francisco Display" pointSize="33"/>
<textInputTraits key="textInputTraits" keyboardType="decimalPad"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="mh1-Er-p1u">
<rect key="frame" x="222" y="0.0" width="125" height="70"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iPE-sj-Qsu">
<rect key="frame" x="0.0" y="0.0" width="125" height="70"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="Js4-zb-lBt">
<rect key="frame" x="25.5" y="22" width="74" height="26"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Korea" translatesAutoresizingMaskIntoConstraints="NO" id="lZL-MP-MUI">
<rect key="frame" x="0.0" y="0.0" width="26" height="26"/>
<constraints>
<constraint firstAttribute="width" constant="26" id="mG0-tZ-KhA"/>
<constraint firstAttribute="height" constant="26" id="mGg-C4-taF"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="KRW" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VUq-zy-pIx">
<rect key="frame" x="36" y="0.0" width="38" height="26"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Bold" family="San Francisco Display" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" red="0.1764705882" green="0.21176470589999999" blue="0.56078431370000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<gestureRecognizers/>
<constraints>
<constraint firstAttribute="width" constant="125" id="Rez-4a-vc4"/>
<constraint firstItem="Js4-zb-lBt" firstAttribute="centerX" secondItem="iPE-sj-Qsu" secondAttribute="centerX" id="TwQ-eD-wnp"/>
<constraint firstItem="Js4-zb-lBt" firstAttribute="centerY" secondItem="iPE-sj-Qsu" secondAttribute="centerY" id="urS-2e-gxp"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstAttribute="width" constant="125" id="zDU-y1-WDk"/>
</constraints>
</stackView>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="CEP-Tt-tXC" firstAttribute="top" secondItem="gsA-E3-L0L" secondAttribute="top" id="Gv1-CZ-8iF"/>
<constraint firstItem="CEP-Tt-tXC" firstAttribute="leading" secondItem="gsA-E3-L0L" secondAttribute="leading" constant="8" id="i4H-mu-EJC"/>
<constraint firstAttribute="trailing" secondItem="CEP-Tt-tXC" secondAttribute="trailing" id="leb-Vx-cZe"/>
<constraint firstAttribute="bottom" secondItem="CEP-Tt-tXC" secondAttribute="bottom" id="zCj-dA-acL"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="70" id="0WI-rG-nWq"/>
</constraints>
</stackView>
</subviews>
</stackView>
<view opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bpp-Vs-INe">
<rect key="frame" x="10" y="276" width="355" height="101"/>
<subviews>
<stackView opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="Rww-TK-n3N">
<rect key="frame" x="0.0" y="0.0" width="355" height="101"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oqH-TI-Y5V" userLabel="SeperateLine">
<rect key="frame" x="0.0" y="0.0" width="355" height="0.5"/>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="0.5" id="qa2-Bx-0NP"/>
</constraints>
</view>
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mna-Lg-suC" userLabel="Coupon List">
<rect key="frame" x="0.0" y="0.5" width="355" height="50"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="xia-he-n4w">
<rect key="frame" x="8" y="0.0" width="339" height="50"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Coupon" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z3L-tm-ozs">
<rect key="frame" x="0.0" y="0.0" width="55" height="50"/>
<constraints>
<constraint firstAttribute="width" constant="55" id="OgV-vX-CKc"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="15"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Hc-NZ-tXK">
<rect key="frame" x="65" y="0.0" width="274" height="50"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="13"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="B3d-6T-3Ii">
<rect key="frame" x="339" y="0.0" width="20" height="50"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_dropdownSmall" translatesAutoresizingMaskIntoConstraints="NO" id="Woq-Ek-UZe">
<rect key="frame" x="0.0" y="15" width="20" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="232-9M-wYh"/>
<constraint firstAttribute="width" constant="20" id="FJH-yh-4om"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Woq-Ek-UZe" firstAttribute="centerY" secondItem="B3d-6T-3Ii" secondAttribute="centerY" id="rQm-H0-0Ch"/>
<constraint firstAttribute="width" constant="20" id="rcz-3W-EMA"/>
<constraint firstItem="Woq-Ek-UZe" firstAttribute="centerX" secondItem="B3d-6T-3Ii" secondAttribute="centerX" id="tJE-mA-c48"/>
</constraints>
</view>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="xia-he-n4w" firstAttribute="leading" secondItem="mna-Lg-suC" secondAttribute="leading" constant="8" id="7Qt-Yj-oy7"/>
<constraint firstAttribute="trailing" secondItem="xia-he-n4w" secondAttribute="trailing" constant="8" id="VrE-Os-kyc"/>
<constraint firstAttribute="height" constant="50" id="c2f-6V-smF"/>
<constraint firstAttribute="bottom" secondItem="xia-he-n4w" secondAttribute="bottom" id="mJF-5g-4vK"/>
<constraint firstItem="xia-he-n4w" firstAttribute="top" secondItem="mna-Lg-suC" secondAttribute="top" id="ynM-Eq-JmZ"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dKh-R7-WpZ">
<rect key="frame" x="0.0" y="50.5" width="355" height="0.5"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cyc-ut-0jD" userLabel="SeperateLine">
<rect key="frame" x="10" y="0.0" width="335" height="0.5"/>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="0.5" id="2uV-D1-rm3"/>
<constraint firstAttribute="bottom" secondItem="Cyc-ut-0jD" secondAttribute="bottom" id="Bno-V0-Z4D"/>
<constraint firstItem="Cyc-ut-0jD" firstAttribute="leading" secondItem="dKh-R7-WpZ" secondAttribute="leading" constant="10" id="Vyf-bB-WOs"/>
<constraint firstItem="Cyc-ut-0jD" firstAttribute="top" secondItem="dKh-R7-WpZ" secondAttribute="top" id="a4g-ec-wEf"/>
<constraint firstAttribute="trailing" secondItem="Cyc-ut-0jD" secondAttribute="trailing" constant="10" id="lT6-gk-Nq7"/>
</constraints>
</view>
<view opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QUh-C5-hsz">
<rect key="frame" x="0.0" y="51" width="355" height="50"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="YaC-Rc-9fv">
<rect key="frame" x="8" y="0.0" width="339" height="50"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GP2-vg-WQf">
<rect key="frame" x="0.0" y="0.0" width="206" height="50"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Applied Amount" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="INg-pM-FwI">
<rect key="frame" x="0.0" y="15" width="206" height="20.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Bold" family="San Francisco Display" pointSize="17"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YmV-df-l8K">
<rect key="frame" x="0.0" y="30.5" width="206" height="5"/>
<color key="backgroundColor" red="0.0" green="0.58980089430000004" blue="1" alpha="0.36601027400000002" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="5" id="KJb-A3-7kk"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="INg-pM-FwI" firstAttribute="centerX" secondItem="GP2-vg-WQf" secondAttribute="centerX" id="GPk-zO-DcP"/>
<constraint firstItem="INg-pM-FwI" firstAttribute="centerY" secondItem="GP2-vg-WQf" secondAttribute="centerY" id="HHK-bT-WIj"/>
<constraint firstItem="YmV-df-l8K" firstAttribute="centerX" secondItem="GP2-vg-WQf" secondAttribute="centerX" id="YpQ-MM-PXp"/>
<constraint firstItem="INg-pM-FwI" firstAttribute="width" secondItem="GP2-vg-WQf" secondAttribute="width" id="pJ8-EV-2k0"/>
<constraint firstItem="YmV-df-l8K" firstAttribute="width" secondItem="INg-pM-FwI" secondAttribute="width" id="rWn-qy-DHT"/>
<constraint firstItem="YmV-df-l8K" firstAttribute="top" secondItem="INg-pM-FwI" secondAttribute="bottom" constant="-5" id="wG2-Sn-kh3"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1,000,000" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3sE-za-2Ju">
<rect key="frame" x="211" y="0.0" width="89" height="50"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="20"/>
<color key="textColor" red="0.92941176469999998" green="0.1137254902" blue="0.1960784314" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="KRW" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rRf-DW-Gd4">
<rect key="frame" x="305" y="0.0" width="34" height="50"/>
<constraints>
<constraint firstAttribute="width" constant="34" id="kmE-Ah-vGv"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="17"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="YaC-Rc-9fv" secondAttribute="bottom" id="3r6-ZS-tEK"/>
<constraint firstItem="YaC-Rc-9fv" firstAttribute="top" secondItem="QUh-C5-hsz" secondAttribute="top" id="KPc-rh-RqA"/>
<constraint firstAttribute="height" constant="50" id="UTX-uX-Rpo"/>
<constraint firstItem="YaC-Rc-9fv" firstAttribute="leading" secondItem="QUh-C5-hsz" secondAttribute="leading" constant="8" id="aFS-eR-1TJ"/>
<constraint firstAttribute="trailing" secondItem="YaC-Rc-9fv" secondAttribute="trailing" constant="8" id="hrk-Dl-Jr2"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstItem="QUh-C5-hsz" firstAttribute="top" secondItem="dKh-R7-WpZ" secondAttribute="bottom" id="c05-r7-MDP"/>
</constraints>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Rww-TK-n3N" firstAttribute="leading" secondItem="bpp-Vs-INe" secondAttribute="leading" id="3HA-nL-a33"/>
<constraint firstAttribute="bottom" secondItem="Rww-TK-n3N" secondAttribute="bottom" id="5ES-dk-NWJ"/>
<constraint firstItem="Rww-TK-n3N" firstAttribute="top" secondItem="bpp-Vs-INe" secondAttribute="top" id="bbu-RH-lFc"/>
<constraint firstAttribute="trailing" secondItem="Rww-TK-n3N" secondAttribute="trailing" id="fbK-sK-zop"/>
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lj4-R8-JCO">
<rect key="frame" x="87.5" y="407" width="200" height="50"/>
<color key="backgroundColor" red="0.92941176469999998" green="0.10980392160000001" blue="0.14117647059999999" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="width" constant="200" id="Pc3-2B-fh6"/>
<constraint firstAttribute="height" constant="50" id="gi1-Me-gOb"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="18"/>
<state key="normal" title="Calculate">
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="continueButton:" destination="ipk-bU-HJJ" eventType="touchUpInside" id="ag8-ct-uvy"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="lj4-R8-JCO" firstAttribute="centerX" secondItem="ORT-Zx-YgH" secondAttribute="centerX" id="1rQ-Te-Tc2"/>
<constraint firstItem="lj4-R8-JCO" firstAttribute="top" secondItem="bpp-Vs-INe" secondAttribute="bottom" constant="30" id="3Rp-e2-QVE"/>
<constraint firstAttribute="trailing" secondItem="0dp-2J-x5o" secondAttribute="trailing" constant="10" id="XpX-rY-Tkz"/>
<constraint firstItem="0dp-2J-x5o" firstAttribute="top" secondItem="ORT-Zx-YgH" secondAttribute="top" constant="20" id="cra-Vv-yvJ"/>
<constraint firstAttribute="trailing" secondItem="bpp-Vs-INe" secondAttribute="trailing" constant="10" id="lwP-FI-1ni"/>
<constraint firstItem="0dp-2J-x5o" firstAttribute="leading" secondItem="ORT-Zx-YgH" secondAttribute="leading" constant="10" id="qPu-pO-RIt"/>
<constraint firstItem="bpp-Vs-INe" firstAttribute="top" secondItem="0dp-2J-x5o" secondAttribute="bottom" constant="30" id="ryq-gz-rH8"/>
<constraint firstItem="bpp-Vs-INe" firstAttribute="leading" secondItem="ORT-Zx-YgH" secondAttribute="leading" constant="10" id="sFp-UH-2TK"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="ORT-Zx-YgH" secondAttribute="trailing" id="Oap-ih-xjc"/>
<constraint firstItem="ORT-Zx-YgH" firstAttribute="leading" secondItem="UOX-Rk-d2G" secondAttribute="leading" id="XW4-zi-G8A"/>
<constraint firstAttribute="bottom" secondItem="ORT-Zx-YgH" secondAttribute="bottom" id="Y3V-bL-5T9"/>
<constraint firstItem="ORT-Zx-YgH" firstAttribute="top" secondItem="UOX-Rk-d2G" secondAttribute="top" id="a18-DW-IUE"/>
<constraint firstAttribute="bottom" secondItem="ORT-Zx-YgH" secondAttribute="bottom" id="mpp-ab-osB"/>
</constraints>
</scrollView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Ywq-XZ-hJD" firstAttribute="trailing" secondItem="UOX-Rk-d2G" secondAttribute="trailing" id="0Zo-hc-Ale"/>
<constraint firstItem="Ywq-XZ-hJD" firstAttribute="bottom" secondItem="UOX-Rk-d2G" secondAttribute="bottom" id="1gS-qs-aeu"/>
<constraint firstItem="ORT-Zx-YgH" firstAttribute="height" secondItem="bAP-qa-4a0" secondAttribute="height" id="Hh3-xH-4S8"/>
<constraint firstItem="UOX-Rk-d2G" firstAttribute="top" secondItem="Ywq-XZ-hJD" secondAttribute="top" id="RGg-ak-3GB"/>
<constraint firstItem="UOX-Rk-d2G" firstAttribute="leading" secondItem="Ywq-XZ-hJD" secondAttribute="leading" id="Xfb-Ll-IxY"/>
<constraint firstItem="ORT-Zx-YgH" firstAttribute="width" secondItem="bAP-qa-4a0" secondAttribute="width" id="zpn-DG-veu"/>
</constraints>
<viewLayoutGuide key="safeArea" id="Ywq-XZ-hJD"/>
</view>
<navigationItem key="navigationItem" id="KSv-F1-hGm"/>
<connections>
<outlet property="backgroundViewCountryLabel1" destination="YmT-Dq-eHM" id="37u-Xd-TNL"/>
<outlet property="backgroundViewCountryLabel2" destination="iPE-sj-Qsu" id="yLp-Uc-xx3"/>
<outlet property="continueButton" destination="lj4-R8-JCO" id="9vU-Fc-bC8"/>
<outlet property="countryCodeLabel" destination="VUq-zy-pIx" id="SFm-9W-HMx"/>
<outlet property="countryFlagImage" destination="lZL-MP-MUI" id="7mc-z6-Ush"/>
<outlet property="countryListStackView" destination="mh1-Er-p1u" id="LoB-Hw-hj9"/>
<outlet property="couponBackgroundView" destination="bpp-Vs-INe" id="Qzb-wX-0DI"/>
<outlet property="couponDropDownImageView" destination="Woq-Ek-UZe" id="uEW-uA-jQw"/>
<outlet property="couponNameLabel" destination="5Hc-NZ-tXK" id="D07-QE-1rl"/>
<outlet property="couponNameTitleLabel" destination="z3L-tm-ozs" id="gex-ac-wvs"/>
<outlet property="exchangeBackground1" destination="dAt-Rq-Gck" id="1zO-bH-rdx"/>
<outlet property="exchangeBackground2" destination="gsA-E3-L0L" id="o7l-Uc-dCS"/>
<outlet property="exchangeInfoStackView" destination="AFY-c1-G3T" id="8ro-yb-2wQ"/>
<outlet property="exchangeRateLabel" destination="Lpd-5g-qAX" id="DsQ-1u-31H"/>
<outlet property="realSenderLabel" destination="3sE-za-2Ju" id="9Of-bA-WtF"/>
<outlet property="realSenderTitleLabel" destination="INg-pM-FwI" id="Y3j-af-BTU"/>
<outlet property="realSenderView" destination="QUh-C5-hsz" id="DLi-Jf-AYq"/>
<outlet property="reciepientTextField" destination="3yD-t0-8ha" id="ZYV-4K-A47"/>
<outlet property="recipientGetsTitleLabel" destination="D6K-jA-ARY" id="vMC-Eb-LRK"/>
<outlet property="senderTextField" destination="RrL-Ia-5PK" id="jbG-Od-mna"/>
<outlet property="transferFeeInfoLabel" destination="PoS-xP-r27" id="eu0-6H-stO"/>
<outlet property="youSendTitleLabel" destination="cUO-HA-FGN" id="HUC-Co-c9Y"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4am-Xm-AE7" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1181.5999999999999" y="-42.728635682158924"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="Mn8-yH-U12">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="faB-ae-ahc" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="atM-sS-DEv">
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="ipk-bU-HJJ" kind="relationship" relationship="rootViewController" id="U6Q-DF-oVD"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="RN1-zh-MZl" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="108" y="-80"/>
</scene>
</scenes>
<resources>
<image name="Korea" width="40" height="40"/>
<image name="ic_dropdownSmall" width="6" height="3"/>
</resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</document>

453
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/View/ResendExchangeViewController.swift

@ -1,453 +0,0 @@
//
// ResendExchangeViewController.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class ResendExchangeViewController: UIViewController {
// MARK: IBOutlets
@IBOutlet weak var exchangeBackground1: UIView!
@IBOutlet weak var exchangeBackground2: UIView!
@IBOutlet weak var backgroundViewCountryLabel1: UIView!
@IBOutlet weak var backgroundViewCountryLabel2: UIView!
@IBOutlet weak var countryListStackView: UIStackView!
@IBOutlet weak var countryCodeLabel: UILabel!
@IBOutlet weak var countryFlagImage: UIImageView!
@IBOutlet weak var continueButton: UIButton!
@IBOutlet weak var senderTextField: GMENumberTextField!
@IBOutlet weak var reciepientTextField: GMENumberTextField!
@IBOutlet weak var transferFeeInfoLabel: UILabel!
@IBOutlet weak var exchangeRateLabel: UILabel!
@IBOutlet weak var exchangeInfoStackView: UIStackView!
@IBOutlet weak var youSendTitleLabel: UILabel!
@IBOutlet weak var recipientGetsTitleLabel: UILabel!
@IBOutlet weak var couponBackgroundView: UIView!
@IBOutlet weak var couponNameTitleLabel: UILabel!
@IBOutlet weak var couponNameLabel: UILabel!
@IBOutlet weak var couponDropDownImageView: UIImageView!
@IBOutlet weak var realSenderLabel: UILabel!
@IBOutlet weak var realSenderTitleLabel: UILabel!
@IBOutlet weak var realSenderView: UIView!
// MARK: Properties
var reciepient: Recipient? {
didSet {
self.requestModel?.reciepient = reciepient
}
}
var requestModel: ResendRequestModel?
var transactionId: String?
var resendInfoModel: ResendDetail? {
didSet {
self.senderTextField.text = Utility.getCommaSeperatedStringWithDecimal(
numberString: resendInfoModel?.exchangeRate?.cAmount ?? ""
)
self.reciepientTextField.text = Utility.getCommaSeperatedStringWithDecimal(
numberString: resendInfoModel?.exchangeRate?.pAmount ?? ""
)
self.calcBy = resendInfoModel?.exchangeRate?.calcBy ?? ""
guard let reciever = resendInfoModel?.receiver else {return}
self.reciepient = self.convertReciepient(model: reciever)
self.setCountryFlag(countryCode: self.resendInfoModel?.receiver?.rCountryCode ?? "")
senderTextField.receiverNativeCountry = reciever.rCountryCode ?? ""
reciepientTextField.receiverNativeCountry = reciever.rCountryCode ?? ""
}
}
var exchangeRateModel: SendMoneyExchangeRateModel? {
didSet {
self.reciepientTextField.text = Utility.getCommaSeperatedStringWithDecimal(
numberString: self.exchangeRateModel?.recipientAmount ?? ""
)
self.senderTextField.text = Utility.getCommaSeperatedStringWithDecimal(
numberString: self.exchangeRateModel?.senderAmount ?? ""
)
let serviceCharge = exchangeRateModel?.transferFee?.likeCommaMoney() ??
exchangeRateModel?.transferFee ??
"0.00"
let transferFee = serviceCharge != "0.00" ? "-\(serviceCharge)" : "\(serviceCharge)"
self.transferFeeInfoLabel.text = transferFee + " (" + "transfer_fee_included_text".localized() + ")"
let exchangeRate = self.exchangeRateModel?.exchangeRate ?? ""
self.exchangeRateLabel.text = exchangeRate + " (" + "current_exchange_rate_text".localized() + ")"
self.countryCodeLabel.text = exchangeRateModel?.reciepientCurrency
setCoupon()
UIView.animate(withDuration: 0.33) {
self.transferFeeInfoLabel.isHidden = false
self.exchangeRateLabel.isHidden = false
self.exchangeInfoStackView.isHidden = false
self.transferFeeInfoLabel.alpha = 1
self.exchangeRateLabel.alpha = 1
self.exchangeInfoStackView.alpha = 1
self.couponBackgroundView.isHidden = false
self.couponBackgroundView.alpha = 1
}
self.action = .continue
self.requestModel?.exchangeRateDetail = exchangeRateModel
}
}
var presenter: ResendExchangeModuleInterface?
var calcBy = ""
var action: ActionBehaviour? {
didSet {
if let action = action {
switch action {
case .calculate:
self.continueButton.setTitle("calculate_text".localized(), for: .normal)
case .continue:
self.continueButton.setTitle("continue_text".localized(), for: .normal)
}
}
}
}
weak var actionDelegate: SendMoneyExchangeRateActionDelegate?
var selectedCurrencyViewModel: SendMoneyExchangeRateCurrencyViewModel?
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
self.setup()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = "resend_money_text".localized()
initialSetup()
self.presenter?.viewIsReady()
self.action = ActionBehaviour.calculate
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationItem.title = ""
}
// MARK: IBActions
@IBAction func continueButton(_ sender: UIButton) {
self.view.endEditing(true)
if let action = action {
switch action {
case .calculate:
self.calculate()
case .continue:
// todo
self.showReceiverDetailPage()
}
}
}
// MARK: Other Functions
private func setup() {
// all setup should be done here
initialSetup()
setupTargets()
setupView()
configureLanguage()
senderTextField.delegate = self
reciepientTextField.delegate = self
}
private func configureLanguage() {
self.recipientGetsTitleLabel.text = "recepient_gets_text".localized()
self.youSendTitleLabel.text = "you_send_text".localized()
let dropDownImage = #imageLiteral(resourceName: "dropdown_white").withRenderingMode(UIImage.RenderingMode.alwaysTemplate)
couponDropDownImageView.image = dropDownImage
couponDropDownImageView.tintColor = .themeRed
couponNameLabel.text = ""
}
func setupView() {
[backgroundViewCountryLabel1, backgroundViewCountryLabel2].forEach({
$0?.layer.cornerRadius = 5
})
[exchangeBackground1, exchangeBackground2, couponBackgroundView].forEach({
$0?.layer.borderWidth = 1
$0?.layer.borderColor = UIColor.init(hex: "#E0E0E0").cgColor
$0?.layer.cornerRadius = 5
})
}
private func showReceiverDetailPage() {
let sendmoneyModel = self.convertModel()
if let navigation = self.navigationController, let reciepient = self.reciepient {
let wireframe = SendMoneyVerificationWireframe()
wireframe.openVerification(reciepient: reciepient, model: sendmoneyModel, source: navigation)
}
}
private func setCoupon(){
couponNameTitleLabel.text = "coupon_text".localized()
couponNameLabel.text = exchangeRateModel?.formattedCouponName
realSenderTitleLabel.text = "applied_amount_text".localized()
if let schemeId = exchangeRateModel?.schemeId,
schemeId != "" {
guard
let discountText = exchangeRateModel?.discountValue,
let senderText = senderTextField.text?.stringRemovingComma(),
let senderValue = Int(senderText),
let discountValue = Int(discountText) else {
realSenderLabel.text = senderTextField.text
return
}
realSenderView.isHidden = false
realSenderView.alpha = 1
realSenderLabel.text = "\(senderValue - discountValue)".likeCommaMoney()
} else {
realSenderView.isHidden = true
realSenderView.alpha = 0
realSenderLabel.text = "0"
}
}
func convertReciepient(model: ResendReceiver) -> Recipient {
var reciepient = Recipient()
reciepient.firstName = model.rFullName
reciepient.receiverID = self.resendInfoModel?.remitDetial?.receiverId
reciepient.purposeOfRemitID = self.resendInfoModel?.remitDetial?.purposeOfRemittance
reciepient.relationshipID = self.resendInfoModel?.remitDetial?.relWithSender
reciepient.address = model.rAddress
reciepient.country = model.rCountry
reciepient.mobile = model.rMobile
return reciepient
}
private func convertModel() -> SendMoneyRequestModel {
let model = SendMoneyRequestModel()
self.exchangeRateModel?.calcBy = self.calcBy
self.exchangeRateModel?.autodebitSendingAmount = self.senderTextField.text!.stringRemovingComma()
model.exchangeRateDetail = self.exchangeRateModel
model.autoDebitAccount = self.requestModel?.autoDebitAccount
/* SendMoneyPayoutMode */
// "deliveryMethodId": model.paymemtMode?.id ?? "",
// "payOutPartner": model.paymemtMode?.payoutPartner ?? "",
// "ReceiverAccountNo": model.paymemtMode?.accountNumber ?? "",
let paymentMode = SendMoneyPayoutMode()
paymentMode.id = self.resendInfoModel?.remitDetial?.deliveryMethodId
paymentMode.payoutPartner = self.resendInfoModel?.remitDetial?.payOutPartner
paymentMode.accountNumber = self.resendInfoModel?.remitDetial?.receiverAccountNo
paymentMode.mode = self.resendInfoModel?.receiver?.deliveryMethod
model.paymemtMode = paymentMode
/* SendMoneyBank */
// "pAgent": model.bank?.id ?? "",
let bank = SendMoneyBank()
bank.id = self.resendInfoModel?.remitDetial?.pAgent
bank.name = self.requestModel?.transaction?.bankName
model.bank = bank
/* SendMoneyBankBranch */
// branch
// "pBranch": model.branch?.id ?? "",
let branch = SendMoneyBankBranch()
branch.id = self.resendInfoModel?.remitDetial?.pBranch
model.branch = branch
return model
}
private func initialSetup() {
self.exchangeRateModel = nil
self.exchangeRateLabel.isHidden = true
self.exchangeRateLabel.alpha = 0
self.transferFeeInfoLabel.isHidden = true
self.transferFeeInfoLabel.alpha = 0
self.exchangeInfoStackView.isHidden = true
exchangeInfoStackView.alpha = 0
self.setCountryFlag(countryCode: self.reciepient?.countryCode ?? "")
}
private func setCountryFlag(countryCode: String) {
let flag = CountryInfo().getFlag(for: countryCode)
self.countryFlagImage.image = flag
}
private func setupTargets() {
self.reciepientTextField.addTarget(
self,
action: #selector(self.textChanged(sender:)),
for: UIControl.Event.editingChanged
)
self.senderTextField.addTarget(
self,
action: #selector(self.textChanged(sender:)),
for: UIControl.Event.editingChanged
)
}
func calculate() {
let senderAmount = self.senderTextField.text!
let reciepientAmount = self.reciepientTextField.text!
self.calculateExchangeRate(
senderAmount: senderAmount,
reciepientAmount: reciepientAmount,
calcBy: self.calcBy
)
}
func calculateExchangeRate(senderAmount: String, reciepientAmount: String, calcBy: String) {
let senderAmount = senderAmount.stringRemovingComma() // send sAmt amount
let reciepientAmount = reciepientAmount.stringRemovingComma()
let recipientCurrency = self.resendInfoModel?.exchangeRate?.pCurrency
let reciepientCountryId = self.resendInfoModel?.exchangeRate?.pCountryId
let paymentMethod = self.requestModel?.autoDebitAccount?.type
let paymentMethodId = self.resendInfoModel?.exchangeRate?.serviceType
let payoutPartner = self.resendInfoModel?.exchangeRate?.payoutPartner
let myUsername = Utility.getMyUserName()
let bankId = self.resendInfoModel?.exchangeRate?.payoutAgent
let reciepientCountryName = self.resendInfoModel?.exchangeRate?.pCountryName
self.calculate(
senderAmt: senderAmount,
recieverAmt: reciepientAmount,
recieverCurrency: recipientCurrency,
recieverCountryName: reciepientCountryName,
recieverCountryId: reciepientCountryId,
paymentMethod: paymentMethod,
paymentMethodId: paymentMethodId,
calcBy: calcBy,
payoutPartner: payoutPartner,
userId: myUsername,
bankId: bankId
)
}
func calculate(
senderAmt: String?,
senderCurrency: String? = "KRW",
recieverAmt: String?,
recieverCurrency: String?,
recieverCountryName: String?,
recieverCountryId: String?,
paymentMethod: String?,
paymentMethodId: String?,
calcBy: String?,
senderCountryId: String? = "118",
payoutPartner: String?,
userId: String?,
bankId: String?
) {
self.presenter?.calculate(
senderAmt: senderAmt ?? "",
senderCurrency: senderCurrency ?? "",
recieverAmt: recieverAmt ?? "",
recieverCurrency: recieverCurrency ?? "",
recieverCountryName: recieverCountryName ?? "",
recieverCountryId: recieverCountryId ?? "",
paymentMethod: paymentMethod ?? "",
paymentMethodId: paymentMethodId ?? "",
calcBy: calcBy ?? "",
senderCountryId: senderCountryId ?? "",
payoutPartner: payoutPartner ?? "",
userId: userId ?? "",
bankId: bankId ?? ""
)
}
@objc private func textChanged(sender: UITextField) {
self.action = .calculate
switch sender {
case senderTextField:
self.reciepientTextField.text = ""
self.calcBy = "c"
senderTextField.text = Utility.getCommaSeperatedString(numberString: senderTextField.text!)
case reciepientTextField:
self.senderTextField.text = ""
self.calcBy = "p"
reciepientTextField.text = Utility.getCommaSeperatedString(numberString: reciepientTextField.text!)
default:
break
}
self.exchangeRateModel?.calcBy = calcBy
}
}
// MARK: ResendExchangeViewInterface
extension ResendExchangeViewController: ResendExchangeViewInterface {
func show(model: ResendDetail) {
self.resendInfoModel = model
self.calculateExchangeRate(senderAmount: self.senderTextField.text!, reciepientAmount: self.reciepientTextField.text!, calcBy: self.calcBy)
}
func showExchangeRate(error: String) {
self.alert(type: .error, message: error)
}
func show(error: String) {
self.alert(type: .error, message: error) {
self.navigationController?.popViewController(animated: true)
}
}
func showLoading() {
self.showProgressHud()
}
func hideLoading() {
self.hideProgressHud()
}
func show(model: SendMoneyExchangeRateModel) {
self.exchangeRateModel = model
}
}
extension ResendExchangeViewController: FetchSendMoneyExchangeRateService {
}
// MARK: - UITextFieldDelegate
extension ResendExchangeViewController: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) {
switch textField {
case senderTextField, reciepientTextField:
if senderTextField.text != "" || reciepientTextField.text != "" {
calculate()
}
default:
break
}
}
}

16
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/View/ResendExchangeViewInterface.swift

@ -1,16 +0,0 @@
//
// ResendExchangeViewInterface.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol ResendExchangeViewInterface: class {
func showLoading()
func hideLoading()
func show(model: ResendDetail)
func show(model: SendMoneyExchangeRateModel)
func show(error: String)
func showExchangeRate(error: String)
}

41
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/Wireframe/ResendExchangeWireframe.swift

@ -1,41 +0,0 @@
//
// ResendExchangeWireframe.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class ResendExchangeWireframe {
weak var view: UIViewController!
var model: ResendRequestModel?
var transactionId: String?
}
extension ResendExchangeWireframe: ResendExchangeWireframeInput {
var storyboardName: String {return "ResendExchange"}
func getMainView() -> UIViewController {
let service = ResendExchangeService()
let interactor = ResendExchangeInteractor(service: service, transactionId: self.transactionId)
let presenter = ResendExchangePresenter()
let viewController = viewControllerFromStoryboard(of: ResendExchangeViewController.self)
viewController.requestModel = self.model
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
self.view = viewController
return viewController
}
func openExchangeWireFrame(model: ResendRequestModel, transactionId: String, source: UINavigationController) {
self.model = model
self.transactionId = transactionId
self.pushMainView(in: source)
}
}

13
GME Remit/Modules/RemittanceModules/OverseasModules/ResendExchange/User Interface/Wireframe/ResendExchangeWireframeInput.swift

@ -1,13 +0,0 @@
//
// ResendExchangeWireframeInput.swift
// GME Remit
//
// Created by gme_2 on 18/03/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol ResendExchangeWireframeInput: WireframeInput {
}

2
GME Remit/Modules/RemittanceModules/OverseasModules/SelectCoupon/User Interface/Presenter/SelectCouponPresenter.swift

@ -36,6 +36,4 @@ extension SelectCouponPresenter: SelectCouponInteractorOutput {
func error(with error: Error) {
view?.error(with: error)
}
}

5
GME Remit/Modules/RemittanceModules/OverseasModules/SelectCoupon/User Interface/View/Cell/CouponCell.swift

@ -37,10 +37,11 @@ class CouponCell: UITableViewCell {
couponCellBackgroundView.layer.cornerRadius = 5
}
func setModel(_ model: Coupon?){
func setModel(_ model: Coupon?) {
couponNameLabel.text = model?.couponName?.uppercased()
let discount = model?.discountType == "1" ? "\(model?.discountPercent ?? "0")%" : "\(model?.discountValue ?? "0") KRW"
let discount =
model?.discountType == "1" ? "\(model?.discountPercent ?? "0")%" : "\(model?.discountValue ?? "0") KRW"
discountLabel.text = "(\(discount))"

3
GME Remit/Modules/RemittanceModules/OverseasModules/SelectCoupon/User Interface/View/SelectCouponViewController.swift

@ -139,7 +139,7 @@ extension SelectCouponViewController: UITableViewDelegate {
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
guard let cell = tableView.cellForRow(at: indexPath) as? CouponCell else{
guard let cell = tableView.cellForRow(at: indexPath) as? CouponCell else {
return
}
cell.isSelectedCoupon = false
@ -152,7 +152,6 @@ extension SelectCouponViewController: UITableViewDelegate {
}
// MARK: - PanModalPresenter
extension SelectCouponViewController: PanModalPresentable {
var panScrollable: UIScrollView? {

9
GME Remit/Modules/RemittanceModules/OverseasModules/SelectCoupon/User Interface/Wireframe/SelectCouponWireframe.swift

@ -20,7 +20,12 @@ extension SelectCouponWireframe: SelectCouponWireframeInput {
func getMainView() -> UIViewController {
let service = SelectCouponService()
let interactor = SelectCouponInteractor(service: service, selectedCoupon: selectedCoupon, coupons: coupons)
let interactor = SelectCouponInteractor(
service: service,
selectedCoupon: selectedCoupon,
coupons: coupons
)
let presenter = SelectCouponPresenter()
let viewController = viewControllerFromStoryboard(of: SelectCouponViewController.self)
@ -39,7 +44,7 @@ extension SelectCouponWireframe: SelectCouponWireframeInput {
with coupons: [Coupon]?,
delegate: SelectCouponViewDelegate?,
in source: UIViewController?
){
) {
selectedCoupon = coupon
self.coupons = coupons
guard let vc = self.getMainView() as? SelectCouponViewController else {

60
GME Remit/Modules/RemittanceModules/OverseasModules/SelectPayment/User Interface/Wireframe/SelectPaymentWireframe.swift

@ -10,41 +10,39 @@ import UIKit
import PanModal
class SelectPaymentWireframe {
weak var view: UIViewController!
weak var delegate: SelectPaymentDelegate?
private var models: [Account]?
weak var view: UIViewController!
weak var delegate: SelectPaymentDelegate?
private var models: [Account]?
}
extension SelectPaymentWireframe: SelectPaymentWireframeInput {
var storyboardName: String {return "SelectPayment"}
func getMainView() -> UIViewController {
let service = SelectPaymentService()
let interactor = SelectPaymentInteractor(service: service, models: self.models)
let presenter = SelectPaymentPresenter()
let viewController = viewControllerFromStoryboard(of: SelectPaymentViewController.self)
viewController.presenter = presenter
viewController.delegate = self.delegate
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
var storyboardName: String {return "SelectPayment"}
self.view = viewController
return viewController
}
func openSelectPaymentUsingPanModal(with models: [Account]?, in source: UIViewController?) {
self.models = models
func getMainView() -> UIViewController {
let service = SelectPaymentService()
let interactor = SelectPaymentInteractor(service: service, models: self.models)
let presenter = SelectPaymentPresenter()
let viewController = viewControllerFromStoryboard(of: SelectPaymentViewController.self)
viewController.presenter = presenter
viewController.delegate = self.delegate
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
self.view = viewController
return viewController
}
guard let vc = self.getMainView() as? SelectPaymentViewController else { return }
func openSelectPaymentUsingPanModal(with models: [Account]?, in source: UIViewController?){
self.models = models
let vc = self.getMainView() as! SelectPaymentViewController
// let navigationVC = UINavigationController(rootViewController: vc)
// guard let parentVC = source else {return}
source?.presentPanModal(vc)
}
source?.presentPanModal(vc)
}
}

60
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/Application Logic/Interactor/SendMoneyCodeInteractor.swift

@ -9,37 +9,41 @@
import Foundation
class SendMoneyCodeInteractor {
// MARK: Properties
weak var output: SendMoneyCodeInteractorOutput?
private let service: SendMoneyCodeServiceType
private var request: OTPProtocol?
// MARK: Initialization
init(service: SendMoneyCodeServiceType, request: OTPProtocol?) {
self.service = service
self.request = request
}
// MARK: Converting entities
// MARK: Properties
weak var output: SendMoneyCodeInteractorOutput?
private let service: SendMoneyCodeServiceType
private var request: OTPProtocol?
// MARK: Initialization
init(service: SendMoneyCodeServiceType, request: OTPProtocol?) {
self.service = service
self.request = request
}
// MARK: Converting entities
}
// MARK: SendMoneyCode interactor input interface
extension SendMoneyCodeInteractor: SendMoneyCodeInteractorInput {
func viewIsReady() {
let customerId = Utility.getMyUserName()
let params = [
"amount": request?.otpAmount ?? "",
"kftcId": request?.otpAccountID ?? "",
"userId": Utility.getMyUserName()
]
self.service.requestOtp(params: params, customerId: customerId, success: { (message) in
self.output?.show(message: message)
}) { (error) in
self.output?.show(error: error)
}
}
func viewIsReady() {
let customerId = Utility.getMyUserName()
let params = [
"amount": request?.otpAmount ?? "",
"kftcId": request?.otpAccountID ?? "",
"userId": Utility.getMyUserName()
]
self.service.requestOtp(
params: params,
customerId: customerId,
success: { (message) in
self.output?.show(message: message)
},
failure: { (error) in
self.output?.show(error: error)
})
}
}

1
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/Application Logic/Service/SendMoneyCodeService.swift

@ -16,4 +16,3 @@ class SendMoneyCodeService: SendMoneyCodeServiceType {
// MARK: Data management
}

58
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/Application Logic/Service/SendMoneyCodeServiceType.swift

@ -10,32 +10,48 @@ import Foundation
import Alamofire
protocol SendMoneyCodeServiceType: class, OtpCodeRequestApiService {
}
protocol OtpCodeRequestApiService: ApiServiceType {
func requestOtp(params: [String: String], customerId: String, success: @escaping (String) -> (), failure: @escaping (Error) -> ())
func requestOtp(
params: [String: String],
customerId: String,
success: @escaping (String) -> Void,
failure: @escaping (Error) -> Void
)
}
extension OtpCodeRequestApiService {
func requestOtp(params: [String: String], customerId: String, success: @escaping (String) -> (), failure: @escaping (Error) -> ()) {
let url = baseUrl + "/kftc/GetOTP"
auth.request(method: .post, url: url, params: params, encoding: JSONEncoding.default, success: { (response: SuccessMessageContainer) in
if (response.errorCode ?? "") == "1" {
let error = NSError.init(domain: "Network", code: 0, userInfo: [NSLocalizedDescriptionKey : response.message ?? ""])
failure(error)
}else {
let model = response.message
success(model ?? "")
}
}) { (error) in
failure(error)
func requestOtp(
params: [String: String],
customerId: String,
success: @escaping (String) -> Void,
failure: @escaping (Error) -> Void
) {
let url = baseUrl + "/kftc/GetOTP"
auth.request(
method: .post,
url: url,
params: params,
encoding: JSONEncoding.default,
success: { (response: SuccessMessageContainer) in
if (response.errorCode ?? "") == "1" {
let error = NSError(
domain: "Network",
code: 0,
userInfo: [NSLocalizedDescriptionKey : response.message ?? ""]
)
failure(error)
} else {
let model = response.message
success(model ?? "")
}
}
},
failure: { (error) in
failure(error)
}
)
}
}

7
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/User Interface/Presenter/SendMoneyCodePresenter.swift

@ -29,7 +29,12 @@ extension SendMoneyCodePresenter: SendMoneyCodeModuleInterface {
interactor?.viewIsReady()
otpCount += 1
} else {
let error = NSError(domain: "OTP Count Error", code: 0, message: "The transaction request period has expired.\nPlease try to send money again.")
let error = NSError(
domain: "OTP Count Error",
code: 0,
message: "The transaction request period has expired.\nPlease try to send money again."
)
self.view?.expiredError(error: error)
}
}

4
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyCode/User Interface/View/SendMoneyCode.storyboard

@ -218,10 +218,10 @@
</scenes>
<resources>
<namedColor name="ThemeMainBackground">
<color red="0.098039215686274508" green="0.098039215686274508" blue="0.098039215686274508" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.097999997437000275" green="0.097999997437000275" blue="0.097999997437000275" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
<namedColor name="ThemeRed">
<color red="1" green="0.15294117647058825" blue="0.15294117647058825" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="1" green="0.15299999713897705" blue="0.15299999713897705" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
<namedColor name="ThemeText">
<color white="0.80299997329711914" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>

2
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/Application Logic/Model/Coupon.swift

@ -27,6 +27,4 @@ struct Coupon: Mappable {
discountValue <- map["discountValue"]
expireDate <- map["expireDate"]
}
}

2
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/Application Logic/Service/SendMoneyExchangeRateServiceType.swift

@ -19,7 +19,7 @@ protocol FetchSendMoneyExchangeRateService: ApiServiceType {
func calculate(
params: [String: String],
success: @escaping (SendMoneyExchangeRateModel?) -> Void,
failure: @escaping (Error) -> ()
failure: @escaping (Error) -> Void
)
}

16
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/Module Interface/SendMoneyExchangeRateModuleInterface.swift

@ -7,7 +7,21 @@
//
protocol SendMoneyExchangeRateModuleInterface: class {
func calculate(senderAmt: String?, senderCurrency: String? , recieverAmt: String?, recieverCurrency: String?, recieverCountryName: String?, recieverCountryId: String?, paymentMethod: String?, paymentMethodId: String? ,calcBy: String?, senderCountryId: String?, payoutPartner: String?, userId: String?, bankId: String?)
func calculate(
senderAmt: String?,
senderCurrency: String? ,
recieverAmt: String?,
recieverCurrency: String?,
recieverCountryName: String?,
recieverCountryId: String?,
paymentMethod: String?,
paymentMethodId: String?,
calcBy: String?,
senderCountryId: String?,
payoutPartner: String?,
userId: String?,
bankId: String?
)
func fetchCoupons()
}

2
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/Presenter/SendMoneyParentPresenter.swift

@ -38,6 +38,4 @@ extension SendMoneyParentPresenter: SendMoneyParentInteractorOutput {
func show(model: Account) {
self.view?.show(model: model)
}
}

5
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift

@ -42,8 +42,6 @@ extension SendMoneyRequestModel: OTPProtocol {
var otpAccountID: String? {
return autoDebitAccount?.kftcAccountId
}
}
class SendMoneyParentViewController: UIViewController {
@ -68,7 +66,6 @@ class SendMoneyParentViewController: UIViewController {
// MARK: IBOutlets
// Container view holds the child view controllers
// There are three child view controllers.
// 1. SendMoneyPaymentModeViewController
// 2. SendMoneyExchangeRateViewController
// 3. SendMoneyVerificationViewController
@ -79,7 +76,6 @@ class SendMoneyParentViewController: UIViewController {
@IBOutlet weak var verificationLabel: UILabel!
// MARK: Properties
var sendMoneyPaymentModeViewController: SendMoneyPaymentModeViewController?
var sendMoneyExchangeRateViewController: SendMoneyExchangeRateViewController?
var sendMoneyVerificationViewController: SendMoneyVerificationViewController?
@ -223,7 +219,6 @@ class SendMoneyParentViewController: UIViewController {
}
}
// Make SendMoneyPaymentModeViewController as front View Controller
private func addExchangeViewController() {
guard let exchangeViewController = sendMoneyExchangeRateViewController else { return }

1
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/ViewModels/SenMoneyPaymentModeRecipientViewModel.swift

@ -8,7 +8,6 @@
import Foundation
class SenMoneyPaymentModeRecipientViewModel {
var id: String?
var firstName: String?

53
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/Wireframe/SendMoneyParentWireframe.swift

@ -9,34 +9,39 @@
import UIKit
class SendMoneyParentWireframe {
weak var view: UIViewController!
var reciepient: Recipient?
var account: Account?
weak var view: UIViewController!
var reciepient: Recipient?
var account: Account?
}
extension SendMoneyParentWireframe: SendMoneyParentWireframeInput {
var storyboardName: String {return "SendMoneyParent"}
func getMainView() -> UIViewController {
let service = SendMoneyParentService()
let interactor = SendMoneyParentInteractor(
service: service,
reciepient: reciepient,
account: self.account
)
var storyboardName: String {return "SendMoneyParent"}
let presenter = SendMoneyParentPresenter()
let viewController = viewControllerFromStoryboard(of: SendMoneyParentViewController.self)
func getMainView() -> UIViewController {
let service = SendMoneyParentService()
let interactor = SendMoneyParentInteractor(service: service, reciepient: reciepient, account: self.account)
let presenter = SendMoneyParentPresenter()
let viewController = viewControllerFromStoryboard(of: SendMoneyParentViewController.self)
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
self.view = viewController
return viewController
}
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
presenter.view = viewController
func open(for reciepient: Recipient, with account: Account, in source: UINavigationController) {
self.reciepient = reciepient
self.account = account
self.pushMainView(in: source)
}
self.view = viewController
return viewController
}
func open(for reciepient: Recipient, with account: Account, in source: UINavigationController) {
self.reciepient = reciepient
self.account = account
self.pushMainView(in: source)
}
}

59
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyPaymentMode/Application Logic/Interactor/SendMoneyPaymentModeInteractor.swift

@ -1,59 +0,0 @@
//
// SendMoneyPaymentModeInteractor.swift
// GMERemittance
//
// Created by gme_2 on 28/08/2018.
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class SendMoneyPaymentModeInteractor {
// MARK: Properties
weak var output: SendMoneyPaymentModeInteractorOutput?
private let service: SendMoneyPaymentModeServiceType
// MARK: Initialization
init(service: SendMoneyPaymentModeServiceType) {
self.service = service
}
// MARK: Converting entities
// MARK: Private Functions
}
// MARK: SendMoneyPaymentMode interactor input interface
extension SendMoneyPaymentModeInteractor: SendMoneyPaymentModeInteractorInput {
func viewIsReady(for reciepient: Recipient) {
let countryCode = reciepient.countryCode ?? ""
let id = reciepient.receiverID ?? ""
self.service.fetchInformations(countryCode: countryCode, id: id, success: { (model) in
self.output?.show(model: model?.payoutMode ?? [])
}) { (error) in
self.output?.show(error: error)
}
}
func validateAccountNumber(params: [String : String]) {
self.service.validate(params: params, success: {
self.output?.success()
}) { (error) in
self.output?.show(error: error)
}
}
func fetchBranch(countryCode code: String, bankID id: String) {
service.fetchBranch(
countryCode: code,
bankId: id,
branchName: "",
success: { self.output?.setBranches(with: $0)},
failure: { self.output?.show(error: $0) }
)
}
}

20
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyPaymentMode/Application Logic/Interactor/SendMoneyPaymentModeInteractorIO.swift

@ -1,20 +0,0 @@
//
// SendMoneyPaymentModeInteractorIO.swift
// GMERemittance
//
// Created by gme_2 on 28/08/2018.
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol SendMoneyPaymentModeInteractorInput: class {
func viewIsReady(for reciepient: Recipient)
func validateAccountNumber(params: [String: String])
func fetchBranch(countryCode: String, bankID: String)
}
protocol SendMoneyPaymentModeInteractorOutput: class {
func setBranches(with model: [SendMoneyBankBranch]?)
func show(model: [SendMoneyPayoutMode])
func show(error: Error)
func success()
}

18
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyPaymentMode/Application Logic/Service/SendMoneyPaymentModeService.swift

@ -1,18 +0,0 @@
//
// SendMoneyPaymentModeService.swift
// GMERemittance
//
// Created by gme_2 on 28/08/2018.
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class SendMoneyPaymentModeService: SendMoneyPaymentModeServiceType {
// MARK: Properties
// MARK: Initialization
// MARK: Data management
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save