Browse Source

branch list mapped. and shown. search operating

pull/1/head
gme_2 6 years ago
parent
commit
30033c3beb
  1. 4
      GMERemittance.xcodeproj/project.pbxproj
  2. 18
      GMERemittance/Model/SendMoneyPaymentModeModel.swift
  3. 36
      GMERemittance/Module/SendMoneyPaymentMode/Application Logic/Service/SendMoneyPaymentModeServiceType.swift
  4. 0
      GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPicker.storyboard
  5. 0
      GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerCell.swift
  6. 54
      GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerViewController.swift
  7. 1
      GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard
  8. 39
      GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift
  9. 0
      GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPicker.storyboard
  10. 0
      GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerCell.swift
  11. 0
      GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerViewController.swift

4
GMERemittance.xcodeproj/project.pbxproj

@ -1569,6 +1569,7 @@
D922D93D2135124200D43053 /* ViewModels */,
D922D93E2135124200D43053 /* SendMoneyPaymentMode.storyboard */,
D922D93F2135124200D43053 /* SendMoneyPaymentModeViewInterface.swift */,
D90A9D562136942300A96E45 /* BankBranchPicker */,
);
path = View;
sourceTree = "<group>";
@ -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 */,

18
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"]
}
}

36
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) -> ())
}

0
GMERemittance/Library/BankBranchPicker/BankBranchPicker.storyboard → GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPicker.storyboard

0
GMERemittance/Library/BankBranchPicker/BankBranchPickerCell.swift → GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/BankBranchPicker/BankBranchPickerCell.swift

54
GMERemittance/Library/BankBranchPicker/BankBranchPickerViewController.swift → 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)
}
}
}

1
GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard

@ -280,6 +280,7 @@
<outlet property="branchTextField" destination="Und-Nt-uNd" id="db7-3W-DEX"/>
<outlet property="collectionView" destination="oTy-T1-Wgq" id="Xl3-XV-eJi"/>
<outlet property="countinueButton" destination="Cx6-ys-QIl" id="Z4E-gQ-xQ5"/>
<outlet property="titleLabel" destination="3VN-xM-pjD" id="rpR-f3-a50"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="8je-5K-XuW" userLabel="First Responder" sceneMemberID="firstResponder"/>

39
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)
}

0
GMERemittance/Library/BankPicker/BankPicker.storyboard → GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPicker.storyboard

0
GMERemittance/Library/BankPicker/BankPickerCell.swift → GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerCell.swift

0
GMERemittance/Library/BankPicker/BankPickerViewController.swift → GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/ViewModels/BankPicker/BankPickerViewController.swift

Loading…
Cancel
Save