172 lines
6.2 KiB
Swift
172 lines
6.2 KiB
Swift
//
|
|
// P2PControllerCard.swift
|
|
// Wallet
|
|
//
|
|
// Created by Igor on 15.12.2020.
|
|
// Copyright © 2020 AM. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class CardsControllerCard: UIViewController {
|
|
|
|
@IBOutlet private weak var numberTxtFld: CommonTextField!
|
|
@IBOutlet private weak var countryView: CardView!
|
|
@IBOutlet private weak var bankView: CardView!
|
|
@IBOutlet private weak var defaultSwitch: UISwitch!
|
|
@IBOutlet private weak var submitBtn: UIButton!
|
|
|
|
var service = Cards.Service.Card()
|
|
|
|
var completion: ((Cards.Model) -> Void)?
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
title = service.number.isEmpty ? L10n.Cards.Card.New.title : L10n.Cards.Card.Edit.title
|
|
navigationItem.leftBarButtonItem = .pop(self)
|
|
submitBtn.lzTitle = service.number.isEmpty ? L10n.Cards.Card.New.submit : L10n.Cards.Card.Edit.submit
|
|
numberTxtFld.value = service.number
|
|
numberTxtFld.keyboardType = .numberPad
|
|
|
|
countryView.imageView.image = Asset.p2pCountry.image
|
|
countryView.action = { [weak self] in
|
|
guard let service = self?.service else { return }
|
|
self?.view.endEditing(true)
|
|
|
|
let vc = FilterSelectViewController()
|
|
vc.selectionType = .radio
|
|
vc.title = L10n.P2p.Order.Country.topTitle
|
|
|
|
vc.modelsArray = service.countries
|
|
.map({ FilterItem(id: $0.id, title: $0.name, subtitle: nil) })
|
|
service.country.flatMap { vc.selectedModels.insert(FilterItem(id: $0.id, title: $0.title)) }
|
|
vc.applyButtonAction = {
|
|
service.country = $0.map({ (id: $0.id, title: $0.title) }).first
|
|
self?.navigationController?.popViewController(animated: true)
|
|
}
|
|
self?.navigationController?.pushViewController(vc, animated: true)
|
|
}
|
|
|
|
bankView.imageView.image = Asset.p2pBank.image
|
|
bankView.action = { [weak self] in
|
|
guard let service = self?.service else { return }
|
|
self?.view.endEditing(true)
|
|
|
|
let vc = FilterSelectViewController()
|
|
vc.selectionType = .radio
|
|
vc.title = L10n.P2p.Order.Bank.topTitle
|
|
|
|
vc.modelsArray = service.banks
|
|
.map({ FilterItem(id: $0.id, title: $0.name, subtitle: nil) })
|
|
service.bank.flatMap { vc.selectedModels.insert(FilterItem(id: $0.id, title: $0.title)) }
|
|
vc.applyButtonAction = {
|
|
service.bank = $0.map({ (id: $0.id, title: $0.title) }).first
|
|
self?.navigationController?.popViewController(animated: true)
|
|
}
|
|
self?.navigationController?.pushViewController(vc, animated: true)
|
|
}
|
|
|
|
defaultSwitch.isOn = service.isDefault
|
|
defaultSwitch.isEnabled = service.isDefaultEditable
|
|
service.didUpdate = { [weak self] in self?.update() }
|
|
service.willReload = { [weak self] in self?.numberTxtFld.isLoading = true }
|
|
service.didReload = { [weak self] in
|
|
self?.numberTxtFld.isLoading = false
|
|
}
|
|
update()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
Accounts().isLocked = true
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(animated)
|
|
Accounts().isLocked = false
|
|
}
|
|
|
|
override func viewDidLayoutSubviews() {
|
|
super.viewDidLayoutSubviews()
|
|
update()
|
|
}
|
|
|
|
private func update() {
|
|
for view in [countryView, bankView] {
|
|
view?.makeShadowStyle()
|
|
}
|
|
|
|
numberTxtFld.value = service.number
|
|
|
|
countryView.isUserInteractionEnabled = service.canEditCountry
|
|
countryView.rightImageView.image = service.canEditCountry ? Asset.commonMenuHorizontal.image : UIImage()
|
|
if let country = service.country {
|
|
countryView.descriptionLabel.isHidden = false
|
|
countryView.titleLabel.lzText = L10n.P2p.Order.Country.topTitle
|
|
countryView.descriptionLabel.lzText = country.title
|
|
} else {
|
|
countryView.titleLabel.lzText = L10n.P2p.Order.Country.placeholder
|
|
countryView.descriptionLabel.isHidden = true
|
|
}
|
|
|
|
bankView.isUserInteractionEnabled = service.canEditBank
|
|
bankView.rightImageView.image = service.canEditBank ? Asset.commonMenuHorizontal.image : UIImage()
|
|
if let bank = service.bank {
|
|
bankView.descriptionLabel.isHidden = false
|
|
bankView.titleLabel.lzText = L10n.P2p.Order.Bank.topTitle
|
|
bankView.descriptionLabel.lzText = bank.title
|
|
} else {
|
|
bankView.titleLabel.lzText = L10n.P2p.Order.Bank.placeholder
|
|
bankView.descriptionLabel.isHidden = true
|
|
}
|
|
|
|
submitBtn.isEnabled = service.isValid
|
|
}
|
|
|
|
@IBAction func onSumbit(_: AnyObject?) {
|
|
service.isDefault = defaultSwitch.isOn
|
|
service.submit()
|
|
completion?(service.card)
|
|
navigationController?.popViewController(animated: true)
|
|
}
|
|
|
|
@IBAction func onScanCard(_: AnyObject?) {
|
|
let ctrl = StoryboardScene.Cards.scanCard.instantiate()
|
|
ctrl.navigationItem.leftBarButtonItem = .back { [weak self] in
|
|
DispatchQueue.main.async {
|
|
self?.dismiss(animated: true)
|
|
}
|
|
}
|
|
ctrl.navigationItem.title = L10n.Cards.Card.recognize
|
|
ctrl.delegate = self
|
|
|
|
let navCtrl = UINavigationController(rootViewController: ctrl)
|
|
navCtrl.modalPresentationStyle = .fullScreen
|
|
present(navCtrl, animated: true)
|
|
}
|
|
|
|
}
|
|
|
|
extension CardsControllerCard: CommonTextFieldDelegate {
|
|
func textFieldDidChange(_ textField: CommonTextField) {
|
|
switch textField {
|
|
case numberTxtFld:
|
|
service.update(number: textField.value)
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
extension CardsControllerCard: CardsScanViewControllerDelegate {
|
|
|
|
func creditCardScannerViewController(_ viewController: CardsScanViewController, didErrorWith error: CreditCardScannerError) { }
|
|
|
|
func creditCardScannerViewController(_ viewController: CardsScanViewController, didFinishWith card: CreditCard) {
|
|
if let number = card.number {
|
|
service.update(number: number)
|
|
|
|
}
|
|
}
|
|
}
|