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.
224 lines
7.5 KiB
224 lines
7.5 KiB
//
|
|
// 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
|