// // 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 import SafariServices 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" static let loyalityPoint = "Loyality_Point" } 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() let lawsonCardDepositText = "lawson_card_deposit_text".localized() let howToDepositText = "how_to_deposit_text".localized() let loyalityPointText = "loyalty_points_text".localized() } enum MenuType { case about case accountStatement case setting case notice case howToDeposit case loyalityPoint } // @IBOutlets @IBOutlet weak var lawsonDepositImageView: UIImageView! @IBOutlet weak var accountStatementBtn: UIButton! @IBOutlet weak var labelProfileName: UILabel! @IBOutlet weak var labelPhone: UILabel! @IBOutlet weak var labelEmail: UILabel! @IBOutlet weak var labelRewardPoint: UILabel! @IBOutlet weak var roundedBgView: UIView! @IBOutlet weak var settingButton: UIButton! @IBOutlet weak var aboutGmeButton: UIButton! @IBOutlet weak var loyalityPointsButton: 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! @IBOutlet weak var atmButton: UIButton! @IBOutlet weak var aboutJmeImageView: UIImageView! //for lawson deposit 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 ) // lawsonDepositImageView.image = UIImage(named: "lawson_deposit")?.withRenderingMode(.alwaysTemplate) // lawsonDepositImageView.tintColor = UIColor.themeText } // 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) atmButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5) logoutButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5) loyalityPointsButton.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) atmButton.setTitle(StringConstants().howToDepositText, for: UIControl.State.normal) logoutButton.setTitle(StringConstants().logoutTitleText, for: UIControl.State.normal) accountStatementBtn.setTitle(StringConstants().accountStatementText, for: .normal) loyalityPointsButton.setTitle(StringConstants().loyalityPointText, for: .normal) } private func setupBlueBackGroundTheme() { self.roundedBgView.backgroundColor = .themeBlue [ labelPhone, labelEmail].forEach({ $0?.textColor = .themeWhite }) [aboutGmeButton, settingButton, logoutButton, loyalityPointsButton].forEach({ $0?.setTitleColor(.themeWhite, for: UIControl.State.normal) }) aboutIconImageView.tintColor = .themeWhite } @IBAction func loyalityPointsAction(_ sender: Any) { self.sideMenuController?.hideLeftView() sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .loyalityPoint) } @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 atmButtonPressed(_ sender: Any) { self.sideMenuController?.hideLeftView() sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .howToDeposit) // let vc = HowToDepositWireframe() // let urlString = "https://japanremit.com/document/deposit/lawson/HowToUse.html" // showTutorial(url: urlString) } @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) //LOYALITY POINTs GMEDB.shared.user.rx.string(key: .rewardPoints).bind(to: labelRewardPoint.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) } func showTutorial(url: String) { if let url = URL(string: url) { let config = SFSafariViewController.Configuration() config.entersReaderIfAvailable = false let vc = SFSafariViewController(url: url, configuration: config) present(vc, animated: true) } } }