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.
207 lines
7.1 KiB
207 lines
7.1 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 accountStatementText = "jme_account_statement_text".localized()
|
|
let settingMenuText = "settings_text".localized()
|
|
let availableBalanceTitleLabelText = "available_balance_text".localized()
|
|
let withdrawButtonText = "bank_deposit_text".localized()
|
|
let gmeWalletNoTitleText = "gme_wallet_no_text".localized()
|
|
}
|
|
|
|
enum MenuType {
|
|
case about
|
|
case accountStatement
|
|
case setting
|
|
case notice
|
|
}
|
|
|
|
// @IBOutlets
|
|
|
|
@IBOutlet weak var accountStatementBtn: UIButton!
|
|
@IBOutlet weak var labelProfileName: UILabel!
|
|
@IBOutlet weak var labelPhone: UILabel!
|
|
@IBOutlet weak var labelEmail: UILabel!
|
|
@IBOutlet weak var roundedBgView: UIView!
|
|
@IBOutlet weak var settingButton: UIButton!
|
|
@IBOutlet weak var aboutGmeButton: UIButton!
|
|
@IBOutlet weak var logoutButton: UIButton!
|
|
@IBOutlet weak var aboutIconImageView: UIImageView!
|
|
@IBOutlet weak var settingIconImageView: UIImageView!
|
|
@IBOutlet weak var logoutIconImageView: UIImageView!
|
|
@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.isVerifiedUser()
|
|
|
|
// self.view.backgroundColor = .clear
|
|
// self.roundedBgView.layer.cornerRadius = 20
|
|
|
|
labelProfileName.textColor = .themeBlack
|
|
|
|
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() {
|
|
aboutGmeButton.setTitle(StringConstants().aboutGmeMenuText, for: UIControl.State.normal)
|
|
settingButton.setTitle(StringConstants().settingMenuText, for: UIControl.State.normal)
|
|
logoutButton.setTitle(StringConstants().logoutTitleText, for: UIControl.State.normal)
|
|
accountStatementBtn.setTitle(StringConstants().accountStatementText, for: .normal)
|
|
}
|
|
|
|
private func setupBlueBackGroundTheme() {
|
|
self.roundedBgView.backgroundColor = .themeBlue
|
|
[ labelPhone, labelEmail].forEach({
|
|
$0?.textColor = .themeWhite
|
|
})
|
|
[aboutGmeButton, settingButton, logoutButton].forEach({
|
|
$0?.setTitleColor(.themeWhite, for: UIControl.State.normal)
|
|
})
|
|
aboutIconImageView.tintColor = .themeWhite
|
|
}
|
|
|
|
@IBAction func accountStatementAction(_ sender: Any) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .accountStatement)
|
|
}
|
|
|
|
@IBAction func aboutGme(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView()
|
|
sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .about)
|
|
}
|
|
|
|
@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 backButton(_ sender: UIButton) {
|
|
self.sideMenuController?.hideLeftView(animated: true, completionHandler: nil)
|
|
}
|
|
|
|
@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() }
|
|
)
|
|
}
|
|
|
|
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)
|
|
|
|
let test = GMEDB.shared.user.rx.string(key: .email)
|
|
print("TEST IS POSSIBLE \(test)")
|
|
|
|
//NAME
|
|
GMEDB.shared.user.rx.string(key: .firstName).map {$0?.capitalized}.bind(to: labelProfileName.rx.text)
|
|
.disposed(by: disposeBag)
|
|
|
|
}
|
|
|
|
// Notification Names
|
|
func getAvailableBalanceNotificationName() -> Notification.Name {
|
|
return Notification.Name.init(SideMenuNavigationNotifications.availableBalance)
|
|
}
|
|
|
|
func getWithdrawNotificationName() -> Notification.Name {
|
|
return Notification.Name.init(SideMenuNavigationNotifications.withdraw)
|
|
}
|
|
}
|