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.

220 lines
7.0 KiB

6 years ago
6 years ago
5 years ago
6 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 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. protocol SideMenuDelegate: class {
  15. func didSelectMenu(_ viewController: UIViewController, didSelectMenu: SideMenuViewController.MenuType)
  16. }
  17. struct SideMenuNavigationNotifications {
  18. static let aboutGme = "aboutGme"
  19. static let support = "support"
  20. static let setting = "setting"
  21. static let availableBalance = "Available_Balance"
  22. static let withdraw = "withdraw"
  23. static let KftcAccountList = "KftcAccountList"
  24. static let transactionHistory = "transaction_History_from_sidemenu"
  25. }
  26. class SideMenuViewController: UIViewController {
  27. struct StringConstants {
  28. let logoutTitleText = "logout_text".localized()
  29. let logoutConfirmationText = "logout_confirmation_text".localized()
  30. let noText = "no_text".localized()
  31. let yesText = "yes_text".localized()
  32. let autoDebitMenuText = "auto_debit_account_text".localized()
  33. let inboundMenuText = "inbound_accounts_text".localized()
  34. let aboutGmeMenuText = "about_gme_text".localized()
  35. let settingMenuText = "settings_text".localized()
  36. let availableBalanceTitleLabelText = "available_balance_text".localized()
  37. let withdrawButtonText = "bank_deposit_text".localized()
  38. let gmeWalletNoTitleText = "gme_wallet_no_text".localized()
  39. }
  40. enum MenuType {
  41. case about
  42. case setting
  43. case notice
  44. }
  45. // @IBOutlets
  46. @IBOutlet weak var imageViewProfileSetting: UIImageView!
  47. @IBOutlet weak var labelProfileName: UILabel!
  48. @IBOutlet weak var labelPhone: UILabel!
  49. @IBOutlet weak var labelEmail: UILabel!
  50. @IBOutlet weak var roundedBgView: UIView!
  51. @IBOutlet weak var labelUserNameInitial: UILabel!
  52. @IBOutlet weak var settingButton: UIButton!
  53. @IBOutlet weak var aboutGmeButton: UIButton!
  54. @IBOutlet weak var logoutButton: UIButton!
  55. @IBOutlet weak var aboutIconImageView: UIImageView!
  56. @IBOutlet weak var settingIconImageView: UIImageView!
  57. @IBOutlet weak var logoutIconImageView: UIImageView!
  58. @IBOutlet weak var noticeButton: UIButton!
  59. weak var sideMenuDelegate: SideMenuDelegate?
  60. private let disposeBag = DisposeBag()
  61. var selectedMenu: MenuType? {
  62. didSet {
  63. guard let menu = selectedMenu else { return }
  64. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: menu)
  65. }
  66. }
  67. // Life Cycle
  68. override func viewDidLoad() {
  69. super.viewDidLoad()
  70. setUpSettingsScreen()
  71. setup()
  72. }
  73. override func viewWillAppear(_ animated: Bool) {
  74. super.viewWillAppear(animated)
  75. self.setUpSettingsScreen()
  76. NotificationCenter.default.addObserver(
  77. self,
  78. selector: #selector(configureText),
  79. name: NSNotification.Name(LCLLanguageChangeNotification),
  80. object: nil
  81. )
  82. }
  83. // Other Functions
  84. private func addShadow(view: UIView) {
  85. view.layer.shadowColor = UIColor.darkGray.cgColor
  86. view.layer.shadowOpacity = 0.5
  87. view.layer.shadowRadius = 2
  88. let offset = CGSize(width: 1, height: 1)
  89. view.layer.shadowOffset = offset
  90. }
  91. private func setup() {
  92. configureText()
  93. let shouldShowWithdrawButton = Utility.isVerifiedUser()
  94. self.view.backgroundColor = .themeRedDark
  95. self.roundedBgView.layer.cornerRadius = 20
  96. labelProfileName.textColor = .themeRed
  97. aboutGmeButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
  98. settingButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
  99. logoutButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5)
  100. }
  101. @objc private func configureText() {
  102. aboutGmeButton.setTitle(StringConstants().aboutGmeMenuText, for: UIControl.State.normal)
  103. settingButton.setTitle(StringConstants().settingMenuText, for: UIControl.State.normal)
  104. logoutButton.setTitle(StringConstants().logoutTitleText, for: UIControl.State.normal)
  105. }
  106. private func setupBlueBackGroundTheme() {
  107. self.roundedBgView.backgroundColor = .themeBlue
  108. [ labelPhone, labelEmail, labelUserNameInitial].forEach({
  109. $0?.textColor = .themeWhite
  110. })
  111. [aboutGmeButton, settingButton, logoutButton].forEach({
  112. $0?.setTitleColor(.themeWhite, for: UIControl.State.normal)
  113. })
  114. aboutIconImageView.tintColor = .themeWhite
  115. }
  116. @IBAction func aboutGme(_ sender: UIButton) {
  117. self.sideMenuController?.hideLeftView()
  118. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .about)
  119. }
  120. @IBAction func setting(_ sender: UIButton) {
  121. self.sideMenuController?.hideLeftView()
  122. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .setting)
  123. }
  124. @IBAction func touchNoticeButton(_ sender: UIButton) {
  125. self.sideMenuController?.hideLeftView()
  126. sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .notice)
  127. }
  128. @IBAction func logout(_ sender: Any) {
  129. alertWithOkCancel(
  130. type: .normal,
  131. message: StringConstants().logoutConfirmationText,
  132. title: StringConstants().logoutTitleText,
  133. okTitle: "yes_text".localized(),
  134. cancelTitle: "no_text".localized(),
  135. okAction: { MainWireframe.logout() }
  136. )
  137. }
  138. override func didReceiveMemoryWarning() {
  139. super.didReceiveMemoryWarning()
  140. // Dispose of any resources that can be recreated.
  141. }
  142. func setUpSettingsScreen() {
  143. //PHONE
  144. GMEDB.shared.user.rx.string(key: .mobileNumber).bind(to: labelPhone.rx.text)
  145. .disposed(by: disposeBag)
  146. //EMAIL
  147. GMEDB.shared.user.rx.string(key: .email).bind(to: labelEmail.rx.text)
  148. .disposed(by: disposeBag)
  149. let test = GMEDB.shared.user.rx.string(key: .email)
  150. print("TEST IS POSSIBLE \(test)")
  151. //NAME
  152. GMEDB.shared.user.rx.string(key: .firstName).map {$0?.capitalized}.bind(to: labelProfileName.rx.text)
  153. .disposed(by: disposeBag)
  154. //IMAGE
  155. let userDpString = GMEDB.shared.user.string(.dpUrl) ?? ""
  156. if let userDpUrl = URL(string: userDpString) {
  157. SDImageCache.shared().clearMemory()
  158. SDImageCache.shared().clearDisk()
  159. self.imageViewProfileSetting.sd_setImage(with: userDpUrl, completed: nil)
  160. labelUserNameInitial.isHidden = true
  161. imageViewProfileSetting.isHidden = false
  162. imageViewProfileSetting.contentMode = .scaleAspectFill
  163. } else {
  164. labelUserNameInitial.layer.backgroundColor = UIColor(hex: 0x2e3192).cgColor
  165. labelUserNameInitial.layer.cornerRadius = labelUserNameInitial.frame.height / 2
  166. labelUserNameInitial.text = labelProfileName.text?.prefix(1).uppercased()
  167. labelUserNameInitial.isHidden = false
  168. imageViewProfileSetting.isHidden = true
  169. }
  170. imageViewProfileSetting.layer.cornerRadius = imageViewProfileSetting.frame.height / 2
  171. }
  172. // Notification Names
  173. func getAvailableBalanceNotificationName() -> Notification.Name {
  174. return Notification.Name.init(SideMenuNavigationNotifications.availableBalance)
  175. }
  176. func getWithdrawNotificationName() -> Notification.Name {
  177. return Notification.Name.init(SideMenuNavigationNotifications.withdraw)
  178. }
  179. }