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.
279 lines
9.6 KiB
279 lines
9.6 KiB
//
|
|
// SideMenuViewController.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Sujal on 2/22/18.
|
|
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import SDWebImage
|
|
import LGSideMenuController
|
|
import Localize_Swift
|
|
|
|
import RxSwift
|
|
import RxCocoa
|
|
|
|
protocol SideMenuDelegate: class {
|
|
func didSelectMenu(_ viewController: UIViewController, didSelectMenu: SideMenuViewController.MenuType)
|
|
}
|
|
|
|
struct SideMenuNavigationNotifications {
|
|
static let aboutGme = "aboutGme"
|
|
static let support = "support"
|
|
static let setting = "setting"
|
|
static let availableBalance = "Available_Balance"
|
|
static let withdraw = "withdraw"
|
|
static let KftcAccountList = "KftcAccountList"
|
|
static let transactionHistory = "transaction_History_from_sidemenu"
|
|
}
|
|
|
|
class SideMenuViewController: UIViewController {
|
|
|
|
struct StringConstants {
|
|
let logoutTitleText = "logout_text".localized()
|
|
let logoutConfirmationText = "logout_confirmation_text".localized()
|
|
let noText = "no_text".localized()
|
|
let yesText = "yes_text".localized()
|
|
let autoDebitMenuText = "auto_debit_account_text".localized()
|
|
let inboundMenuText = "inbound_accounts_text".localized()
|
|
let aboutGmeMenuText = "about_gme_text".localized()
|
|
let settingMenuText = "settings_text".localized()
|
|
let availableBalanceTitleLabelText = "available_balance_text".localized()
|
|
let withdrawButtonText = "withdraw_text".localized()
|
|
let gmeWalletNoTitleText = "gme_wallet_no_text".localized()
|
|
}
|
|
|
|
enum MenuType {
|
|
case withDraw
|
|
case autodebitAccount
|
|
case inboundAccount
|
|
case transferHistory
|
|
case rechargeHistory
|
|
case about
|
|
case setting
|
|
case notice
|
|
}
|
|
|
|
// @IBOutlets
|
|
|
|
@IBOutlet weak var imageViewProfileSetting: UIImageView!
|
|
@IBOutlet weak var labelProfileName: UILabel!
|
|
@IBOutlet weak var labelPhone: UILabel!
|
|
@IBOutlet weak var labelEmail: UILabel!
|
|
@IBOutlet weak var roundedBgView: UIView!
|
|
@IBOutlet weak var labelUserNameInitial: UILabel!
|
|
@IBOutlet weak var settingButton: UIButton!
|
|
@IBOutlet weak var aboutGmeButton: UIButton!
|
|
@IBOutlet weak var autoDebitAccountButton: UIButton!
|
|
@IBOutlet weak var inboundAccountButton: UIButton!
|
|
@IBOutlet weak var logoutButton: UIButton!
|
|
@IBOutlet weak var aboutIconImageView: UIImageView!
|
|
@IBOutlet weak var settingIconImageView: UIImageView!
|
|
@IBOutlet weak var logoutIconImageView: UIImageView!
|
|
@IBOutlet weak var manageAccountStackView: UIStackView!
|
|
@IBOutlet weak var transactionHistryButton: UIButton!
|
|
@IBOutlet weak var rechargeHistoryButton: UIButton!
|
|
@IBOutlet weak var inboundAccountStackView: UIStackView!
|
|
|
|
@IBOutlet weak var noticeButton: UIButton!
|
|
|
|
weak var sideMenuDelegate: SideMenuDelegate?
|
|
|
|
private let disposeBag = DisposeBag()
|
|
|
|
var selectedMenu: MenuType? {
|
|
didSet {
|
|
guard let menu = selectedMenu else { return }
|
|
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: menu)
|
|
}
|
|
}
|
|
|
|
// Life Cycle
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
setUpSettingsScreen()
|
|
setup()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.setUpSettingsScreen()
|
|
NotificationCenter.default.addObserver(
|
|
self,
|
|
selector: #selector(configureText),
|
|
name: NSNotification.Name(LCLLanguageChangeNotification),
|
|
object: nil
|
|
)
|
|
}
|
|
|
|
// Other Functions
|
|
private func addShadow(view: UIView) {
|
|
view.layer.shadowColor = UIColor.darkGray.cgColor
|
|
view.layer.shadowOpacity = 0.5
|
|
view.layer.shadowRadius = 2
|
|
let offset = CGSize(width: 1, height: 1)
|
|
view.layer.shadowOffset = offset
|
|
}
|
|
|
|
private func setup() {
|
|
configureText()
|
|
let shouldShowWithdrawButton = Utility.pennyTestVerified() && Utility.isVerifiedUser()
|
|
self.manageAccountStackView.isHidden = !shouldShowWithdrawButton
|
|
// self.manageAccountStackView.isHidden = true
|
|
|
|
self.view.backgroundColor = .themeRedDark
|
|
self.roundedBgView.layer.cornerRadius = 20
|
|
|
|
NotificationCenter.default.addObserver(
|
|
self,
|
|
selector: #selector(self.updateBalance(sender:)),
|
|
name: self.getAvailableBalanceNotificationName(),
|
|
object: nil
|
|
)
|
|
|
|
labelProfileName.textColor = .themeRed
|
|
|
|
autoDebitAccountButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
|
|
inboundAccountButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
|
|
transactionHistryButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
|
|
aboutGmeButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
|
|
settingButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
|
|
logoutButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
|
|
}
|
|
|
|
@objc private func configureText() {
|
|
autoDebitAccountButton.setTitle(StringConstants().autoDebitMenuText, for: UIControl.State.normal)
|
|
inboundAccountButton.setTitle(StringConstants().inboundMenuText, for: UIControl.State.normal)
|
|
aboutGmeButton.setTitle(StringConstants().aboutGmeMenuText, for: UIControl.State.normal)
|
|
settingButton.setTitle(StringConstants().settingMenuText, for: UIControl.State.normal)
|
|
logoutButton.setTitle(StringConstants().logoutTitleText, for: UIControl.State.normal)
|
|
|
|
self.transactionHistryButton.setTitle("transaction_report_text".localized(), for: UIControl.State.normal)
|
|
|
|
rechargeHistoryButton.setTitle("recharge_history_text".localized(), for: .normal)
|
|
}
|
|
|
|
@objc private func updateBalance(sender: Notification) {
|
|
let shouldShowWithdrawButton = Utility.pennyTestVerified() && Utility.isVerifiedUser()
|
|
self.manageAccountStackView.isHidden = !shouldShowWithdrawButton
|
|
// self.manageAccountStackView.isHidden = true
|
|
self.inboundAccountStackView.isHidden = !shouldShowWithdrawButton
|
|
}
|
|
|
|
private func setupBlueBackGroundTheme() {
|
|
self.roundedBgView.backgroundColor = .themeBlue
|
|
[ labelPhone, labelEmail, labelUserNameInitial].forEach({
|
|
$0?.textColor = .themeWhite
|
|
})
|
|
[aboutGmeButton, settingButton, logoutButton].forEach({
|
|
$0?.setTitleColor(.themeWhite, for: UIControl.State.normal)
|
|
})
|
|
aboutIconImageView.tintColor = .themeWhite
|
|
}
|
|
|
|
@IBAction func withdraw(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .withDraw)
|
|
}
|
|
|
|
@IBAction func openTransactionHistory(_ sender: Any) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .transferHistory)
|
|
}
|
|
|
|
@IBAction func openRechargeHistory(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .rechargeHistory)
|
|
}
|
|
|
|
@IBAction func openManageAccounts(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .autodebitAccount)
|
|
}
|
|
|
|
@IBAction func aboutGme(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .about)
|
|
}
|
|
|
|
@IBAction func support(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
}
|
|
|
|
@IBAction func setting(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .setting)
|
|
}
|
|
|
|
@IBAction func touchNoticeButton(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .notice)
|
|
}
|
|
|
|
@IBAction func logout(_ sender: Any) {
|
|
alertWithOkCancel(
|
|
type: .normal,
|
|
message: StringConstants().logoutConfirmationText,
|
|
title: StringConstants().logoutTitleText,
|
|
okTitle: "yes_text".localized(),
|
|
cancelTitle: "no_text".localized(),
|
|
okAction: { MainWireframe.logout() }
|
|
)
|
|
}
|
|
|
|
@IBAction func openInboundAccount(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .inboundAccount)
|
|
}
|
|
|
|
override func didReceiveMemoryWarning() {
|
|
super.didReceiveMemoryWarning()
|
|
// Dispose of any resources that can be recreated.
|
|
}
|
|
|
|
func setUpSettingsScreen() {
|
|
//PHONE
|
|
GMEDB.shared.user.rx.string(key: .mobileNumber).bind(to: labelPhone.rx.text)
|
|
.disposed(by: disposeBag)
|
|
|
|
//EMAIL
|
|
GMEDB.shared.user.rx.string(key: .email).bind(to: labelEmail.rx.text)
|
|
.disposed(by: disposeBag)
|
|
|
|
//NAME
|
|
GMEDB.shared.user.rx.string(key: .firstName).map {$0?.capitalized}.bind(to: labelProfileName.rx.text)
|
|
.disposed(by: disposeBag)
|
|
|
|
//IMAGE
|
|
let userDpString = GMEDB.shared.user.string(.dpUrl) ?? ""
|
|
|
|
if let userDpUrl = URL(string: userDpString) {
|
|
SDImageCache.shared.clearMemory()
|
|
SDImageCache.shared.clearDisk()
|
|
self.imageViewProfileSetting.sd_setImage(with: userDpUrl, completed: nil)
|
|
labelUserNameInitial.isHidden = true
|
|
imageViewProfileSetting.isHidden = false
|
|
imageViewProfileSetting.contentMode = .scaleAspectFill
|
|
|
|
} else {
|
|
labelUserNameInitial.layer.backgroundColor = UIColor(hex: 0x2e3192).cgColor
|
|
labelUserNameInitial.layer.cornerRadius = labelUserNameInitial.frame.height / 2
|
|
labelUserNameInitial.text = labelProfileName.text?.prefix(1).uppercased()
|
|
labelUserNameInitial.isHidden = false
|
|
imageViewProfileSetting.isHidden = true
|
|
}
|
|
imageViewProfileSetting.layer.cornerRadius = imageViewProfileSetting.frame.height / 2
|
|
}
|
|
|
|
// Notification Names
|
|
func getAvailableBalanceNotificationName() -> Notification.Name {
|
|
return Notification.Name.init(SideMenuNavigationNotifications.availableBalance)
|
|
}
|
|
|
|
func getWithdrawNotificationName() -> Notification.Name {
|
|
return Notification.Name.init(SideMenuNavigationNotifications.withdraw)
|
|
}
|
|
}
|