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.

190 lines
4.9 KiB

6 years ago
5 years ago
5 years ago
  1. //
  2. // GmeContactsViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 25/08/2018.
  6. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. import Localize_Swift
  10. class GmeContactsViewController: UIViewController {
  11. // MARK: IBOutlets
  12. @IBOutlet weak var tableview: UITableView!
  13. var presenter: GmeContactsModuleInterface?
  14. var contacts: [GmeContacts] = [] {
  15. didSet {
  16. self.tableview.reloadData()
  17. }
  18. }
  19. var model: [Branch]? {
  20. didSet {
  21. guard let model = model else { return }
  22. contacts = model.map {
  23. let branch = GmeContacts()
  24. branch.title = $0.agentName
  25. branch.address = $0.agentAddress
  26. branch.contactNumber = [$0.agentPhone1] as? [String]
  27. return branch
  28. }
  29. }
  30. }
  31. // MARK: Properties
  32. // MARK: VC's Life cycle
  33. override func viewDidLoad() {
  34. super.viewDidLoad()
  35. self.setup()
  36. presenter?.fetchBranch()
  37. }
  38. override func viewWillAppear(_ animated: Bool) {
  39. super.viewWillAppear(animated)
  40. self.navigationItem.title = "branch_text".localized()
  41. setupNormalNavigation()
  42. if self.presentingViewController == nil {
  43. self.navigationItem.leftBarButtonItem = nil
  44. }
  45. // let image = UIImage.init(named: "branch")
  46. // self.tabBarItem = UITabBarItem(title: "branch_text".localized(), image: image, selectedImage: UIImage(named: "branch_selected"))
  47. }
  48. // MARK: IBActions
  49. @IBAction func touchClose(_ sender: UIBarButtonItem) {
  50. self.dismiss(animated: true, completion: nil)
  51. }
  52. // MARK: Other Functions
  53. private func setup() {
  54. self.tableview.dataSource = self
  55. self.tableview.delegate = self
  56. NotificationCenter.default.addObserver(
  57. self,
  58. selector: #selector(setupTabItem),
  59. name: NSNotification.Name(LCLLanguageChangeNotification),
  60. object: nil
  61. )
  62. }
  63. struct StringConstants {
  64. }
  65. private func call(number: String) {
  66. let number = number.removeWhitespacesInBetween()
  67. UIApplication.tryURL(url: "tel://\(number)")
  68. }
  69. override func setupTabItem() {
  70. let image = UIImage.init(named: "branch")
  71. self.tabBarItem = UITabBarItem(title: "branch_text".localized(), image: image, selectedImage: UIImage(named: "branch_selected"))
  72. self.tabBarItem.titlePositionAdjustment = UIOffset(
  73. horizontal: 0,
  74. vertical: UI_USER_INTERFACE_IDIOM() == .pad ? 2 : -2
  75. )
  76. }
  77. }
  78. // MARK: GmeContactsViewInterface
  79. extension GmeContactsViewController: GmeContactsViewInterface {
  80. func setBranchModel(with model: [Branch]?) {
  81. self.model = model
  82. }
  83. func setBranchesError(with error: Error) {
  84. // alertWithOk(message: error.localizedDescription)
  85. }
  86. func startLoading() {
  87. showProgressHud()
  88. }
  89. func endLoading() {
  90. hideProgressHud()
  91. }
  92. }
  93. extension GmeContactsViewController {
  94. func viperSetup() {
  95. let service = GmeContactsService()
  96. let interactor = GmeContactsInteractor(service: service, model: nil)
  97. let presenter = GmeContactsPresenter()
  98. let wireframe = GmeContactsWireframe()
  99. self.presenter = presenter
  100. interactor.output = presenter
  101. presenter.interactor = interactor
  102. presenter.wireframe = wireframe
  103. presenter.view = self
  104. wireframe.view = self
  105. }
  106. }
  107. extension GmeContactsViewController: UITableViewDelegate {
  108. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  109. return UITableView.automaticDimension
  110. }
  111. }
  112. extension GmeContactsViewController: UITableViewDataSource {
  113. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  114. return contacts.count
  115. }
  116. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  117. guard let cell = tableView.dequeueReusableCell(
  118. withIdentifier: "GmeContactsTableViewCell"
  119. ) as? GmeContactsTableViewCell else {
  120. return UITableViewCell()
  121. }
  122. cell.contact = self.contacts.elementAt(index: indexPath.row)
  123. cell.delegate = self
  124. cell.index = indexPath.row
  125. cell.setup()
  126. return cell
  127. }
  128. }
  129. extension GmeContactsViewController: GmeContactCallDelegate {
  130. func call(index: Int?) {
  131. guard let index = index else {return}
  132. if let contact = self.contacts.elementAt(index: index) {
  133. let numbers = contact.contactNumber
  134. let alert = UIAlertController(
  135. title:nil,
  136. message:"help_you_text".localized(),
  137. preferredStyle: .actionSheet
  138. )
  139. numbers?.forEach({ number in
  140. let action = UIAlertAction(
  141. title: "\(number)",
  142. style: UIAlertAction.Style.default,
  143. handler: { _ in
  144. self.call(number: number)
  145. })
  146. alert.addAction(action)
  147. })
  148. alert.view.tintColor = UIColor.darkGray
  149. alert.addAction(
  150. UIAlertAction(title: "cancel_text".localized(), style: UIAlertAction.Style.cancel, handler: nil)
  151. )
  152. present(alert, animated: true, completion: nil)
  153. }
  154. }
  155. }