// // WalletStatementViewController.swift // GMERemittance // // Created by gme_2 on 03/10/2018. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit enum WalletStatementType { } class WalletStatementViewController: UIViewController { // MARK: IBOutlets @IBOutlet weak var tableView: UITableView! @IBOutlet weak var dateRangeLabelHeightConstraint: NSLayoutConstraint! @IBOutlet weak var fromDateLabel: UILabel! @IBOutlet weak var toDateLabel: UILabel! @IBOutlet weak var emptyLabel: UILabel! // MARK: Properties var presenter: WalletStatementModuleInterface? var from: String? var to: String? var statements: [WalletStatement] = [] { didSet { self.emptyLabel.isHidden = !statements.isEmpty self.tableView.reloadData() guard let fromDate = from, let toDate = to else { self.dateRangeLabelHeightConstraint.constant = 0 return } self.fromDateLabel.text = self.getHUmanReadableDate(date: fromDate) self.toDateLabel.text = self.getHUmanReadableDate(date: toDate) UIView.animate(withDuration: 0.33, animations: { self.dateRangeLabelHeightConstraint.constant = Constant.heightOfDateRangeLabel }) } } struct Constant { static let heightOfDateRangeLabel: CGFloat = 35 } // MARK: VC's Life cycle override func viewDidLoad() { super.viewDidLoad() self.setupNormalNavigation() self.setupDateFilterButton() self.setup() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationItem.title = "Wallet Statement" } override func viewWillDisappear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationItem.title = "" } // MARK: IBActions @objc func openSearchFilter() { // open search filter let viewController = UIStoryboard.init(name: "TransactionHistoryDatePicker", bundle: nil).instantiateViewController(withIdentifier: "DatePickerViewController") as! DatePickerViewController viewController.completion = self.selectedDate self.present(viewController, animated: true, completion: nil) } private func selectedDate(from: String?, to: String?) { self.from = from self.to = to guard let fromDate = from, let toDate = to else {return} self.presenter?.fetchWalletSatement(fromDate: fromDate, toDate: toDate) } // MARK: Other Functions private func setup() { // all setup should be done here setupDelegates() setupDateFilterButton() configureViews() self.presenter?.viewIsReady() } private func configureViews() { self.dateRangeLabelHeightConstraint.constant = 0 // self.emptyLabel.textColor = AppConstants.themeBlueColor } private func setupDateFilterButton() { let filterItem = UIBarButtonItem.init(image: #imageLiteral(resourceName: "ic_calender"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.openSearchFilter)) self.navigationItem.rightBarButtonItem = filterItem } private func getHUmanReadableDate(date: String?) -> String? { if let date = DateFormatter.toDate(dateString: date ?? "", format: AppConstants.dateFormat) { let dateString = DateFormatter.toString(date: date, format: AppConstants.humanReadableDateFormat) return dateString } return nil } private func setupDelegates() { self.tableView.delegate = self self.tableView.dataSource = self } } // MARK: WalletStatementViewInterface extension WalletStatementViewController: WalletStatementViewInterface { func showLoading() { self.showProgressHud() } func hideLoading() { self.hideProgressHud() } func show(error: String) { self.alert(message: error) } func show(models: [WalletStatement]) { self.statements = models } } // MARK: TableViewDelegate extension WalletStatementViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { // self.presenter?.showDetailOf(index: indexPath.row) } } // MARK: TableViewDatasource extension WalletStatementViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return statements.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "WalletStatementTableViewCell") as! WalletStatementTableViewCell cell.model = self.statements.elementAt(index: indexPath.row) cell.setup() return cell } }