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.

188 lines
4.7 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. }
  46. // MARK: IBActions
  47. @IBAction func touchClose(_ sender: UIBarButtonItem) {
  48. self.dismiss(animated: true, completion: nil)
  49. }
  50. // MARK: Other Functions
  51. private func setup() {
  52. self.tableview.dataSource = self
  53. self.tableview.delegate = self
  54. NotificationCenter.default.addObserver(
  55. self,
  56. selector: #selector(setupTabItem),
  57. name: NSNotification.Name(LCLLanguageChangeNotification),
  58. object: nil
  59. )
  60. }
  61. struct StringConstants {
  62. }
  63. private func call(number: String) {
  64. let number = number.removeWhitespacesInBetween()
  65. UIApplication.tryURL(url: "tel://\(number)")
  66. }
  67. override func setupTabItem() {
  68. let image = UIImage.init(named: "ic-agent")
  69. self.tabBarItem = UITabBarItem(title: "branch_text".localized(), image: image, selectedImage: nil)
  70. self.tabBarItem.titlePositionAdjustment = UIOffset(
  71. horizontal: 0,
  72. vertical: UI_USER_INTERFACE_IDIOM() == .pad ? 2 : -6
  73. )
  74. }
  75. }
  76. // MARK: GmeContactsViewInterface
  77. extension GmeContactsViewController: GmeContactsViewInterface {
  78. func setBranchModel(with model: [Branch]?) {
  79. self.model = model
  80. }
  81. func setBranchesError(with error: Error) {
  82. // alertWithOk(message: error.localizedDescription)
  83. }
  84. func startLoading() {
  85. showProgressHud()
  86. }
  87. func endLoading() {
  88. hideProgressHud()
  89. }
  90. }
  91. extension GmeContactsViewController {
  92. func viperSetup() {
  93. let service = GmeContactsService()
  94. let interactor = GmeContactsInteractor(service: service, model: nil)
  95. let presenter = GmeContactsPresenter()
  96. let wireframe = GmeContactsWireframe()
  97. self.presenter = presenter
  98. interactor.output = presenter
  99. presenter.interactor = interactor
  100. presenter.wireframe = wireframe
  101. presenter.view = self
  102. wireframe.view = self
  103. }
  104. }
  105. extension GmeContactsViewController: UITableViewDelegate {
  106. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  107. return UITableView.automaticDimension
  108. }
  109. }
  110. extension GmeContactsViewController: UITableViewDataSource {
  111. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  112. return contacts.count
  113. }
  114. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  115. guard let cell = tableView.dequeueReusableCell(
  116. withIdentifier: "GmeContactsTableViewCell"
  117. ) as? GmeContactsTableViewCell else {
  118. return UITableViewCell()
  119. }
  120. cell.contact = self.contacts.elementAt(index: indexPath.row)
  121. cell.delegate = self
  122. cell.index = indexPath.row
  123. cell.setup()
  124. return cell
  125. }
  126. }
  127. extension GmeContactsViewController: GmeContactCallDelegate {
  128. func call(index: Int?) {
  129. guard let index = index else {return}
  130. if let contact = self.contacts.elementAt(index: index) {
  131. let numbers = contact.contactNumber
  132. let alert = UIAlertController(
  133. title:nil,
  134. message:"help_you_text".localized(),
  135. preferredStyle: .actionSheet
  136. )
  137. numbers?.forEach({ number in
  138. let action = UIAlertAction(
  139. title: "\(number)",
  140. style: UIAlertAction.Style.default,
  141. handler: { _ in
  142. self.call(number: number)
  143. })
  144. alert.addAction(action)
  145. })
  146. alert.view.tintColor = UIColor.darkGray
  147. alert.addAction(
  148. UIAlertAction(title: "cancel_text".localized(), style: UIAlertAction.Style.cancel, handler: nil)
  149. )
  150. present(alert, animated: true, completion: nil)
  151. }
  152. }
  153. }