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.
 
 
 
 

199 lines
6.7 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 = "bank_deposit_text".localized()
let gmeWalletNoTitleText = "gme_wallet_no_text".localized()
}
enum MenuType {
case about
case setting
case notice
}
// @IBOutlets
@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)
}
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 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)
}
}