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.

257 lines
9.3 KiB

6 years ago
6 years ago
6 years ago
2 years ago
6 years ago
  1. //
  2. // SideMenuViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 2/22/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. import SDWebImage
  10. import LGSideMenuController
  11. import Localize_Swift
  12. import RxSwift
  13. import RxCocoa
  14. import SafariServices
  15. protocol SideMenuDelegate: class {
  16. func didSelectMenu(_ viewController: UIViewController, didSelectMenu: SideMenuViewController.MenuType)
  17. }
  18. struct SideMenuNavigationNotifications {
  19. static let aboutGme = "aboutGme"
  20. static let support = "support"
  21. static let setting = "setting"
  22. static let availableBalance = "Available_Balance"
  23. static let withdraw = "withdraw"
  24. static let KftcAccountList = "KftcAccountList"
  25. static let transactionHistory = "transaction_History_from_sidemenu"
  26. static let loyalityPoint = "Loyality_Point"
  27. }
  28. class SideMenuViewController: UIViewController {
  29. struct StringConstants {
  30. let logoutTitleText = "logout_text".localized()
  31. let logoutConfirmationText = "logout_confirmation_text".localized()
  32. let noText = "no_text".localized()
  33. let yesText = "yes_text".localized()
  34. let autoDebitMenuText = "auto_debit_account_text".localized()
  35. let inboundMenuText = "inbound_accounts_text".localized()
  36. let aboutGmeMenuText = "about_gme_text".localized()
  37. let accountStatementText = "jme_account_statement_text".localized()
  38. let settingMenuText = "settings_text".localized()
  39. let availableBalanceTitleLabelText = "available_balance_text".localized()
  40. let withdrawButtonText = "bank_deposit_text".localized()
  41. let gmeWalletNoTitleText = "gme_wallet_no_text".localized()
  42. let lawsonCardDepositText = "lawson_card_deposit_text".localized()
  43. let howToDepositText = "how_to_deposit_text".localized()
  44. let loyalityPointText = "loyalty_points_text".localized()
  45. }
  46. enum MenuType {
  47. case about
  48. case accountStatement
  49. case setting
  50. case notice
  51. case howToDeposit
  52. case loyalityPoint
  53. }
  54. // @IBOutlets
  55. @IBOutlet weak var lawsonDepositImageView: UIImageView!
  56. @IBOutlet weak var accountStatementBtn: UIButton!
  57. @IBOutlet weak var labelProfileName: UILabel!
  58. @IBOutlet weak var labelPhone: UILabel!
  59. @IBOutlet weak var labelEmail: UILabel!
  60. @IBOutlet weak var labelRewardPoint: UILabel!
  61. @IBOutlet weak var roundedBgView: UIView!
  62. @IBOutlet weak var settingButton: UIButton!
  63. @IBOutlet weak var aboutGmeButton: UIButton!
  64. @IBOutlet weak var loyalityPointsButton: UIButton!
  65. @IBOutlet weak var logoutButton: UIButton!
  66. @IBOutlet weak var aboutIconImageView: UIImageView!
  67. @IBOutlet weak var settingIconImageView: UIImageView!
  68. @IBOutlet weak var logoutIconImageView: UIImageView!
  69. @IBOutlet weak var noticeButton: UIButton!
  70. @IBOutlet weak var atmButton: UIButton!
  71. @IBOutlet weak var aboutJmeImageView: UIImageView! //for lawson deposit
  72. weak var sideMenuDelegate: SideMenuDelegate?
  73. private let disposeBag = DisposeBag()
  74. var selectedMenu: MenuType? {
  75. didSet {
  76. guard let menu = selectedMenu else { return }
  77. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: menu)
  78. }
  79. }
  80. // Life Cycle
  81. override func viewDidLoad() {
  82. super.viewDidLoad()
  83. setUpSettingsScreen()
  84. setup()
  85. }
  86. override func viewWillAppear(_ animated: Bool) {
  87. super.viewWillAppear(animated)
  88. self.setUpSettingsScreen()
  89. NotificationCenter.default.addObserver(
  90. self,
  91. selector: #selector(configureText),
  92. name: NSNotification.Name(LCLLanguageChangeNotification),
  93. object: nil
  94. )
  95. // lawsonDepositImageView.image = UIImage(named: "lawson_deposit")?.withRenderingMode(.alwaysTemplate)
  96. // lawsonDepositImageView.tintColor = UIColor.themeText
  97. }
  98. // Other Functions
  99. private func addShadow(view: UIView) {
  100. view.layer.shadowColor = UIColor.darkGray.cgColor
  101. view.layer.shadowOpacity = 0.5
  102. view.layer.shadowRadius = 2
  103. let offset = CGSize(width: 1, height: 1)
  104. view.layer.shadowOffset = offset
  105. }
  106. private func setup() {
  107. configureText()
  108. let shouldShowWithdrawButton = Utility.isVerifiedUser()
  109. // self.view.backgroundColor = .clear
  110. // self.roundedBgView.layer.cornerRadius = 20
  111. labelProfileName.textColor = .themeBlack
  112. aboutGmeButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
  113. settingButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
  114. atmButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
  115. logoutButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
  116. loyalityPointsButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
  117. }
  118. @objc private func configureText() {
  119. aboutGmeButton.setTitle(StringConstants().aboutGmeMenuText, for: UIControl.State.normal)
  120. settingButton.setTitle(StringConstants().settingMenuText, for: UIControl.State.normal)
  121. atmButton.setTitle(StringConstants().howToDepositText, for: UIControl.State.normal)
  122. logoutButton.setTitle(StringConstants().logoutTitleText, for: UIControl.State.normal)
  123. accountStatementBtn.setTitle(StringConstants().accountStatementText, for: .normal)
  124. loyalityPointsButton.setTitle(StringConstants().loyalityPointText, for: .normal)
  125. }
  126. private func setupBlueBackGroundTheme() {
  127. self.roundedBgView.backgroundColor = .themeBlue
  128. [ labelPhone, labelEmail].forEach({
  129. $0?.textColor = .themeWhite
  130. })
  131. [aboutGmeButton, settingButton, logoutButton, loyalityPointsButton].forEach({
  132. $0?.setTitleColor(.themeWhite, for: UIControl.State.normal)
  133. })
  134. aboutIconImageView.tintColor = .themeWhite
  135. }
  136. @IBAction func loyalityPointsAction(_ sender: Any) {
  137. self.sideMenuController?.hideLeftView()
  138. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .loyalityPoint)
  139. }
  140. @IBAction func accountStatementAction(_ sender: Any) {
  141. self.sideMenuController?.hideLeftView()
  142. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .accountStatement)
  143. }
  144. @IBAction func aboutGme(_ sender: UIButton) {
  145. self.sideMenuController?.hideLeftView()
  146. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .about)
  147. }
  148. @IBAction func setting(_ sender: UIButton) {
  149. self.sideMenuController?.hideLeftView()
  150. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .setting)
  151. }
  152. @IBAction func touchNoticeButton(_ sender: UIButton) {
  153. self.sideMenuController?.hideLeftView()
  154. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .notice)
  155. }
  156. @IBAction func atmButtonPressed(_ sender: Any) {
  157. self.sideMenuController?.hideLeftView()
  158. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .howToDeposit)
  159. // let vc = HowToDepositWireframe()
  160. // let urlString = "https://japanremit.com/document/deposit/lawson/HowToUse.html"
  161. // showTutorial(url: urlString)
  162. }
  163. @IBAction func backButton(_ sender: UIButton) {
  164. self.sideMenuController?.hideLeftView(animated: true, completionHandler: nil)
  165. }
  166. @IBAction func logout(_ sender: Any) {
  167. alertWithOkCancel(
  168. type: .normal,
  169. message: StringConstants().logoutConfirmationText,
  170. title: StringConstants().logoutTitleText,
  171. okTitle: "yes_text".localized(),
  172. cancelTitle: "no_text".localized(),
  173. okAction: { MainWireframe.logout() }
  174. )
  175. }
  176. override func didReceiveMemoryWarning() {
  177. super.didReceiveMemoryWarning()
  178. // Dispose of any resources that can be recreated.
  179. }
  180. func setUpSettingsScreen() {
  181. //PHONE
  182. GMEDB.shared.user.rx.string(key: .mobileNumber).bind(to: labelPhone.rx.text)
  183. .disposed(by: disposeBag)
  184. //EMAIL
  185. GMEDB.shared.user.rx.string(key: .email).bind(to: labelEmail.rx.text)
  186. .disposed(by: disposeBag)
  187. //LOYALITY POINTs
  188. GMEDB.shared.user.rx.string(key: .rewardPoints).bind(to: labelRewardPoint.rx.text)
  189. .disposed(by: disposeBag)
  190. let test = GMEDB.shared.user.rx.string(key: .email)
  191. print("TEST IS POSSIBLE \(test)")
  192. //NAME
  193. GMEDB.shared.user.rx.string(key: .firstName).map {$0?.capitalized}.bind(to: labelProfileName.rx.text)
  194. .disposed(by: disposeBag)
  195. }
  196. // Notification Names
  197. func getAvailableBalanceNotificationName() -> Notification.Name {
  198. return Notification.Name.init(SideMenuNavigationNotifications.availableBalance)
  199. }
  200. func getWithdrawNotificationName() -> Notification.Name {
  201. return Notification.Name.init(SideMenuNavigationNotifications.withdraw)
  202. }
  203. func showTutorial(url: String) {
  204. if let url = URL(string: url) {
  205. let config = SFSafariViewController.Configuration()
  206. config.entersReaderIfAvailable = false
  207. let vc = SFSafariViewController(url: url, configuration: config)
  208. present(vc, animated: true)
  209. }
  210. }
  211. }