// // AutoDebitViewController.swift // GME Remit // // Created by Mac on 12/19/18. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit class AutoDebitViewController: UIViewController { // MARK:- IBOutlets @IBOutlet weak var tableView: UITableView! @IBOutlet weak var viewAddAccount: UIView! // this is the view that contains add reciepient. should be header @IBOutlet weak var labelSwipeInfo: UILabel! var presenter: AutoDebitPresenter? // MARK:- properties var kftcDetail: KFTCModel? { didSet { self.accounts = kftcDetail?.model ?? [] self.languages = kftcDetail?.languages self.header = kftcDetail?.header self.url = kftcDetail?.url self.tableView.reloadData() } } var accounts: [Account]? { didSet { if (accounts ?? []).isEmpty { }else { self.tableView.isHidden = false self.labelSwipeInfo.isHidden = false } } } var languages: [KftcLanguage]? var header: [KftcHeader]? var url: String? var selectedLanguage: KftcLanguage? { didSet { if var url = self.url { let string = "&lang=\(selectedLanguage?.key ?? "")" url.append(string) openWkWebViewWith(url: url) } } } // MARK:- Life Cycle override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.setupNormalNavigation() self.navigationItem.title = "My Accounts" fetchReceipients() } override func viewDidLoad() { super.viewDidLoad() self.setupDelegates() viewAddAccount.layer.cornerRadius = 10 } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) // self.title = "" self.navigationItem.title = "" } private func openWkWebViewWith(url: String) { let viewcontroller = UIStoryboard.init(name: "WKWebView", bundle: nil).instantiateViewController(withIdentifier: "WkWebViewController") as! WkWebViewController viewcontroller.url = url viewcontroller.headers = self.header let nvc = UINavigationController.init(rootViewController: viewcontroller) self.present(nvc, animated: true, completion: nil) } // MARK:- IBAction @IBAction func loadMoreAction(_ sender: Any) { print("load more") } @IBAction func addNewAccount(_ sender: UITapGestureRecognizer) { print("add new account") if (self.languages ?? []).isEmpty { self.alert(message: "No Lanugages Available") } showLanguageSelection() } // MARK:- other functions private func setupDelegates() { self.tableView.delegate = self self.tableView.dataSource = self } private func showLanguageSelection() { let picker = UIAlertController.init(title: "Select Language", message: nil, preferredStyle: UIAlertControllerStyle.actionSheet) self.languages?.forEach({language in let action = UIAlertAction.init(title: language.value, style: UIAlertActionStyle.default, handler: { (action) in self.selectedLanguage = language }) picker.addAction(action) }) let cancelAction = UIAlertAction.init(title: "Cancel", style: UIAlertActionStyle.cancel, handler: nil) picker.addAction(cancelAction) self.present(picker, animated: true, completion: nil) } private func createDummyLangugage() -> [KftcLanguage] { let leng = KftcLanguage() leng.key = "eng" leng.value = "English" let leng1 = KftcLanguage() leng1.key = "Nepali" leng1.value = "Nepali" return [leng, leng1] } } extension AutoDebitViewController: UITableViewDelegate,UITableViewDataSource { func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return 120.0 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.accounts?.count ?? 0 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "recipientList", for: indexPath) as! AutoDebitTableViewCell cell.model = self.accounts?.elementAt(index: indexPath.row) cell.setup() return cell } // AutoDebitTableViewCell func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { // startSendMoneyProcess(index: indexPath.row) } private func startSendMoneyProcess(index: Int) { if let navigation = self.navigationController { if let reciepient = self.accounts?.elementAt(index: index) { let wireframe = SendMoneyParentWireframe() // wireframe.open(for: reciepient, in: navigation) } } } func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let delete = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in self.alertWithOkCancel(message: "Do you want to delete this Account?", title: "Alert!", OkStyle: UIAlertActionStyle.destructive, okAction: { let defaults = UserDefaults.standard let myUsername = defaults.string(forKey: "com.gmeremit.username") ?? "" self.showProgressHud() if let account = self.accounts?.elementAt(index: indexPath.row) { self.deleteAccount(username: myUsername, account: account, success: { self.fetchReceipients() }, failure: { (error) in self.hideProgressHud() self.alert(message: error.localizedDescription) }) self.showProgressHud() } }) } let edit = UITableViewRowAction(style: .normal, title: "Edit") { (action, indexPath) in guard let navigation = self.navigationController else {return} if let reciepient = self.accounts?.elementAt(index: indexPath.row) { // do some editing } } edit.backgroundColor = UIColor.init(hex: "#F39826") delete.backgroundColor = UIColor.init(hex: "DE333C") return [delete, edit] } func fetchReceipients() { self.showProgressHud() let defaults = UserDefaults.standard let myUsername = defaults.string(forKey: UserKeys.email) ?? "" self.fetchAccountList(username: myUsername, success: { (kftc) in self.hideProgressHud() self.kftcDetail = kftc }) { (error) in self.hideProgressHud() self.alert(message: error.localizedDescription) } } // private func private func showAddNewReciepientViewController() { let viewcontroller = AddReciepientWireframe().getMainView() self.navigationController?.pushViewController(viewcontroller, animated: true) } } extension AutoDebitViewController: FetchAccountList, DeleteAccountService { } extension AutoDebitViewController: AutoDebitViewInterface { } //AutoDebitViewController