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.
 
 
 
 

167 lines
5.0 KiB

//
// 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
}
}