diff --git a/GMERemittance/Module/AutoDebit/User Interface/View/AutoDebitViewController.swift b/GMERemittance/Module/AutoDebit/User Interface/View/AutoDebitViewController.swift index 6fe0f869..086dc1b5 100644 --- a/GMERemittance/Module/AutoDebit/User Interface/View/AutoDebitViewController.swift +++ b/GMERemittance/Module/AutoDebit/User Interface/View/AutoDebitViewController.swift @@ -10,29 +10,179 @@ import UIKit class AutoDebitViewController: UIViewController { - // MARK: Properties + // MARK:- IBOutlets + @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var viewAddRecipient: UIView! // this is the view that contains add reciepient. should be header + @IBOutlet weak var labelSwipeInfo: UILabel! - var presenter: AutoDebitModuleInterface? - // MARK: IBOutlets + // MARK:- properties + var accounts: [Recipient]? { + didSet { + if (accounts ?? []).isEmpty { + }else { + self.tableView.isHidden = false + self.labelSwipeInfo.isHidden = false + self.tableView.reloadData() + } + } + } + - // MARK: VC's Life cycle + // MARK:- Life Cycle + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.setupNormalNavigation() + self.navigationItem.title = "Select Recipient" + fetchReceipients() + } override func viewDidLoad() { super.viewDidLoad() - self.setup() + // self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false + self.setupDelegates() + self.showProgressHud() + viewAddRecipient.layer.cornerRadius = 10 } - // MARK: IBActions - // MARK: Other Functions + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + // self.title = "" + self.navigationItem.title = "" + } + + + // MARK:- IBAction + @IBAction func loadMoreAction(_ sender: Any) { + print("load more") + } + + @IBAction func addNewRecipientTap(_ sender: UITapGestureRecognizer) { + self.showAddNewReciepientViewController() + } - private func setup() { - // all setup should be done here + // MARK:- other functions + private func setupDelegates() { + self.tableView.delegate = self + self.tableView.dataSource = self } } -// MARK: AutoDebitViewInterface -extension AutoDebitViewController: AutoDebitViewInterface { +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! RecipientListTableViewCell + cell.model = self.accounts?.elementAt(index: indexPath.row) + cell.setup() + return cell + } + + 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 receipient?", title: "Alert!", OkStyle: UIAlertActionStyle.destructive, okAction: { + let defaults = UserDefaults.standard + let myUsername = defaults.string(forKey: "com.gmeremit.username") ?? "" + + self.showProgressHud() + if let reciepient = self.accounts?.elementAt(index: indexPath.row) { + self.showProgressHud() + self.deleteRecipient(username: myUsername, reciepient: reciepient, success: { (reciepient) in + DispatchQueue.main.async { + self.hideProgressHud() + } + + guard let deletedPerson = reciepient else {return} + if let index = self.accounts?.index(where: { + ($0.recipientId ?? "") == (deletedPerson.recipientId ?? "") + }) { + UIView.animate(withDuration: 0.5, animations: { + tableView.beginUpdates() + self.accounts?.remove(at: index) + let indexPath = IndexPath(item: index, section: 0) + self.tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.fade) + tableView.endUpdates() + }) + + + } + // self.fetchReciepientList(username: myUsername, success: { (_recipients) in + // self.hideProgressHud() + // self.reciepients = _recipients + // }, failure: { (error) in + // self.hideProgressHud() + // self.alert(message: error.localizedDescription) + // }) + }, failure: { (error) in + self.alert(message: error.localizedDescription) + self.hideProgressHud() + }) + } + }) + } + + 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) { + let wireFrame = EditReciepientWireframe() + wireFrame.edit(reciepient: reciepient, source: navigation) + } + + } + + edit.backgroundColor = UIColor.init(hex: "#F39826") + delete.backgroundColor = UIColor.init(hex: "DE333C") + return [delete, edit] + } + + func fetchReceipients() { + let defaults = UserDefaults.standard + let myUsername = defaults.string(forKey: "com.gmeremit.username") ?? "" + self.fetchReciepientList(username: myUsername, success: { (reciepients) in + self.hideProgressHud() + self.accounts = reciepients + }) { (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: FetchRecipientList, DeleteRecipientService { } + + + + +//AutoDebitViewController diff --git a/GMERemittance/Module/Home/User Interface/View/HomeViewController.swift b/GMERemittance/Module/Home/User Interface/View/HomeViewController.swift index 96e61e69..7e342909 100644 --- a/GMERemittance/Module/Home/User Interface/View/HomeViewController.swift +++ b/GMERemittance/Module/Home/User Interface/View/HomeViewController.swift @@ -436,6 +436,7 @@ class HomeViewController: UIViewController, UICollectionViewDelegateFlowLayout { presenter?.openTodaysRate() } + // Transaction Report @objc private func showTrackYourTransfer() { let kycSubmited = user?.kyc ?? false let pennyTestComplete = Utility.pennyTestVerified() diff --git a/GMERemittance/Module/Home/User Interface/Wireframe/HomeWireframe.swift b/GMERemittance/Module/Home/User Interface/Wireframe/HomeWireframe.swift index 17ea6228..cfe6db20 100644 --- a/GMERemittance/Module/Home/User Interface/Wireframe/HomeWireframe.swift +++ b/GMERemittance/Module/Home/User Interface/Wireframe/HomeWireframe.swift @@ -15,6 +15,7 @@ class HomeWireframe { private lazy var todaysRateWireframe: ExchangeRatesWireframeInput = ExchangeRatesWireframe() private lazy var kycWireFrame = KycWireframe() private lazy var walletStatementWireframe = WalletStatementWireframe() + private lazy var autodebitWireFrame = AutoDebitWireframe() private lazy var pennyTestWireFrame = PennyTestWireframe() private lazy var pennyTestSubmitWireFrame = PennyTestSubmitWireframe() private lazy var appUpdateWireFrame = AppUpdateWireframe() @@ -54,7 +55,14 @@ extension HomeWireframe: HomeWireframeInput { func openTrackYourTransfer() { if let navigation = self.view.navigationController { - self.walletStatementWireframe.openWalletStatement(source: navigation) +// self.walletStatementWireframe.openWalletStatement(source: navigation) + self.openAutoDebit() + } + } + + func openAutoDebit() { + if let navigation = self.view.navigationController { + autodebitWireFrame.pushMainView(in: navigation) } } diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist index e9edbbb7..b523e278 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist @@ -17,12 +17,12 @@ AlamofireNetworkActivityLogger.xcscheme orderHint - 9 + 8 BRYXBanner.xcscheme orderHint - 10 + 9 Bolts.xcscheme @@ -57,67 +57,67 @@ FirebaseAuth.xcscheme orderHint - 11 + 10 FirebaseCore.xcscheme orderHint - 12 + 11 FirebaseMessaging.xcscheme orderHint - 13 + 12 GTMSessionFetcher.xcscheme orderHint - 15 + 14 GoogleToolboxForMac.xcscheme orderHint - 14 + 13 Hex.xcscheme orderHint - 16 + 15 IQKeyboardManagerSwift.xcscheme orderHint - 17 + 16 LGSideMenuController.xcscheme orderHint - 18 + 17 MBProgressHUD.xcscheme orderHint - 19 + 18 ObjectMapper.xcscheme orderHint - 21 + 20 PMAlertController-PMAlertController.xcscheme orderHint - 23 + 22 PMAlertController.xcscheme orderHint - 22 + 21 Pods-GME Remit.xcscheme orderHint - 24 + 23 Pods-GMERemittance.xcscheme @@ -137,17 +137,17 @@ Protobuf.xcscheme orderHint - 25 + 24 RAMAnimatedTabBarController.xcscheme orderHint - 26 + 25 RSKImageCropper.xcscheme orderHint - 27 + 26 ReadMoreTextView.xcscheme @@ -157,7 +157,7 @@ SDWebImage.xcscheme orderHint - 28 + 27 SwiftyJSON.xcscheme @@ -167,22 +167,22 @@ XLPagerTabStrip-XLPagerTabStrip.xcscheme orderHint - 31 + 30 XLPagerTabStrip.xcscheme orderHint - 30 + 29 nanopb.xcscheme orderHint - 20 + 19 thenPromise.xcscheme orderHint - 29 + 28