diff --git a/GMERemittance.xcodeproj/project.pbxproj b/GMERemittance.xcodeproj/project.pbxproj index 1397b41b..fb90419e 100644 --- a/GMERemittance.xcodeproj/project.pbxproj +++ b/GMERemittance.xcodeproj/project.pbxproj @@ -1569,6 +1569,7 @@ D922D93D2135124200D43053 /* ViewModels */, D922D93E2135124200D43053 /* SendMoneyPaymentMode.storyboard */, D922D93F2135124200D43053 /* SendMoneyPaymentModeViewInterface.swift */, + D90A9D562136942300A96E45 /* BankBranchPicker */, ); path = View; sourceTree = ""; @@ -1576,6 +1577,7 @@ D922D93D2135124200D43053 /* ViewModels */ = { isa = PBXGroup; children = ( + D90A9D61213696E400A96E45 /* BankPicker */, D9DAFE26213530A800483E71 /* PaymentModeRecipientViewModel.swift */, ); path = ViewModels; @@ -1947,8 +1949,6 @@ isa = PBXGroup; children = ( D9BF7EDD2137CECE00264387 /* CurrencyPicker */, - D90A9D61213696E400A96E45 /* BankPicker */, - D90A9D562136942300A96E45 /* BankBranchPicker */, D9CB49812132A58C00B7A124 /* ItemPickerView */, D9CB497A21329DCE00B7A124 /* CountryWithFlagPicker */, D9622302212BD62F00B7A115 /* CountryWithCurrencyPicker */, diff --git a/GMERemittance/Model/SendMoneyPaymentModeModel.swift b/GMERemittance/Model/SendMoneyPaymentModeModel.swift index a443e261..2a9dbfad 100644 --- a/GMERemittance/Model/SendMoneyPaymentModeModel.swift +++ b/GMERemittance/Model/SendMoneyPaymentModeModel.swift @@ -109,3 +109,21 @@ class SendMoneyBankBranch: Mappable { name <- map["Name"] } } + + +class SendMoneyBankBranchContainer: Mappable { + var errorCode: String? + var message: String? + var id: String? + var data: [SendMoneyBankBranch]? + required init?(map: Map) { + + } + + func mapping(map: Map) { + errorCode <- map["ErrorCode"] + message <- map["Msg"] + id <- map["Id"] + data <- map["Data"] + } +} diff --git a/GMERemittance/Module/SendMoneyPaymentMode/Application Logic/Service/SendMoneyPaymentModeServiceType.swift b/GMERemittance/Module/SendMoneyPaymentMode/Application Logic/Service/SendMoneyPaymentModeServiceType.swift index 06abde27..756727d7 100644 --- a/GMERemittance/Module/SendMoneyPaymentMode/Application Logic/Service/SendMoneyPaymentModeServiceType.swift +++ b/GMERemittance/Module/SendMoneyPaymentMode/Application Logic/Service/SendMoneyPaymentModeServiceType.swift @@ -35,6 +35,42 @@ extension FetchSendMoneyPaymentModeService { } } +//--POST http://localhost:9500/api/v1/mobile/sendmoney/load/branch/NP/1066/?search= +// +//{ +// "ErrorCode": "0", +// "Msg": "Success", +// "Id": null, +// "Data": [ +// { +// "Id": "151", +// "Name": "Nepal" +// } +// ] +//} + +protocol FetchBankBranchService: ApiServiceType { + func fetchBranch(countryCode: String, bankId: String, branchName: String, success: @escaping ([SendMoneyBankBranch]) -> (), failure: @escaping (Error) -> ()) +} + +extension FetchBankBranchService { + func fetchBranch(countryCode: String, bankId: String, branchName: String, success: @escaping ([SendMoneyBankBranch]) -> (), failure: @escaping (Error) -> ()) { + let url = baseUrl + "mobile/sendmoney/load/branch/" + countryCode + "/" + bankId + "/?search=" + branchName + + self.auth.request(method: .post, url: url, params: nil, success: { (response: SendMoneyBankBranchContainer) in + if (response.errorCode ?? "") == "1" { + let error = NSError.init(domain: "Network", code: 0, userInfo: [NSLocalizedDescriptionKey : response.message ?? ""]) + failure(error) + }else { + let model = response.data + success(model ?? []) + } + }) { (error) in + failure(error) + } + } +} + protocol ValidateAccountNumberService: ApiServiceType { func validate(accountNumber: String, success: @escaping () -> (), failure: @escaping (Error) -> ()) } diff --git a/GMERemittance/Library/BankBranchPicker/BankBranchPicker.storyboard b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPicker.storyboard similarity index 100% rename from GMERemittance/Library/BankBranchPicker/BankBranchPicker.storyboard rename to GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPicker.storyboard diff --git a/GMERemittance/Library/BankBranchPicker/BankBranchPickerCell.swift b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerCell.swift similarity index 100% rename from GMERemittance/Library/BankBranchPicker/BankBranchPickerCell.swift rename to GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerCell.swift diff --git a/GMERemittance/Library/BankBranchPicker/BankBranchPickerViewController.swift b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerViewController.swift similarity index 80% rename from GMERemittance/Library/BankBranchPicker/BankBranchPickerViewController.swift rename to GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerViewController.swift index f58db55b..d379ee43 100644 --- a/GMERemittance/Library/BankBranchPicker/BankBranchPickerViewController.swift +++ b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerViewController.swift @@ -24,12 +24,16 @@ class BankBranchPickerViewController: UIViewController { @IBOutlet weak var searchTextField: UITextField! @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var noResultFoundLabel: UILabel! - @IBOutlet weak var mainview: UIView! + var data: [SendMoneyBankBranch] = [] { + didSet { + self.tableVIew.reloadData() + } + } + var countryCode: String? + var bankId: String? - - var data: [SendMoneyBankBranch] = [] var selectedData : SendMoneyBankBranch? var filteredPlaces: [SendMoneyBankBranch] = [] { @@ -51,9 +55,7 @@ class BankBranchPickerViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.setupTableView() - self.setupSearchService() - // self.setupSearchTextFieldUi() self.setupPlaces() self.titleView.layer.cornerRadius = 10 self.mainview.layer.cornerRadius = 10 @@ -88,7 +90,6 @@ class BankBranchPickerViewController: UIViewController { } private func setupSearchTextFieldUi() { - // #imageLiteral(resourceName: "ic_search") let searchIconImageView = UIImageView(image: #imageLiteral(resourceName: "ic_search")) searchIconImageView.tintColor = Constants.tintColor self.searchTextField.leftView = searchIconImageView @@ -103,29 +104,19 @@ class BankBranchPickerViewController: UIViewController { @objc private func search(sender: UITextField) { let searchString = sender.text! - self.searchText = searchString - if searchString.isEmpty { - self.filteredPlaces = self.data + // make a api call here + guard searchString.count > 2 else { + self.filteredPlaces = [] return } - print("searchString : \(searchString), \(filteredPlaces)") - self.filteredPlaces = self.data.filter({ - return searchString.isEmpty || - ($0.name ?? "").lowercased().contains(searchString.lowercased()) - }).sorted(by: { (a, _) -> Bool in - return ((a.name ?? "").lowercased() ?? "").hasPrefix(searchString.lowercased()) - }) - print("after search") - print(filteredPlaces) + let countryCode = self.countryCode ?? "" + let bankId = self.bankId ?? "" + self.fetchBranches(countryCode: countryCode, bankId: bankId, branchName: searchString) + } // MARK: IBActions @IBAction func close(_ sender: Any?) { -// let selectedIndexPaths = self.tableVIew.indexPathsForSelectedRows ?? self.tableVIew.indexPathForSelectedRow.map({[$0]}) -// let selectedData = selectedIndexPaths?.flatMap { indexPath -> SendMoneyBankBranch? in -// let value = data[indexPath.row] -// return value -// } self.doneAction?([self.selectedData]) self.dismiss(animated: true, completion: nil) } @@ -153,10 +144,6 @@ extension BankBranchPickerViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { self.selectedData = filteredPlaces.elementAt(index: indexPath.row) -// let cell = tableView.cellForRow(at: indexPath) -// -// cell?.accessoryType = .checkmark -// if !self.allowMultipleSelection { self.close(nil) } @@ -181,10 +168,17 @@ extension BankBranchPickerViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableVIew.dequeueReusableCell(withIdentifier: "BankBranchPickerCell", for: indexPath) as! BankBranchPickerCell cell.place = self.filteredPlaces.elementAt(index: indexPath.row)?.name -// if let selected = self.defaultSelectedData.first { -// cell.selectedPlace = selected -// } cell.setup() return cell } } + +extension BankBranchPickerViewController: FetchBankBranchService { + func fetchBranches(countryCode: String, bankId: String, branchName: String) { + self.fetchBranch(countryCode: countryCode, bankId: bankId, branchName: branchName, success: { (models) in + self.filteredPlaces = models + }) { (error) in + self.alert(message: error.localizedDescription) + } + } +} diff --git a/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard index 428bb2fd..db0ce189 100644 --- a/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard +++ b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard @@ -280,6 +280,7 @@ + diff --git a/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift index 7cbf7482..b3eb215b 100644 --- a/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift +++ b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift @@ -22,6 +22,7 @@ class SendMoneyPaymentModeViewController: UIViewController { // MARK: IBOutlets @IBOutlet weak var collectionView: UICollectionView! + @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var bankStackView: UIStackView! @IBOutlet weak var branchStackView: UIStackView! @@ -117,6 +118,27 @@ class SendMoneyPaymentModeViewController: UIViewController { if accountNumber.isEmpty { shouldGoNextPage = false errors = errors + " " + Constants.validationErrorMessageAccountNumber + }else { +// IdType, IdNumber CustomerFirstName CustomerLastName ReceiverFirstName ReceiverLastName Country AccountType IssuerCode AccountNo +// Amount BankCode PayoutPartner ProcessId + + let params: [String: String] = + [ + "IdType" : "", + "IdNumber": "", + "CustomerFirstName": "", + "CustomerLastName": "", + "ReceiverFirstName": "", + "ReceiverLastName": "", + "Country": "", + "AccountType": "", + "IssuerCode": "", + "AccountNo": "", + "Amount": "", + "BankCode": "", + "PayoutPartner": "", + "ProcessId": "" + ] } } @@ -144,6 +166,7 @@ class SendMoneyPaymentModeViewController: UIViewController { // all setup should be done here setupDelegates() configureViews() + configureTitle() } @@ -158,10 +181,15 @@ class SendMoneyPaymentModeViewController: UIViewController { } } + private func configureTitle() { + if let country = self.recipient?.country { + self.titleLabel.text = "How would you like to pick your money in \(country)?" + } + } + private func validateAccount() { let accountNumber = self.accountTextField.text! self.presenter?.validate(accountNumber: accountNumber) - } private func goToExchangeView() { @@ -169,6 +197,7 @@ class SendMoneyPaymentModeViewController: UIViewController { } private func shouldValidateAccount() -> Bool { + return true return (self.selectedBank?.accountValidationRequired ?? "false").lowercased() == "true" } @@ -198,9 +227,11 @@ class SendMoneyPaymentModeViewController: UIViewController { private func showBranchPickerView() { let viewcontroller = self.getBankBranchPickerViewController() - let branches = self.selectedBank?.branches ?? [] - viewcontroller.data = branches +// let branches = self.selectedBank?.branches ?? [] +// viewcontroller.data = branches viewcontroller.type = PickerTitle.branch + viewcontroller.countryCode = self.recipient?.countryCode ?? "" + viewcontroller.bankId = self.selectedBank?.id ?? "" viewcontroller.doneAction = self.branchSelected viewcontroller.defaultSelectedData = [self.selectedBranch] self.present(viewcontroller, animated: true, completion: nil) @@ -216,7 +247,6 @@ class SendMoneyPaymentModeViewController: UIViewController { if let data = banks.first { self.selectedBank = data } - } private func getPickerViewController()-> BankPickerViewController { @@ -257,7 +287,6 @@ extension SendMoneyPaymentModeViewController: UICollectionViewDataSource { return configureCashDeliveryCell(collectionView: collectionView, indexPath: indexPath) case .homeDelivery: return configureHomeDeliveryCell(collectionView: collectionView, indexPath: indexPath) - case .mobileWallet: return configureWalletDeliveryCell(collectionView: collectionView, indexPath: indexPath) } diff --git a/GMERemittance/Library/BankPicker/BankPicker.storyboard b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPicker.storyboard similarity index 100% rename from GMERemittance/Library/BankPicker/BankPicker.storyboard rename to GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPicker.storyboard diff --git a/GMERemittance/Library/BankPicker/BankPickerCell.swift b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerCell.swift similarity index 100% rename from GMERemittance/Library/BankPicker/BankPickerCell.swift rename to GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerCell.swift diff --git a/GMERemittance/Library/BankPicker/BankPickerViewController.swift b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerViewController.swift similarity index 100% rename from GMERemittance/Library/BankPicker/BankPickerViewController.swift rename to GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerViewController.swift