Created
June 8, 2020 19:11
-
-
Save alfredolucomav/2f3e57676c10e818090db3259d0c6b76 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ServicesViewController: ViewController { | |
//MARK: - IBOutlets | |
@IBOutlet weak var tableView: UITableView! | |
//MARK: - Variables | |
var presenter: ServicePresenter = ServicePresenter() | |
var search: SearchController! | |
var locationManager: CLLocationManager = CLLocationManager() | |
var services: [Service] = []{ | |
didSet{ | |
self.tableView.reloadData() | |
} | |
} | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
self.tableView.backgroundColor = .white | |
self.tableView.estimatedRowHeight = 130.0 | |
self.tableView.rowHeight = UITableView.automaticDimension | |
self.tableView.separatorStyle = .none | |
search = SearchController(searchResultsController: nil) | |
search.awakeFromNib() | |
search.searchBar.delegate = self | |
UIBarButtonItem.appearance(whenContainedInInstancesOf:[UISearchBar.self]).setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white], for: .normal) | |
self.navigationItem.searchController = search | |
/// Estamos harcodeando para usted | |
let point = GeoPoint(latitude: -33.4020433, longitude: -70.5281162) | |
self.presenter.retrieveServices(point: point) | |
self.navigationItem.setRightBarButton(UIBarButtonItem(image: UIImage(named: "ic_bookmarks"), style: .plain, target: self, action: #selector(openAddressBookmarks)), animated: true) | |
// Do any additional setup after loading the view. | |
} | |
override func viewWillAppear(_ animated: Bool) { | |
super.viewWillAppear(animated) | |
self.locationManager.requestWhenInUseAuthorization() | |
self.locationManager.startUpdatingLocation() | |
self.presenter.retrieveUser() | |
} | |
override func viewWillDisappear(_ animated: Bool) { | |
super.viewWillDisappear(animated) | |
self.locationManager.stopUpdatingLocation() | |
} | |
@objc func openAddressBookmarks(){ | |
let vc = BookmarkAddressRouter.createBookmarkAddressModule() | |
vc.delegate = self | |
self.navigationController?.pushViewController(vc, animated: true) | |
} | |
} | |
extension ServicesViewController: BookmarkAddressViewControllerDelegate{ | |
func didSelectAddress(bookmark: BookmarkAddress) { | |
self.search.searchBar.text = bookmark.address | |
self.presenter.retrieveServices(point: bookmark.coordinates) | |
} | |
} | |
extension ServicesViewController: UISearchBarDelegate{ | |
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { | |
self.presenter.beginSearchPlace() | |
} | |
} | |
extension ServicesViewController: UITableViewDataSource{ | |
func numberOfSections(in tableView: UITableView) -> Int { | |
return 1 | |
} | |
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
return self.services.count > 0 ? self.services.count : 1 | |
} | |
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
return self.presenter.drawCell(tableView, cellForRowAt: indexPath, self.services) | |
} | |
} | |
extension ServicesViewController: GMSAutocompleteViewControllerDelegate{ | |
//MARK: - Autocomplete Delegate | |
func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) { | |
let newPoint = GeoPoint(latitude: place.coordinate.latitude, longitude: place.coordinate.longitude) | |
self.presenter.retrieveServices(point: newPoint) | |
viewController.dismiss(animated: true, completion: nil) | |
} | |
func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) { | |
print("Error: ", error.localizedDescription) | |
viewController.dismiss(animated: true, completion: nil) | |
} | |
func wasCancelled(_ viewController: GMSAutocompleteViewController) { | |
viewController.dismiss(animated: true, completion: nil) | |
} | |
func didRequestAutocompletePredictions(_ viewController: GMSAutocompleteViewController) { | |
UIApplication.shared.isNetworkActivityIndicatorVisible = true | |
} | |
func didUpdateAutocompletePredictions(_ viewController: GMSAutocompleteViewController) { | |
UIApplication.shared.isNetworkActivityIndicatorVisible = false | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment