You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
219 lines
6.2 KiB
219 lines
6.2 KiB
//
|
|
// ManageAgreementViewController.swift
|
|
// GME Remit
|
|
//
|
|
// Created by InKwon James Kim on 2019/12/23.
|
|
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import RxSwift
|
|
import RxCocoa
|
|
|
|
class ManageAgreementViewController: UIViewController {
|
|
|
|
// MARK: Properties
|
|
var presenter: ManageAgreementPresenter!
|
|
|
|
private let disposeBag = DisposeBag()
|
|
private var isFirst = true
|
|
private var documents: [AgreePDFDocument]?
|
|
private var titleLabels: [UILabel]?
|
|
// MARK: Computed Properties
|
|
|
|
// MARK: IBOutlets
|
|
@IBOutlet private weak var agreeButton: UIButton!
|
|
|
|
@IBOutlet private weak var checkBox: CheckBox!
|
|
@IBOutlet private weak var checkBox2: CheckBox!
|
|
@IBOutlet private weak var checkBox3: CheckBox!
|
|
@IBOutlet private weak var checkBox4: CheckBox!
|
|
@IBOutlet private weak var checkBox5: CheckBox!
|
|
@IBOutlet private weak var checkBox6: CheckBox!
|
|
|
|
@IBOutlet private weak var titleLabel: UILabel!
|
|
@IBOutlet private weak var infoLabel: UILabel!
|
|
|
|
@IBOutlet private weak var documentTitleLabel1: UILabel!
|
|
@IBOutlet private weak var documentTitleLabel2: UILabel!
|
|
@IBOutlet private weak var documentTitleLabel3: UILabel!
|
|
@IBOutlet private weak var documentTitleLabel4: UILabel!
|
|
@IBOutlet private weak var documentTitleLabel5: UILabel!
|
|
@IBOutlet private weak var documentTitleLabel6: UILabel!
|
|
|
|
// MARK: VC's Life cycle
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
setup()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
title = "terms_and_conditions_text".localized()
|
|
|
|
setupNormalNavigation()
|
|
}
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
super.viewDidAppear(animated)
|
|
if isFirst {
|
|
checkBox.isSelected = true
|
|
checkBox2.isSelected = true
|
|
checkBox3.isSelected = true
|
|
checkBox4.isSelected = true
|
|
checkBox5.isSelected = true
|
|
checkBox6.isSelected = true
|
|
|
|
isFirst = false
|
|
}
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(animated)
|
|
title = ""
|
|
}
|
|
|
|
// MARK: IBActions
|
|
@IBAction func touchDetail(_ sender: UIButton) {
|
|
guard
|
|
let doc = documents?.first(where: {$0.id == "\(sender.tag)"}),
|
|
let url = doc.url,
|
|
let titleLabel = titleLabels?.first(where: {$0.tag == sender.tag}),
|
|
let title = titleLabel.text
|
|
else {
|
|
alert(type: .error, message: "PDF URL is wrong.")
|
|
return
|
|
}
|
|
|
|
let detailVC = PDFViewController(nibName: "PDFViewController", bundle: nil)
|
|
let configure = PDFConfiguration(
|
|
title: title,
|
|
url: url
|
|
)
|
|
|
|
detailVC.showAsPush(self, configure: configure)
|
|
}
|
|
}
|
|
|
|
// MARK: Other Functions
|
|
extension ManageAgreementViewController {
|
|
|
|
private func setup() {
|
|
setUI()
|
|
setBinding()
|
|
setUIBinding()
|
|
}
|
|
|
|
private func setUI() {
|
|
agreeButton.layer.cornerRadius = 5
|
|
|
|
infoLabel.setLineSpacing(lineSpacing: 5)
|
|
|
|
if self.presentingViewController == nil {
|
|
navigationItem.hidesBackButton = true
|
|
|
|
let newBackButton = UIBarButtonItem(
|
|
image: UIImage(named: "backIconBlack"),
|
|
style: .plain,
|
|
target: self,
|
|
action: #selector(back(sender:))
|
|
)
|
|
|
|
navigationItem.leftBarButtonItem = newBackButton
|
|
} else {
|
|
let closeButton = UIBarButtonItem(
|
|
image: UIImage(named: "ic_cancel"),
|
|
style: .plain,
|
|
target: self,
|
|
action: #selector(close)
|
|
)
|
|
|
|
navigationItem.leftBarButtonItem = closeButton
|
|
}
|
|
|
|
titleLabels = [
|
|
documentTitleLabel1, documentTitleLabel2, documentTitleLabel3,
|
|
documentTitleLabel4, documentTitleLabel5, documentTitleLabel6
|
|
]
|
|
|
|
setMultiLanguages()
|
|
}
|
|
|
|
private func setUIBinding() {
|
|
Observable.combineLatest([
|
|
checkBox.rx.isSelected,
|
|
checkBox2.rx.isSelected,
|
|
checkBox3.rx.isSelected,
|
|
checkBox4.rx.isSelected,
|
|
checkBox5.rx.isSelected,
|
|
checkBox6.rx.isSelected
|
|
]).map { $0.allSatisfy { $0 } }
|
|
.asDriverOnErrorJustComplete().drive(onNext: {[weak self] isEnable in
|
|
self?.agreeButton.isEnabled = isEnable
|
|
self?.agreeButton.backgroundColor = isEnable ? .themeRed : .lightGray
|
|
}).disposed(by: disposeBag)
|
|
}
|
|
|
|
private func setBinding() {
|
|
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 viewWillAppear = rx.sentMessage(#selector(UIViewController.viewWillAppear(_:))).mapToVoid()
|
|
|
|
let input = ManageAgreementPresenter.Input(
|
|
viewWillAppear: viewWillAppear,
|
|
agreement: agreement,
|
|
submit: agreeButton.rx.tap.mapToVoid()
|
|
)
|
|
let output = presenter.transform(input: input)
|
|
|
|
output.isError
|
|
.drive(
|
|
onNext: { self.alert(type: .error, message: $0.localizedDescription) }
|
|
).disposed(by: disposeBag)
|
|
|
|
output.isProgress
|
|
.drive(
|
|
onNext: { $0 ? self.showProgressHud() : self.hideProgressHud() }
|
|
).disposed(by: disposeBag)
|
|
|
|
output.documents.subscribe(onNext: {[weak self] in
|
|
self?.documents = $0
|
|
}).disposed(by: disposeBag)
|
|
}
|
|
|
|
@objc private func back(sender: UIBarButtonItem) {
|
|
navigationController?.popToRootViewController(animated: true)
|
|
}
|
|
|
|
@objc private func close() {
|
|
dismiss(animated: true, completion: nil)
|
|
}
|
|
|
|
private func setMultiLanguages() {
|
|
titleLabel.text = "terms_and_conditions_title_text".localized()
|
|
infoLabel.text = "terms_and_conditions_content_text".localized()
|
|
|
|
documentTitleLabel1.text = "personal_info_treatment_policy_text".localized()
|
|
documentTitleLabel2.text = "personal_info_usesage_text".localized()
|
|
documentTitleLabel3.text = "agreement_legal_text".localized()
|
|
documentTitleLabel4.text = "small_scale_amount_text".localized()
|
|
documentTitleLabel5.text = "openbanking_service_text".localized()
|
|
documentTitleLabel6.text = "eletronic_finance_text".localized()
|
|
|
|
agreeButton.setTitle("agree_text".localized(), for: .normal)
|
|
}
|
|
}
|
|
|
|
// MARK: CheckBoxDelegate
|
|
extension ManageAgreementViewController: CheckBoxDelegate {
|
|
func checkBox(_ checkBox: CheckBox, isSelected: Bool) {
|
|
|
|
}
|
|
}
|