From 339c069d89d121d7d61c1f4d02ea5c46efe24c02 Mon Sep 17 00:00:00 2001 From: InKwon James Kim Date: Tue, 31 Dec 2019 15:55:28 +0900 Subject: [PATCH] 1. changed validate condition of another id picture field wise select id type 2. linked api of penny test submit 3. implemented step3 --- GME Remit.xcodeproj/project.pbxproj | 4 + GME Remit/APIs/Router/APIRouter.swift | 13 +++ .../Models/Response/SuccessMessage.swift | 4 + .../View/HomeViewController.swift | 3 - .../Interactor/NewRegisterInteractor.swift | 2 +- .../Service/NewRegisterService.swift | 11 +- .../Service/NewRegisterServiceType.swift | 2 +- .../Presenter/NewRegisterPresenter.swift | 2 - .../Wireframe/NewRegisterWireframe.swift | 91 ++++++++++++++- .../NewRegisterStep1Interactor.swift | 10 ++ .../Application Logic/Model/KJBank.swift | 35 ++++++ .../Model/KYCInfromation.swift | 2 +- .../Model/PrimaryInformation.swift | 3 + .../Presenter/NewRegisterStep1Presenter.swift | 29 +++-- .../View/NewRegisterStep1.storyboard | 14 +-- .../View/NewRegisterStep1ViewController.swift | 59 ++++++---- .../Presenter/NewRegisterStep2Presenter.swift | 3 + .../View/NewRegisterStep2ViewController.swift | 17 +++ .../NewRegisterStep3Interactor.swift | 26 +++++ .../NewRegisterStep3InteractorIO.swift | 6 +- .../Service/NewRegisterStep3Service.swift | 22 +++- .../Service/NewRegisterStep3ServiceType.swift | 7 +- .../Presenter/NewRegisterStep3Presenter.swift | 40 ++++++- .../View/NewRegisterStep3.storyboard | 48 +++++--- .../View/NewRegisterStep3ViewController.swift | 104 ++++++++++++++---- .../Modules/SideMenu/SideMenu.storyboard | 8 +- .../bankCI/deutsche.imageset/Contents.json | 21 ++++ .../bankCI/deutsche.imageset/deutsche.png | Bin 0 -> 4601 bytes .../bankCI/epost.imageset/Contents.json | 21 ++++ .../bankCI/epost.imageset/epost.png | Bin 0 -> 4333 bytes .../bankCI/hsbc.imageset/Contents.json | 21 ++++ .../bankCI/hsbc.imageset/hsbc.png | Bin 0 -> 3492 bytes .../bankCI/kfcc.imageset/Contents.json | 21 ++++ .../bankCI/kfcc.imageset/kfcc.png | Bin 0 -> 5337 bytes .../bankCI/shinhyup.imageset/Contents.json | 21 ++++ .../bankCI/shinhyup.imageset/shinhyup.png | Bin 0 -> 5811 bytes GME Remit/Utilities/BankEnum.swift | 61 ++++++++++ GME Remit/Utilities/KeyChain.swift | 3 + .../WkWebView/WkWebViewController.swift | 7 +- 39 files changed, 636 insertions(+), 105 deletions(-) create mode 100644 GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/KJBank.swift create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/deutsche.imageset/Contents.json create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/deutsche.imageset/deutsche.png create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/epost.imageset/Contents.json create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/epost.imageset/epost.png create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/hsbc.imageset/Contents.json create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/hsbc.imageset/hsbc.png create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/kfcc.imageset/Contents.json create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/kfcc.imageset/kfcc.png create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/shinhyup.imageset/Contents.json create mode 100644 GME Remit/Supported Files/Assets.xcassets/bankCI/shinhyup.imageset/shinhyup.png diff --git a/GME Remit.xcodeproj/project.pbxproj b/GME Remit.xcodeproj/project.pbxproj index 942b2939..e1ff8b5e 100644 --- a/GME Remit.xcodeproj/project.pbxproj +++ b/GME Remit.xcodeproj/project.pbxproj @@ -245,6 +245,7 @@ 73210DAF22FBF2BA00715D6C /* ViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73210DAE22FBF2BA00715D6C /* ViewModelType.swift */; }; 73210DB122FBF4B000715D6C /* ObservableType+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73210DB022FBF4B000715D6C /* ObservableType+Ext.swift */; }; 73210DB522FC01C200715D6C /* RecipientCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73210DB422FC01C200715D6C /* RecipientCell.swift */; }; + 73265B4F23BAEC90007BA388 /* KJBank.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73265B4E23BAEC90007BA388 /* KJBank.swift */; }; 7327567F23B0456400BF66C5 /* ManageAgreementServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7327567123B0456300BF66C5 /* ManageAgreementServiceType.swift */; }; 7327568023B0456400BF66C5 /* ManageAgreementService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7327567223B0456300BF66C5 /* ManageAgreementService.swift */; }; 7327568123B0456400BF66C5 /* ManageAgreementInteractorIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7327567423B0456300BF66C5 /* ManageAgreementInteractorIO.swift */; }; @@ -2654,6 +2655,7 @@ 73210DAE22FBF2BA00715D6C /* ViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModelType.swift; sourceTree = ""; }; 73210DB022FBF4B000715D6C /* ObservableType+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ObservableType+Ext.swift"; sourceTree = ""; }; 73210DB422FC01C200715D6C /* RecipientCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipientCell.swift; sourceTree = ""; }; + 73265B4E23BAEC90007BA388 /* KJBank.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KJBank.swift; sourceTree = ""; }; 7327567123B0456300BF66C5 /* ManageAgreementServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManageAgreementServiceType.swift; sourceTree = ""; }; 7327567223B0456300BF66C5 /* ManageAgreementService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManageAgreementService.swift; sourceTree = ""; }; 7327567423B0456300BF66C5 /* ManageAgreementInteractorIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManageAgreementInteractorIO.swift; sourceTree = ""; }; @@ -7045,6 +7047,7 @@ 738D7284239F32C7006B4EA7 /* PictureInformation.swift */, 73ABF00E23A06F0500E2C5B9 /* PropertyUtility.swift */, 733CC36223A1D96A0027DDF9 /* KYCSave.swift */, + 73265B4E23BAEC90007BA388 /* KJBank.swift */, ); path = Model; sourceTree = ""; @@ -15942,6 +15945,7 @@ 736A8C472277EB2A00337A50 /* BiometricNotificationWireframe.swift in Sources */, 730D7891227A94E1007E517E /* RewardWireframe.swift in Sources */, 7389601322C2F208003FEA90 /* TablePresenterViewInterface.swift in Sources */, + 73265B4F23BAEC90007BA388 /* KJBank.swift in Sources */, D9031146214786EA00AD5BA9 /* ForgotPasswordViewInterface.swift in Sources */, 7301979922535135001954AB /* kycForm1InteractorIO.swift in Sources */, D946719B21426DFB003924DB /* LoginWireframe.swift in Sources */, diff --git a/GME Remit/APIs/Router/APIRouter.swift b/GME Remit/APIs/Router/APIRouter.swift index 286d328b..b959ba39 100644 --- a/GME Remit/APIs/Router/APIRouter.swift +++ b/GME Remit/APIs/Router/APIRouter.swift @@ -80,6 +80,7 @@ enum APIRouter { case loadKYCInformation case saveKYCInformation(model: KYCSave) case requestPennyTestAtRegister(resend: String) + case pennyTestSubmitAtRegister(accountNumber: String, certNumber: String) case fetchKFTCParameterForRegister } @@ -496,6 +497,8 @@ extension APIRouter { case .fetchKFTCParameterForRegister: let userID = GMEDB.shared.user.string(.userId) ?? "" return "\(baseUrlWithoutVersion)/v4/GetKftcParameters/\(userID)" + case .pennyTestSubmitAtRegister: + return "\(baseUrl)/mobile/pennytest/getcertified" } } } @@ -584,6 +587,8 @@ extension APIRouter { return .post case .fetchKFTCParameterForRegister: return .get + case .pennyTestSubmitAtRegister: + return .post } } @@ -904,6 +909,14 @@ extension APIRouter { "branchId": model.primaryInformation?.branchID ?? "", "refferalCode": model.primaryInformation?.refferalCode ?? "" ] + + case .pennyTestSubmitAtRegister(let accountNumber, let certNumber): + let senderID = GMEDB.shared.user.string(.senderId) ?? "" + return [ + "AccountNo": accountNumber, + "CertNumber": certNumber, + "CustomerId": senderID + ] default: return nil } diff --git a/GME Remit/Models/Response/SuccessMessage.swift b/GME Remit/Models/Response/SuccessMessage.swift index f1729d9d..7558bccf 100644 --- a/GME Remit/Models/Response/SuccessMessage.swift +++ b/GME Remit/Models/Response/SuccessMessage.swift @@ -14,6 +14,10 @@ class SuccessMessage: Mappable { var extra: String? var yearlyLimit: String? + init() { + + } + required init?(map: Map) { } diff --git a/GME Remit/Modules/Home/User Interface/View/HomeViewController.swift b/GME Remit/Modules/Home/User Interface/View/HomeViewController.swift index 625549bd..c40f36ec 100644 --- a/GME Remit/Modules/Home/User Interface/View/HomeViewController.swift +++ b/GME Remit/Modules/Home/User Interface/View/HomeViewController.swift @@ -103,9 +103,6 @@ class HomeViewController: UIViewController { destination = nil } - - // FIXME: Test - self.presenter?.showKyc(step: .first) } } var sections: [Sections] = [.balance, .collection] diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Interactor/NewRegisterInteractor.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Interactor/NewRegisterInteractor.swift index ccdd7bbe..8f42d2a3 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Interactor/NewRegisterInteractor.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Interactor/NewRegisterInteractor.swift @@ -28,7 +28,7 @@ class NewRegisterInteractor { extension NewRegisterInteractor: NewRegisterInteractorInput { func requestPennyTest() { service.requestPennyTest( - isResendRequest: "N", + isResendRequest: .no, success: {[weak self] in self?.output?.resultRequestPennyTest(with: $0) }, diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Service/NewRegisterService.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Service/NewRegisterService.swift index 65ed7146..ce8ce55e 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Service/NewRegisterService.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Service/NewRegisterService.swift @@ -9,12 +9,17 @@ import Foundation class NewRegisterService: NewRegisterServiceType { + enum ResendType: String { + case no = "N" + case yes = "Y" + } + func requestPennyTest( - isResendRequest: String, + isResendRequest: ResendType, success: @escaping (SuccessMessage) -> Void, failure: @escaping (Error) -> Void - ) { - APIRouter.requestPennyTestAtRegister(resend: isResendRequest) + ) { + APIRouter.requestPennyTestAtRegister(resend: isResendRequest.rawValue) .json(success: success, failure: failure) } } diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Service/NewRegisterServiceType.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Service/NewRegisterServiceType.swift index ba26afe9..da0058a6 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Service/NewRegisterServiceType.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/Application Logic/Service/NewRegisterServiceType.swift @@ -8,7 +8,7 @@ protocol NewRegisterServiceType: class { func requestPennyTest( - isResendRequest: String, + isResendRequest: NewRegisterService.ResendType, success: @escaping (SuccessMessage) -> Void, failure: @escaping (Error) -> Void ) diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Presenter/NewRegisterPresenter.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Presenter/NewRegisterPresenter.swift index 5d2a5004..ed97eca5 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Presenter/NewRegisterPresenter.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Presenter/NewRegisterPresenter.swift @@ -31,8 +31,6 @@ class NewRegisterPresenter: ViewModelType { input.moveStep.drive(onNext: {[weak self] in switch $0 { case .third: - //GMEDB.shared.user.string(.pennyTestRequested) - // Check penny test request status. if 0 then request api, else 2 then go next step. let status = GMEDB.shared.user.string(.pennyTestStatusCode) ?? "0" if status == "1" { self?.wireframe?.moveStep(to: $0) diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift index edde762c..ce77a0b9 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift @@ -9,6 +9,7 @@ import UIKit import RxSwift import RxCocoa +import LGSideMenuController class NewRegisterWireframe { weak var view: UIViewController! @@ -61,7 +62,14 @@ extension NewRegisterWireframe: NewRegisterWireframeInput { switch step { case .first: move(step1VC) case .second: move(step2VC) - case .third: move(step3VC) + case .third: + view.alert( + message: "To verify your bank account, move to the last step, the penny test" + ) { [weak self] in + guard let `self` = self else { return } + self.move(self.step3VC) + } + case .finish: let message = """ Thank you for registering for GME. @@ -74,8 +82,18 @@ Once approved, you will receive SMS. message: message, title: "Success", okTitle: "Ok" - ) {[weak self] in - self?.view.navigationController?.popToRootViewController(animated: false) + ) {[weak self] in + guard let `self` = self else {return} + + if self.view.presentingViewController != nil { + GMEDB.shared.user.set(PennyTestStatusCode.completed.rawValue, .pennyTestStatusCode) + self.view.dismiss(animated: true) { + + } + } else { + GMEDB.shared.user.set(PennyTestStatusCode.completed.rawValue, .pennyTestStatusCode) + self.doLogin() + } } } } @@ -86,9 +104,12 @@ Once approved, you will receive SMS. } currentVC?.willMove(toParent: nil) - nextVC.view.translatesAutoresizingMaskIntoConstraints = false + currentVC?.removeFromParent() + currentVC?.view.removeFromSuperview() + nextVC.view.translatesAutoresizingMaskIntoConstraints = false parentVC.addChild(nextVC) + addSubview(subView: nextVC.view, toView: parentVC.containerView) if currentVC?.view.tag ?? 0 < nextVC.view.tag { @@ -125,6 +146,68 @@ Once approved, you will receive SMS. subView.bottomAnchor.constraint(equalTo: parentView.bottomAnchor).isActive = true subView.trailingAnchor.constraint(equalTo: parentView.trailingAnchor).isActive = true } + + private func doLogin() { + + let loginService = LoginService() + + guard let userID = KeyChain.shared.get(key: .temporaryID), + let password = KeyChain.shared.get(key: .temporaryPW) else { + return + } + + view.showProgressHud(backgroundColor: .clear, loadingColor: .white, textColor: .white) + + loginService.accessCode( + userId: userID, + password: password, + success: { [weak self] (user) in + guard let `self` = self else { return } + + KeyChain.shared.remove(key: .temporaryID) + KeyChain.shared.remove(key: .temporaryPW) + + let accessCode = user?.accessCode ?? "" + let accessCodeBase64 = accessCode + + Utility.save(user: user, accessCodeBase64: accessCodeBase64, password: password, login: true) + + let mainWireFrame = MainWireframe.shared + let tabBarViewController = mainWireFrame?.getMainView() + guard let sidemenuVc = UIStoryboard(name: "SideMenu", bundle: nil).instantiateViewController( + withIdentifier: "SideMenuViewController" + ) as? SideMenuViewController else { + return + } + + let sideMenuController = LGSideMenuController( + rootViewController: tabBarViewController, + leftViewController: sidemenuVc, + rightViewController: nil + ) + + sideMenuController.rootViewLayerShadowColor = UIColor(white: 0.9, alpha: 0.6) + sideMenuController.rootViewLayerShadowRadius = 8.0 + sideMenuController.leftViewPresentationStyle = .scaleFromBig + sideMenuController.leftViewWidth = UIScreen.main.bounds.width - 70.0 + + sideMenuController.leftViewBackgroundBlurEffect = UIBlurEffect(style: .regular) + + self.view.hideProgressHud() + mainWireFrame?.window?.backgroundColor = sidemenuVc.view.backgroundColor + mainWireFrame?.window?.rootViewController = sideMenuController + + }, + failure: { (error) in + self.view.hideProgressHud() + self.view.alert(type: .error, message: error.localizedDescription, title: "Warning") { + // if failed login, remove all in keychain, change logout status and then go splash screen + KeyChain.shared.removeAll() + self.view.navigationController?.popToRootViewController(animated: false) + } + } + ) + } } extension NewRegisterWireframe: NewRegisterDelegate { diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Interactor/NewRegisterStep1Interactor.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Interactor/NewRegisterStep1Interactor.swift index 8cba4395..153aad2a 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Interactor/NewRegisterStep1Interactor.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Interactor/NewRegisterStep1Interactor.swift @@ -44,6 +44,16 @@ extension NewRegisterStep1Interactor: NewRegisterStep1InteractorInput { service.saveInformation( with: model, success: {[weak self] in + if model.type == 1 { // primary information + if let bankCode = model.primaryInformation?.bankID, + let bankAccount = model.primaryInformation?.bankAccount, + let bankName = model.primaryInformation?.bankName { + KeyChain.shared.save(data: bankCode, key: .bankCode) + KeyChain.shared.save(data: bankAccount, key: .bankAccount) + KeyChain.shared.save(data: bankName, key: .bankName) + } + } + self?.output?.setSaveResult(with: self?.saveModel, message: $0) }, failure: {[weak self] in diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/KJBank.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/KJBank.swift new file mode 100644 index 00000000..041676ea --- /dev/null +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/KJBank.swift @@ -0,0 +1,35 @@ +// +// KJBank.swift +// GME Remit +// +// Created by InKwon James Kim on 2019/12/31. +// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. +// + +import ObjectMapper +struct KJBank: Mappable { + var id: String? + var value: String? + + init(id: String, value: String) { + self.id = id + self.value = value + } + + init?(map: Map) {} + + mutating func mapping(map: Map) { + id <- map["id"] + value <- map["text"] + } +} + +extension KJBank: TablePresenterProtocol { + var cellTitle: String? { + return value + } + + var cellImage: UIImage? { + return BankEnum.getBankCIFromKJBank(kjBankCode: id ?? "") + } +} diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/KYCInfromation.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/KYCInfromation.swift index 9f273760..ddfe496b 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/KYCInfromation.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/KYCInfromation.swift @@ -10,7 +10,7 @@ import ObjectMapper struct KYCInformation: Mappable { var cities: [KeyValue]? - var banks: [KeyValue]? + var banks: [KJBank]? var idTypes: [KeyValue]? var branches: [KeyValue]? diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/PrimaryInformation.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/PrimaryInformation.swift index df62969c..08b3b7d6 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/PrimaryInformation.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/Application Logic/Model/PrimaryInformation.swift @@ -9,6 +9,7 @@ import ObjectMapper struct PrimaryInformation: Mappable { + var bankName: String? var bankID: String? var bankAccount: String? var passportNumber: String? @@ -22,6 +23,7 @@ struct PrimaryInformation: Mappable { var refferalCode: String? init( + bankName: String?, bankID: String?, bankAccount: String?, passportNumber: String?, @@ -34,6 +36,7 @@ struct PrimaryInformation: Mappable { branchID: String?, refferalCode: String? ) { + self.bankName = bankName self.bankID = bankID self.bankAccount = bankAccount self.passportNumber = passportNumber diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/Presenter/NewRegisterStep1Presenter.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/Presenter/NewRegisterStep1Presenter.swift index 9b0d70f6..a717b613 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/Presenter/NewRegisterStep1Presenter.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/Presenter/NewRegisterStep1Presenter.swift @@ -34,7 +34,7 @@ class NewRegisterStep1Presenter: ViewModelType { let personalInfoSave: Driver let editingPersonalInfo: Driver - let bankName: Driver + let bankName: Driver let bankAccount: Driver let passportNumber: Driver let passportIssueDate: Driver @@ -65,7 +65,7 @@ class NewRegisterStep1Presenter: ViewModelType { let model: Driver let cities: Driver<[KeyValue]?> - let banks: Driver<[KeyValue]?> + let banks: Driver<[KJBank]?> let idTypes: Driver<[KeyValue]?> let branches: Driver<[KeyValue]?> @@ -116,31 +116,33 @@ class NewRegisterStep1Presenter: ViewModelType { input.bankAccount, input.passportNumber, input.passportIssueDate, - input.passportExpiryDate, - input.anotherIDType, - input.anotherIDNumber - ).map { (isValid, bank, account, passportNumber, passportIssue, passportExpiry, idType, idNumber) -> - PrimaryInformation? in - return isValid ? PrimaryInformation( + input.passportExpiryDate + ).map { (isValid, bank, account, passportNumber, passportIssue, passportExpiry) -> + PrimaryInformation? in return isValid ? PrimaryInformation( + bankName: bank?.value, bankID: bank?.id, bankAccount: account, passportNumber: passportNumber, passportIssueDate: passportIssue, passportExpiryDate: passportExpiry, - anotherIDType: idType?.id ?? "", - anotherIDNumber: idNumber, + anotherIDType: nil, + anotherIDNumber: nil, anotherIDIssueDate: nil, anotherIDExpiryDate: nil, branchID: nil, refferalCode: nil - ) : nil + ) : nil }, + input.anotherIDType, + input.anotherIDNumber, input.anotherIDIssueDate, input.anotherIDExpiryDate, input.branch, input.referralCode - ).map { (info, issueDate, expiryDate, branch, referralCode) -> PrimaryInformation? in + ).map { (info, idType, idNumber, issueDate, expiryDate, branch, referralCode) -> PrimaryInformation? in var primaryInfo = info + primaryInfo?.anotherIDType = idType?.id ?? "" + primaryInfo?.anotherIDNumber = idNumber primaryInfo?.anotherIDIssueDate = issueDate primaryInfo?.anotherIDExpiryDate = expiryDate primaryInfo?.branchID = branch?.id @@ -172,6 +174,7 @@ class NewRegisterStep1Presenter: ViewModelType { .map {$0 && $1 != nil} input.viewWillAppear.drive(onNext: { [weak self] in + self?.progressLinker.onNext(true) self?.interactor?.fetchInformation() }).disposed(by: disposeBag) @@ -292,6 +295,8 @@ class NewRegisterStep1Presenter: ViewModelType { // MARK: NewRegisterStep1 interactor output interface extension NewRegisterStep1Presenter: NewRegisterStep1InteractorOutput { func setModel(with model: KYCInformation) { + progressLinker.onNext(false) + storedPersonalInfo.onNext(model.personalInformation) storedPrimaryInfo.onNext(model.primaryInformation) storedPictureInformation.onNext(model.pictures) diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/View/NewRegisterStep1.storyboard b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/View/NewRegisterStep1.storyboard index 26b5dcc8..76c130ee 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/View/NewRegisterStep1.storyboard +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep1/User Interface/View/NewRegisterStep1.storyboard @@ -401,7 +401,7 @@ + @@ -190,7 +206,7 @@ enter the 4 digit number display after GME. - + diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep3/User Interface/View/NewRegisterStep3ViewController.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep3/User Interface/View/NewRegisterStep3ViewController.swift index d77b9211..7c75fec2 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep3/User Interface/View/NewRegisterStep3ViewController.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegisterStep3/User Interface/View/NewRegisterStep3ViewController.swift @@ -9,6 +9,8 @@ import UIKit import RxSwift import RxCocoa +import PMAlertController +import LGSideMenuController class NewRegisterStep3ViewController: UIViewController { @@ -20,15 +22,17 @@ class NewRegisterStep3ViewController: UIViewController { // MARK: Computed Properties // MARK: IBOutlets - @IBOutlet weak var bankImageView: UIImageView! - @IBOutlet weak var bankNameLabel: UILabel! - @IBOutlet weak var bankAccountLabel: UILabel! + @IBOutlet private weak var bankImageView: UIImageView! + @IBOutlet private weak var bankNameLabel: UILabel! + @IBOutlet private weak var bankAccountLabel: UILabel! - @IBOutlet weak var depositLabel: UILabel! - @IBOutlet weak var codeTextField: UITextField! + @IBOutlet private weak var depositLabel: UILabel! + @IBOutlet private weak var codeTextField: UITextField! + + @IBOutlet private weak var sampleButton: UIButton! + @IBOutlet private weak var resendButton: UIButton! + @IBOutlet private weak var submitButton: UIButton! - @IBOutlet weak var resendButton: UIButton! - @IBOutlet weak var submitButton: UIButton! // MARK: VC's Life cycle override func viewDidLoad() { super.viewDidLoad() @@ -37,14 +41,44 @@ class NewRegisterStep3ViewController: UIViewController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + guard + let bankName = KeyChain.shared.get(key: .bankName), + let bankCode = KeyChain.shared.get(key: .bankCode), + let bankAccount = KeyChain.shared.get(key: .bankAccount) else { return } + + bankAccountLabel.text = bankAccount + bankImageView.image = BankEnum.getBankCIFromKJBank(kjBankCode: bankCode) + bankNameLabel.text = bankName + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + codeTextField.becomeFirstResponder() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) + view.endEditing(true) + } + + override func willMove(toParent parent: UIViewController?) { + if parent != nil { + viewWillAppear(true) + } else { + viewWillDisappear(true) + } + } + + override func didMove(toParent parent: UIViewController?) { + if parent != nil { + viewDidAppear(true) + } else { + viewDidDisappear(true) + } } // MARK: IBActions - + } // MARK: Other Functions @@ -61,24 +95,56 @@ extension NewRegisterStep3ViewController { } private func setUIBinding() { - submitButton.rx.tap.bind {[weak self] in - guard let `self` = self else {return} - self.delegate?.newRegister(self, currentStep: .third, nextStep: .finish) - }.disposed(by: disposeBag) + sampleButton.rx.tap.bind {[weak self] in + self?.showSample() + }.disposed(by: disposeBag) + + codeTextField.rx.text.orEmpty + .map {$0.count == 4} + .asDriverOnErrorJustComplete() + .map {[weak self] in + self?.submitButton.backgroundColor = $0 ? .themeRed : .lightGray + return $0 + } + .drive(submitButton.rx.isEnabled) + .disposed(by: disposeBag) } - + private func setBinding() { - let input = NewRegisterStep3Presenter.Input() + let input = NewRegisterStep3Presenter.Input( + resendTrigger: resendButton.rx.tap.mapToVoid(), + certNumber: codeTextField.rx.text.orEmpty.asObservable(), + submitTrigger: submitButton.rx.tap.mapToVoid() + ) let output = presenter.transform(input: input) - + output.isError - .drive( - onNext: { self.alert(type: .error, message: $0.localizedDescription) } + .drive( + onNext: { self.alert(type: .error, message: $0.localizedDescription) } ).disposed(by: disposeBag) output.isProgress - .drive( - onNext: { $0 ? self.showProgressHud() : self.hideProgressHud() } + .drive( + onNext: { $0 ? self.showProgressHud() : self.hideProgressHud() } ).disposed(by: disposeBag) + + output.resendMessage.drive(onNext: {[weak self] in + self?.alert(message: $0) + }).disposed(by: disposeBag) + + output.submitMessage.drive(onNext: {[weak self] _ in + guard let `self` = self else {return} + self.delegate?.newRegister(self, currentStep: .third, nextStep: .finish) + }).disposed(by: disposeBag) + } + + private func showSample() { + let image = #imageLiteral(resourceName: "penny3") + // show alert + let alertVC = PMAlertController(title: "", description: "", image: image, style: .alert) + alertVC.alertView.layer.cornerRadius = 5 + let action = PMAlertAction(title: "ok_text".localized(), style: .cancel) + alertVC.addAction(action) + self.present(alertVC, animated: true, completion: nil) } } diff --git a/GME Remit/Modules/SideMenu/SideMenu.storyboard b/GME Remit/Modules/SideMenu/SideMenu.storyboard index 7f7c43dc..f8d8fe15 100644 --- a/GME Remit/Modules/SideMenu/SideMenu.storyboard +++ b/GME Remit/Modules/SideMenu/SideMenu.storyboard @@ -186,10 +186,6 @@ - - - - @@ -416,6 +412,10 @@ + + + + diff --git a/GME Remit/Supported Files/Assets.xcassets/bankCI/deutsche.imageset/Contents.json b/GME Remit/Supported Files/Assets.xcassets/bankCI/deutsche.imageset/Contents.json new file mode 100644 index 00000000..83ecf20b --- /dev/null +++ b/GME Remit/Supported Files/Assets.xcassets/bankCI/deutsche.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "deutsche.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GME Remit/Supported Files/Assets.xcassets/bankCI/deutsche.imageset/deutsche.png b/GME Remit/Supported Files/Assets.xcassets/bankCI/deutsche.imageset/deutsche.png new file mode 100644 index 0000000000000000000000000000000000000000..48d59af0132a5f72ea7ccaaa2bd5da428f794f11 GIT binary patch literal 4601 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 T$%~YezabhbI?AO=*8cwiQOo?9 literal 0 HcmV?d00001 diff --git a/GME Remit/Supported Files/Assets.xcassets/bankCI/epost.imageset/Contents.json b/GME Remit/Supported Files/Assets.xcassets/bankCI/epost.imageset/Contents.json new file mode 100644 index 00000000..3d3ea114 --- /dev/null +++ b/GME Remit/Supported Files/Assets.xcassets/bankCI/epost.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "epost.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GME Remit/Supported Files/Assets.xcassets/bankCI/epost.imageset/epost.png b/GME Remit/Supported Files/Assets.xcassets/bankCI/epost.imageset/epost.png new file mode 100644 index 0000000000000000000000000000000000000000..ad24ad3b60f4aea170490135594d4c3d4bd99711 GIT binary patch literal 4333 zcmb7Ic{r4N8y*Z9JJ|+lELp;gHDf|!Y-0`CNw%RW%wRCq?3zdl*`-33i0qPVi5BG8 z%2xLEAc>6S8`U|d>s;UW$2ada@9%l<=f0o&d9L@Fe}-gYtjo;6#{d8TnDx+FW|Y&F z@0{}eu>_$^nO2Qsvt>b40IsgqNq5@D;ZXCa2DoQNz4<3gF0Do`* z0Cma<08r;q|Bblj(fl2wj*?a8rG^yBG}hdjU~OcGaKU*(om_Fw7%0&be?$PN5)qWp z6GL!<5IsG-d=W%7;U5eHB|d^-!jK;n!c{e4YaS$qnU3{>30v6{5IjZaAjPoO?2@4+?{r&mbCjsmBkCT`0udyft!j3X9IjAh`zsWE} z?EjD*Wq!(j%=Obw^{5!a4C9OQ@H^_t!V61KmskDa@o)H_CV#5V`(QDYF^^>Ga=#?M zWB=xB;ym#_7+>Gt`M+cT=9^r`5pa}OM2O8Nby!nj2w)C1N~m zw6LBSuOI$r&ZxrvYvSKRO`HeL=K|iz1#>jx56N%Pzu7-*tpBl*la>A5=eNu+r7G-b z4SrjTpF8&hr7WE~gDULr1y*OMkE3#?{8WYXv^30#RI7F%yu~0`{mt|3RgfOCfSz7E zMFtYV_8|?O|G09DjAc$g#Dev!bJ`{O*I8 zNNJ(yv>DF;mHDsdV5&rC`X}ANtREZZ-vw`vRqf4Zubn&mo)&x(<^Pnu;{UjI4s`&J zt_DVYZpXE4xic^&V;DNrfKGL6W8ENcM<{1>Wn^U@{uCM#nH0{{hC+huA8vL~mzyvw zI)kT}{oeO$U6YO3$XXIV=FJde2}+x01!Kr8;`$8*tC^YR2G~n0mz48{wXUSUA$>Xl zxV&Sp57<%CyUENyOWi6FT|rXvOvMx9)kggVfJuB;bMFK`$`(4<%iX{3HIQA`i6oRavXuH#u{$eKlCLB6dXXb}Ejq*~Ay@|oEo?rnVs{oC}CGK&y! z{CL6a*{Q;N-#lJ}BjL+#g`qZ9Cr$K$Q825)t&-7aBQ=MY&pzS6eVgP6HbpE{cP)#^j!QYqlj?YO1XdtiO4;aIo}) z3O{<8e*$t^%_XC-kgvb8`cqU=n>4$^8S~C&CB`C0At~4UNuYjA^e}Gi%Pq;G=o|;t zkIB<64fJ-#UZg(~!K2MdS2?n9*cfyUYfLds#*&`ufvZI0klS8Q9G#hQw-m643J1A6WwN;00M7uX?(W&r|5>?*Qs3pmr(OzV)s^%I z(Z6)`i541e&mAj&s8E=pC{8Z*VO^8HWvhxA;2e)t}rF755Qy<}o zr4<7ir&#-ISKc|mbC(#8vA&{h@Rh!J@?p!Fn>r6UUm1@?Q}^n!r?*FbDvIDIdU{rl z${!OyEmJ8QM_RWr8F}(P;ceP@mVbx{&nY)!|3Oc+zEO`h;`Ouyx<%ox{IB(-i!Y~! z{I7X4?;(a61a^?5>lzTJS@v<81%Vp@LS}w2XJ;ke*Pa@u4-yQUQYJ#bT^CRWOKLN* z!xe+j&Gl8=0)@I_rqCjwZXEcT>q=7p`DyVrNtq{bb>F##m5X-n@9_(IsR~cRXk}dz zWZBBAigp{9d|&~0EkaJ5e-hS9N@S~F!7Du!(s`5r8eE9D)TTUkzz42+5kGerQp16Y zxr+=YT+CTmSdp;!cuxSvTM}KhMaF+E7uE`8zoi-~5jN&JliZWkQbg4N?<0dO3nm%G z$~6(uW~A4mtfwlJWnQjM@W@;zV_$gK@OtqKBns}yZII)~W94KWY+Wyj3#=fefPm(x z@gB^?YOwk(5pTKpn`l-GNZJ_SW&y7V(}NwEmkoDB%Qtx#Y)kjolIke41C*Rz_p2ccsI64)bo*TV>YB zNr{~?1p$GB=d(O*L%F1$?PWIH_ZVLMP^C*&mkKs3-s)u!XQGYkX&YfPmlVou9H?@c z%zZ{lOP4Yaffi!XGg_JJum|iGMpExaLf4_$ z$T5kpU7ArlpWC01Y!A~0W*ugrrDI&mglU^TyPEx=$5zr+5(gv6j0GutqV3yOGUP(% z{oHH!e8MgqDhg;^h*=V|-jZf|hO=LMBZH&a*q)4>NC*1awQyVKB^FQg?>KhDQnPBc zK|N-)aue+lCW#Y3g&7E^Nh`y6GQGm5Y_X}X;j#+F+nihVrNI*sT4J^e7=1d9J^xbn z6I%3c*Gqz{wk-%Tid zvp^DjZ|1gBxFAw+xOL}?L14tP4l^Hzbk{`}^I?y?AlDQSi%5En1k;^3X(=n<@;RoN zZQG@jXW`3cFL3k3j+HVYAY%WS-ra5yF2Qsz_UDBw5mZBjS7RcZ(FP|#rSKw&p$n^C z;|HYLf=!wH^)c7{>0(}z<)@)17=F7$)5p(>-vtzl)rm?nk&L>nnh*2DaSPUSeQp=@ z_cr>4!O@axpI0aMFFy`l;cL2T@}ebtqSVyLPcl(UOtxoZma40$rZc02cUL;7B*?(g zdb(d2xXcRaL@Ng|w|jR=-_^XiegpYJa2bWe{O+sg(9Pt~X{3`5 z`yY&P-=0#}C}apWUz%-`%;-~0VZM;ss|f5Y#5X!{tUgmuvoSLhxtc#w+`HD0!@G+V zVMq1pdhxBlzgjUDGE^75_QuV-PDt3f+~h=2TJf}6da$6?{HoOPtdEAYlXKccE|Iw9 z%NTT@dx*As37=a^(`3Frdat@^Hh4RiZ)D@x+r-f2!hM_YxK3Q+IKdzorBD z#!|y}X)`E{(;?NbFo+O9JR2+B8aYm-(O$N@S@%4gd$Nwg**28u}-(adqtTB zU)OsjfiW}X9+DzcJWw8?TY_`%irQIpE0_Gs>rhVGN=DK-7X~9u&H}mFM{3_kxAM$K zgFB|E%hwx0JJD=W?rit(tVJ|fWDge4JK38#4>TpEEovSJqGg#KPL@)OK=@9uWmVyH z%opjob7Bc$K%PMX9Ax6@WQu%#ZIMLQ?s+4w!j1Gcn>hNYEoywRJ|{2pt%T*IIqT1B zBc2-MI~?G|@Avd2HFOhBuCbV(AcJ@hUW6k*m(fXVF$OElenJ;4q}=D$-)6YA2AZrL z&oWcL%yA5j(2U#d%Jm9s-@YxRZ#flE56+CpCP`|1I54&=FIndMY zRH~4pk2;<4@S27;N_3siTbSj11AH-GAFJWD=CSteMt}X%vV4|e>;TK!sP+y`YV>9T z;lz28Fdt0DZM28+>Cod1@sG;mt9Rz&ids#eP4YqGa+=gZt+@A`YVvk!-bCO1zP;Ov zbcpvGcRJa6B$}|d6(bA?2cWv-W0&a@7-bcAKOqhqkzs4v^PLIZ=yYTzpBQs%W?PeC zfmpSr%bW?gwmy6PTB&LIgrIGg4iDXpT3pHT>iBn{1Agj8+K2Q)&s4YTaG-10yTvXFMI7MuWD3k#8-B^Yq_RsG;WLRDOJTB%p^3~`##kcTFljJ@Sr`!#Efg}cWQocWrF`}! zp(x4{VkG)h2!(!XvgIG@t4`>UY0x|*s00>){ zn_<|iH~T{H@v!fCl9WjH!sTOvHUWULM8Q>0ZuVZm%N&CSfD9RSdv z05I(V0I+lbkPOVKvo&BRj^dpxj-k=O9(K$JaB=VeTi6i?z{$St_#ShxW7VJdSpvYd z$pHW(_6h);xtu=`@7ygvV#G$W99x27Q{E7;PE;o}3g#6+)bR8Uz~MFM#J~*#U_ghl zLn5B)sX!1QZk$49MQc zU>GyxcR71!sCb-84TM1;At50eA=(-NWFLs8zP>&Lss+)~QfD*NDWN2)CtaOH+5N4^ z-*wFJ6fZI%kV*(3DQwjB#0Ai(hKhy0(bRxK{z-^f0zJL(8$E7Het~{xZ`wHhw9$k@fA#q#^Id5G*%*Ug z#^T$|ZKCX{1{*(fts@%H~`>hT9}z&=^P(i!u;(9rCDmhxRvEmJ(aRuXVV>1 z;JE)NDM2T&s$e`dMV0%orR{;+eM&ks-+T+y<$APBWn)RDc+qr)uh_n|(`W`$-qf;$ z17Xi}t|-%tR#kdC{zcpvH~FG*rE%x0_sI`G(s~;bpLN!C$JdXlO|< zZRg_S1ln#b03^6%MYA^_IH!U)h~sn3v~`Dy;8lf9sL&oapn)Xr~Bg z(hki`_cz$$SY^`^!KEkFm4Z!StoJwLW~jD{JxR^;g~MU2-j;jz?xR7l58JOao^j}K zDR!9oR8f_R+A3?9U-VAg>gIBrq4IP09!J|HrgvoE4qv}vxxpE)1}pgC^n&&9ldReB zvZuuca|FL(gVgS$lOCFnruaCd1_^6xyjyQYdNjd1oNS*#YO=BdE{Np_Wk>W^S1#9! zEOJZER#m;wJ6NXrU?w&P(HA*I^wYAs?7DAo&B`Z~dAtFX1lrazO^bMyXPV!~BXA?8 zb0RGWZ8EeZYao5%WK(@-kcYFe%~-_Zv*nso34$@Gq-$>xLJNbLR)vHD9|!8lNNOt4 z3;8CpbxV#?OfN4_f^1p09z21;D=6rGxOid~%<#rK%v~)LDH4)}^*3pua91J(^mW^y zS4H+$OB93!w?1cmAPsHxemU{B?{*e%{52%+ft(jf!5&$b+pC764B+{wd=rZ)K?uu;L1h8H7Q0U|A5hgKk?SNFjnRj-)lk?pW<=;Cfu6dLGHOK zY*o3Jv+Hn`QTE7wqoT%Z1PU_*T?l&T|WH`JPvL?$FL@KIYV-rTrkTI zVqj^JdGWn)q-kGuIf+;9oUEZnMv}#dr={%knL8r(_MMHOjCjOCC=X(WJeT^Pxrdb} zL^v-^d3J>`4BcuiMuI2qsbIeX=K*$lKw8lXSXX6$}X5chd$%nrRIfX-j#2&YIjA2PxcQwLK<=f zcMj4N!5I>CC8c3j(j8ErR6&s?qRz3Q2N%YiQ+?3DPeLCJ#R+4<&_%ZbU94rX8 z!~j8=E2|5kAiHNnsGOFtbIsf8LcZL+q5Em{&kwEeHv3U+jJ~)g2xrX?ZL9X=RXv|_ zzQS0Ho7l}`0j-uej8K;{jjyKo6a@7mPFiNxW?%lMI$(Y+! z+U6aozQLHY-YPfl*VgJFc9sUsYn|ys!W0Vzykw*XDp>V(b;p#s`91s0!j=dE2#5doZObGo^*u74DU#x^`y7VOkC|N4olA-%&J7%^&Bg{8xFi%yRtN8 zeMzHS()I1K4N~v@yPnx0n_GfpviWt43j(Kj?P?l)ik=^>VFuT&P+8L;Q=o}k(EqV- znEmP)r!jtt3V&=;ukc68y^9xJt}Q(^F3&FL-5z^Yf_rbP{K%D4V(VYmXh9uKynAAA zieLQ02^V=s&_Tqc@VR5lF?xU1S4UYVIpgf66liJR(mlIISkN5PmZ!O8r#TW9HHk^g z*>TsY+b#6XMFY*6#*-_)J5oGlX|G@T!0*E?rUGEi<*nqB1zCeuN9X188_o|HExwgT zAAR7v(dcn_TO_pa++R<*zYOJ=So1p*<>M_rHisO!HSa2sw7nuA+>e+9N|#D{Jz{fW zPhQuU6FO)8YtDI*aip)G+O>)?l@o0U_J2)lSlrOEMfH>XgO}%@9CXN(H0>7lXU@Y) zL!*oR3Lo~=4z1#_g{-anbtMz94h|26`qft(#7>D8RB)?-cJ17&6M2H$4R>gdpBgR& zG*x|jecxik4e!0-V$jp)FEafT%TySNwIQsNXeEqX8u%~yo@4on+1~ literal 0 HcmV?d00001 diff --git a/GME Remit/Supported Files/Assets.xcassets/bankCI/kfcc.imageset/Contents.json b/GME Remit/Supported Files/Assets.xcassets/bankCI/kfcc.imageset/Contents.json new file mode 100644 index 00000000..64bd0363 --- /dev/null +++ b/GME Remit/Supported Files/Assets.xcassets/bankCI/kfcc.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "kfcc.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GME Remit/Supported Files/Assets.xcassets/bankCI/kfcc.imageset/kfcc.png b/GME Remit/Supported Files/Assets.xcassets/bankCI/kfcc.imageset/kfcc.png new file mode 100644 index 0000000000000000000000000000000000000000..6b0a9d79ec3a25e562370c7027447fff2d2cfb21 GIT binary patch literal 5337 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 aVz>lpeZ6>G*-~ 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 rRY6s8(4W^yI)qiw^gnKx05=!~y^N|b4$P&ydt4 UIImage { + switch code { + case "20": + return BankEnum.bs.ciImage + case "18": + return BankEnum.ct.ciImage + case "11": + return #imageLiteral(resourceName: "shinhyup") + case "5": + return BankEnum.dgb.ciImage + case "6": + return #imageLiteral(resourceName: "deutsche") + case "19": + return #imageLiteral(resourceName: "hsbc") + case "3": + return BankEnum.ibk.ciImage + case "17": + return BankEnum.jj.ciImage + case "15": + return BankEnum.jb.ciImage + case "28": + return BankEnum.kbank.ciImage + case "29": + return BankEnum.kakao.ciImage + case "13": + return BankEnum.keb.ciImage + case "26": + return BankEnum.keb.ciImage + case "2": + return BankEnum.kb.ciImage + case "24": + return BankEnum.kb.ciImage + case "7": + return BankEnum.kdb.ciImage + case "8": + return #imageLiteral(resourceName: "kfcc") + case "14": + return #imageLiteral(resourceName: "epost") + case "1": + return BankEnum.kj.ciImage + case "25": + return BankEnum.kn.ciImage + case "4": + return BankEnum.nh.ciImage + case "23": + return BankEnum.nh.ciImage + case "10": + return BankEnum.sh.ciImage + case "16": + return BankEnum.sc.ciImage + case "9": + return BankEnum.slc.ciImage + case "27": + return BankEnum.wsb.ciImage + case "21": + return BankEnum.wr.ciImage + default: + return #imageLiteral(resourceName: "ic_koreaBank") + } + } } diff --git a/GME Remit/Utilities/KeyChain.swift b/GME Remit/Utilities/KeyChain.swift index 268aa74a..c23de0c1 100644 --- a/GME Remit/Utilities/KeyChain.swift +++ b/GME Remit/Utilities/KeyChain.swift @@ -18,6 +18,9 @@ final class KeyChain { case login case temporaryID case temporaryPW + case bankCode + case bankAccount + case bankName } static let shared = KeyChain() diff --git a/GME Remit/Utilities/WebLinks/WkWebView/WkWebViewController.swift b/GME Remit/Utilities/WebLinks/WkWebView/WkWebViewController.swift index 2ac30894..73914db4 100644 --- a/GME Remit/Utilities/WebLinks/WkWebView/WkWebViewController.swift +++ b/GME Remit/Utilities/WebLinks/WkWebView/WkWebViewController.swift @@ -125,12 +125,7 @@ extension WkWebViewController: WKScriptMessageHandler { return } - let kycMessage = - """ -Auto-Debit account register is complete. -To verify your bank account, move to the last step, the penny test -""" - + let kycMessage = "Auto-Debit account register is complete." alert(type: .success, message: kycMessage) { self.dismiss(animated: true) { delegate.newRegister(self, currentStep: .second, nextStep: .third)