diff --git a/GME Remit/APIs/Router/APIRouter.swift b/GME Remit/APIs/Router/APIRouter.swift index b808e458..189f9ac7 100644 --- a/GME Remit/APIs/Router/APIRouter.swift +++ b/GME Remit/APIs/Router/APIRouter.swift @@ -82,6 +82,7 @@ enum APIRouter { case requestPennyTestAtRegister(resend: String) case pennyTestSubmitAtRegister(accountNumber: String, certNumber: String) case fetchKFTCParameterForRegister + case agreement(_ flag: Bool) } // MARK: - Request @@ -450,7 +451,6 @@ extension APIRouter { return "\(baseUrl)/mobile/sendmoney/load/branch/\(countryCode)/\(bankID)/?search=\(branchName)" case .validateAccount: return "\(baseUrl)/mobile/sendmoney/validation/account" - case .domesticRemitStart: return "\(baseUrl)/kftc/DomeRemitStart" case .getRecentHistories: @@ -499,6 +499,8 @@ extension APIRouter { return "\(baseUrlWithoutVersion)/v4/GetKftcParameters/\(userID)" case .pennyTestSubmitAtRegister: return "\(baseUrl)/mobile/pennytest/getcertified" + case .agreement(_): + return "" } } } @@ -589,6 +591,8 @@ extension APIRouter { return .get case .pennyTestSubmitAtRegister: return .post + case .agreement: + return .get } } diff --git a/GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractor.swift b/GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractor.swift index 121247a3..b0799351 100644 --- a/GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractor.swift +++ b/GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractor.swift @@ -26,5 +26,15 @@ class ManageAgreementInteractor { // MARK: ManageAgreement interactor input interface extension ManageAgreementInteractor: ManageAgreementInteractorInput { - + func agreement(_ flag: Bool) { + service.agreement( + flag, + success: {[weak self] in + self?.output?.resultAgreement() + }, + failure: {[weak self] in + self?.output?.setError(with: $0) + } + ) + } } diff --git a/GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractorIO.swift b/GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractorIO.swift index a5e5ebb0..1324b58f 100644 --- a/GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractorIO.swift +++ b/GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractorIO.swift @@ -7,9 +7,10 @@ // protocol ManageAgreementInteractorInput: class { - + func agreement(_ flag: Bool) } protocol ManageAgreementInteractorOutput: class { - + func resultAgreement() + func setError(with error: Error) } diff --git a/GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementService.swift b/GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementService.swift index 1fa7f441..3fb39178 100644 --- a/GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementService.swift +++ b/GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementService.swift @@ -9,5 +9,12 @@ import Foundation class ManageAgreementService: ManageAgreementServiceType { - + func agreement( + _ flag: Bool, + success: @escaping () -> Void, + failure: @escaping (Error) -> Void + ) { + success() +// APIRouter.agreement(flag).json(success: success, failure: failure) + } } diff --git a/GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementServiceType.swift b/GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementServiceType.swift index 882329d6..7196a51e 100644 --- a/GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementServiceType.swift +++ b/GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementServiceType.swift @@ -7,5 +7,9 @@ // protocol ManageAgreementServiceType: class { - + func agreement( + _ flag: Bool, + success: @escaping () -> Void, + failure: @escaping (Error)-> Void + ) } diff --git a/GME Remit/Modules/ManageAgreement/User Interface/Presenter/ManageAgreementPresenter.swift b/GME Remit/Modules/ManageAgreement/User Interface/Presenter/ManageAgreementPresenter.swift index 923ae3cf..945c5570 100644 --- a/GME Remit/Modules/ManageAgreement/User Interface/Presenter/ManageAgreementPresenter.swift +++ b/GME Remit/Modules/ManageAgreement/User Interface/Presenter/ManageAgreementPresenter.swift @@ -13,7 +13,10 @@ class ManageAgreementPresenter: ViewModelType { var interactor: ManageAgreementInteractorInput? var wireframe: ManageAgreementWireframeInput? - struct Input {} + struct Input { + let agreement: Observable + let submit: Observable + } struct Output { let isError: Driver @@ -26,6 +29,11 @@ class ManageAgreementPresenter: ViewModelType { private let errorLinker = PublishSubject() func transform(input: Input) -> Output { + input.submit.withLatestFrom(input.agreement) {$1} + .asObservable().subscribe(onNext: {[weak self] in + self?.interactor?.agreement($0) + }).disposed(by: disposeBag) + return Output( isError: errorLinker.asDriverOnErrorJustComplete(), isProgress: progressLinker.asDriverOnErrorJustComplete() @@ -35,5 +43,11 @@ class ManageAgreementPresenter: ViewModelType { // MARK: ManageAgreement interactor output interface extension ManageAgreementPresenter: ManageAgreementInteractorOutput { + func resultAgreement() { + wireframe?.goNewRegistration() + } + func setError(with error: Error) { + errorLinker.onNext(error) + } } diff --git a/GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreementViewController.swift b/GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreementViewController.swift index 12643a31..770fdb9a 100644 --- a/GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreementViewController.swift +++ b/GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreementViewController.swift @@ -88,6 +88,16 @@ extension ManageAgreementViewController { agreeButton.layer.cornerRadius = 5 infoLabel.setLineSpacing(lineSpacing: 5) + + navigationItem.hidesBackButton = true + let newBackButton = UIBarButtonItem( + image: UIImage(named: "backIconBlack"), + style: .plain, + target: self, + action: #selector(back(sender:)) + ) + + navigationItem.leftBarButtonItem = newBackButton } private func setUIBinding() { @@ -103,17 +113,22 @@ extension ManageAgreementViewController { self?.agreeButton.isEnabled = isEnable self?.agreeButton.backgroundColor = isEnable ? .themeRed : .lightGray }).disposed(by: disposeBag) - - agreeButton.rx.tap.bind {[weak self] in - guard let `self` = self else {return} - - self.checkBox.isSelected = !self.checkBox.isSelected - }.disposed(by: disposeBag) - } private func setBinding() { - let input = ManageAgreementPresenter.Input() + let agreement = Observable.combineLatest([ + checkBox.rx.isSelected, + checkBox2.rx.isSelected, + checkBox3.rx.isSelected, + checkBox4.rx.isSelected, + checkBox5.rx.isSelected, + checkBox6.rx.isSelected + ]).map {$0.allSatisfy {$0}} + + let input = ManageAgreementPresenter.Input( + agreement: agreement, + submit: agreeButton.rx.tap.mapToVoid() + ) let output = presenter.transform(input: input) output.isError @@ -126,6 +141,10 @@ extension ManageAgreementViewController { onNext: { $0 ? self.showProgressHud() : self.hideProgressHud() } ).disposed(by: disposeBag) } + + @objc func back(sender: UIBarButtonItem) { + navigationController?.popToRootViewController(animated: true) + } } extension ManageAgreementViewController: CheckBoxDelegate { diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/View/NewRegister.storyboard b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/View/NewRegister.storyboard index 6d972b13..d4ce2259 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/View/NewRegister.storyboard +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/View/NewRegister.storyboard @@ -38,7 +38,7 @@ - + @@ -68,7 +68,7 @@