Skip to content

Instantly share code, notes, and snippets.

@alfredolucomav
Created June 8, 2020 19:11
Show Gist options
  • Save alfredolucomav/2f3e57676c10e818090db3259d0c6b76 to your computer and use it in GitHub Desktop.
Save alfredolucomav/2f3e57676c10e818090db3259d0c6b76 to your computer and use it in GitHub Desktop.
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