// // GmeContactsViewController.swift // GMERemittance // // Created by gme_2 on 25/08/2018. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit import Localize_Swift class GmeContactsViewController: UIViewController { // MARK: IBOutlets @IBOutlet weak var tableview: UITableView! var presenter: GmeContactsModuleInterface? var contacts: [GmeContacts] = [] { didSet { self.tableview.reloadData() } } var model: [Branch]? { didSet { guard let model = model else { return } contacts = model.map { let branch = GmeContacts() branch.title = $0.agentName branch.address = $0.agentAddress branch.contactNumber = [$0.agentPhone1] as? [String] return branch } } } // MARK: Properties // MARK: VC's Life cycle override func viewDidLoad() { super.viewDidLoad() self.setup() presenter?.fetchBranch() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationItem.title = "branch_text".localized() setupNormalNavigation() if self.presentingViewController == nil { self.navigationItem.leftBarButtonItem = nil } // let image = UIImage.init(named: "branch") // self.tabBarItem = UITabBarItem(title: "branch_text".localized(), image: image, selectedImage: UIImage(named: "branch_selected")) } // MARK: IBActions @IBAction func touchClose(_ sender: UIBarButtonItem) { self.dismiss(animated: true, completion: nil) } // MARK: Other Functions private func setup() { self.tableview.dataSource = self self.tableview.delegate = self NotificationCenter.default.addObserver( self, selector: #selector(setupTabItem), name: NSNotification.Name(LCLLanguageChangeNotification), object: nil ) } struct StringConstants { } private func call(number: String) { let number = number.removeWhitespacesInBetween() UIApplication.tryURL(url: "tel://\(number)") } override func setupTabItem() { let image = UIImage.init(named: "branch") self.tabBarItem = UITabBarItem(title: "branch_text".localized(), image: image, selectedImage: UIImage(named: "branch_selected")) self.tabBarItem.titlePositionAdjustment = UIOffset( horizontal: 0, vertical: UI_USER_INTERFACE_IDIOM() == .pad ? 2 : -2 ) } } // MARK: GmeContactsViewInterface extension GmeContactsViewController: GmeContactsViewInterface { func setBranchModel(with model: [Branch]?) { self.model = model } func setBranchesError(with error: Error) { // alertWithOk(message: error.localizedDescription) } func startLoading() { showProgressHud() } func endLoading() { hideProgressHud() } } extension GmeContactsViewController { func viperSetup() { let service = GmeContactsService() let interactor = GmeContactsInteractor(service: service, model: nil) let presenter = GmeContactsPresenter() let wireframe = GmeContactsWireframe() self.presenter = presenter interactor.output = presenter presenter.interactor = interactor presenter.wireframe = wireframe presenter.view = self wireframe.view = self } } extension GmeContactsViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableView.automaticDimension } } extension GmeContactsViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return contacts.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell( withIdentifier: "GmeContactsTableViewCell" ) as? GmeContactsTableViewCell else { return UITableViewCell() } cell.contact = self.contacts.elementAt(index: indexPath.row) cell.delegate = self cell.index = indexPath.row cell.setup() return cell } } extension GmeContactsViewController: GmeContactCallDelegate { func call(index: Int?) { guard let index = index else {return} if let contact = self.contacts.elementAt(index: index) { let numbers = contact.contactNumber let alert = UIAlertController( title:nil, message:"help_you_text".localized(), preferredStyle: .actionSheet ) numbers?.forEach({ number in let action = UIAlertAction( title: "\(number)", style: UIAlertAction.Style.default, handler: { _ in self.call(number: number) }) alert.addAction(action) }) alert.view.tintColor = UIColor.darkGray alert.addAction( UIAlertAction(title: "cancel_text".localized(), style: UIAlertAction.Style.cancel, handler: nil) ) present(alert, animated: true, completion: nil) } } }