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.
1431 lines
56 KiB
1431 lines
56 KiB
//
|
|
// PaymentMethodViewController.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Fm-user on 12/25/17.
|
|
// Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class PaymentMethodViewController: UIViewController {
|
|
|
|
@IBOutlet weak var viewMain: UIView!
|
|
@IBOutlet weak var viewMainCash: UIView!
|
|
@IBOutlet weak var viewCash: UIView!
|
|
@IBOutlet weak var viewCashDetail: UIView!
|
|
@IBOutlet weak var viewCashBankBranch: UIView!
|
|
@IBOutlet weak var viewMainHomeDelivery: UIView!
|
|
@IBOutlet weak var viewHomeDeliveryDetail: UIView!
|
|
@IBOutlet weak var viewHomeDelivery: UIView!
|
|
@IBOutlet weak var viewMainBank: UIView!
|
|
@IBOutlet weak var viewBankDetail: UIView!
|
|
@IBOutlet weak var viewBank: UIView!
|
|
@IBOutlet weak var viewBankBranch: UIView!
|
|
@IBOutlet weak var buttonSave: UIButton!
|
|
@IBOutlet weak var constraintCashPaymentView: NSLayoutConstraint!
|
|
@IBOutlet weak var constrainBankPaymentView: NSLayoutConstraint!
|
|
@IBOutlet weak var constraintMainHomeDeliveryView: NSLayoutConstraint!
|
|
@IBOutlet weak var textFieldCashPartner: UITextField!
|
|
@IBOutlet weak var textFieldCashBankBranch: UITextField!
|
|
@IBOutlet weak var textFieldState: UITextField!
|
|
@IBOutlet weak var textFieldDistrict: UITextField!
|
|
@IBOutlet weak var textFieldCity: UITextField!
|
|
@IBOutlet weak var textFieldAddress: UITextField!
|
|
@IBOutlet weak var textFieldBankName: UITextField!
|
|
@IBOutlet weak var textFieldBankBranch: UITextField!
|
|
@IBOutlet weak var textFieldAccountNumber: UITextField!
|
|
@IBOutlet weak var labelQuestion: UILabel!
|
|
@IBOutlet weak var scrollView: UIScrollView!
|
|
@IBOutlet weak var labelCashPayment: UILabel!
|
|
@IBOutlet weak var labelHomeDelivery: UILabel!
|
|
@IBOutlet weak var labelBankDeposit: UILabel!
|
|
@IBOutlet weak var labelServiceFeeCash: UILabel!
|
|
@IBOutlet weak var labelServiceFeeBank: UILabel!
|
|
@IBOutlet weak var labelServiceFeeHomeDelivery: UILabel!
|
|
@IBOutlet weak var labelServiceRangeCash: UILabel!
|
|
@IBOutlet weak var labelServiceRangeBank: UILabel!
|
|
@IBOutlet weak var labelServiceRangeHome: UILabel!
|
|
@IBOutlet weak var buttonCashInfoRange: UIButton!
|
|
@IBOutlet weak var buttonHomeInfoRange: UIButton!
|
|
@IBOutlet weak var buttonBankInfoRange: UIButton!
|
|
@IBOutlet weak var tableViewAutoComplete: UITableView!
|
|
@IBOutlet weak var tableViewConstraint: NSLayoutConstraint!
|
|
|
|
//ADDED for solving multiple dialog issue
|
|
var networkDialogShown: Bool = false
|
|
|
|
/// used for auto completion
|
|
var bankBranchAutoCompeletionArray: [String] = [String]()
|
|
var bankBranchAutoCompeletionList:[String] = [String]()
|
|
var cellSelected: Int = 0
|
|
|
|
var recipient: Recipient?
|
|
static var paymentMethodConnectionCheck = 0
|
|
|
|
private var paymentviewmodel = PaymentMethodViewModel()
|
|
private var payoutMethodArray:[PayoutMode] = [PayoutMode]()
|
|
private var payoutBankDetailArray:[AgentModel] = [AgentModel]()
|
|
private var payoutCashArray:[AgentModel] = [AgentModel]()
|
|
private var payoutBankBranchArray:[BankBranch] = [BankBranch]()
|
|
|
|
private var activeTextField: UITextField?
|
|
private var pickerView = UIPickerView()
|
|
private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
|
|
|
|
private var pickerData: [String] = [String]()
|
|
private var pickerSelecteRow: Int = 0
|
|
|
|
private var bankArray:[String] = [String]()
|
|
private var bankCashArray:[String] = [String]()
|
|
private var bankBranchNameList:[String] = [String]()
|
|
|
|
private var bankBranchArray: [String] = [String]()
|
|
private var bankBranchList:[String] = [String]()
|
|
|
|
private var cashRangeArray: [String] = [String]()
|
|
private var cashFeeArray: [String] = [String]()
|
|
private var homeRangeArray:[String] = [String]()
|
|
private var homeFeeArray:[String] = [String]()
|
|
private var bankRangeArray:[String] = [String]()
|
|
private var bankFeeArray:[String] = [String]()
|
|
|
|
private var stateNameListArray: [String] = [String]()
|
|
private var stateValueListArray: [String] = [String]()
|
|
private var districtNameListArray: [String] = [String]()
|
|
private var districtValueListArray: [String] = [String]()
|
|
|
|
private var selectedIndexFor: [String: Int] = [String: Int]()
|
|
|
|
private var bankIdReferenceValue: Int = 0
|
|
private var branchIdReferenceValue: Int = 0
|
|
private var branchName = ""
|
|
private var branchPayoutId = ""
|
|
private var bottomMargin: CGFloat = 0
|
|
private var keyboardHeight: CGFloat = 0
|
|
|
|
/// To show and hide the section
|
|
private var cashPayment = false
|
|
private var bankPayment = false
|
|
private var homeDelivery = false
|
|
|
|
private var paymentMode: String?
|
|
private var paymentMethodId: String?
|
|
|
|
private var serviceChargeCashPayment: String = "nil"
|
|
private var serviceChargeHomePayment: String = "nil"
|
|
private var serviceChargeBankPayment: String = "nil"
|
|
|
|
private let serviceFeeColor = UIColor(hex:0xec1c24)
|
|
private let serviceFee = NSMutableAttributedString(string: "Service Fee: ")
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
super.viewDidAppear(true)
|
|
|
|
setUpAnotherLoginListener(genericviewmodel: paymentviewmodel)
|
|
|
|
let desiredOffset = CGPoint(x: 0, y: -self.scrollView.contentInset.top)
|
|
self.scrollView.setContentOffset(desiredOffset, animated: false)
|
|
textFieldBankBranch.text = ""
|
|
textFieldAccountNumber.text = ""
|
|
tableViewAutoComplete.isHidden = true
|
|
payoutMethodBindCall()
|
|
|
|
}
|
|
|
|
@IBAction func buttomCashRangeInfo(_ sender: Any) {
|
|
paymentMethodId = paymentMethodIdType.cashMethod.rawValue
|
|
popUpServiceFeeRange()
|
|
}
|
|
@IBAction func buttomHomeRangeInfo(_ sender: Any) {
|
|
paymentMethodId = paymentMethodIdType.homeMethod.rawValue
|
|
popUpServiceFeeRange()
|
|
}
|
|
@IBAction func buttomBankRangeInfo(_ sender: Any) {
|
|
paymentMethodId = paymentMethodIdType.bankMethod.rawValue
|
|
popUpServiceFeeRange()
|
|
}
|
|
@IBAction func showExchangeRateCashPayment(_ sender: Any) {
|
|
if textFieldCashPartner.text == "" || (textFieldCashBankBranch.text?.isBlank)! {
|
|
if viewCashBankBranch.isHidden == true && (textFieldCashBankBranch.text?.isBlank)! {
|
|
performSegue(withIdentifier: "exchangeRate", sender: nil)
|
|
} else {
|
|
self.popUpMessageError(value: 11, message: "Please fill all the fields")
|
|
}
|
|
} else {
|
|
performSegue(withIdentifier: "exchangeRate", sender: nil)
|
|
}
|
|
activeTextField?.resignFirstResponder()
|
|
}
|
|
|
|
@IBAction func showExchangeRateHomeDelivery(_ sender: Any) {
|
|
if (textFieldCity.text?.isBlank)! || textFieldState.text == "" || textFieldDistrict.text == "" || (textFieldAddress.text?.isBlank)! {
|
|
self.popUpMessageError(value: 11, message: "Please fill all the fields")
|
|
} else {
|
|
performSegue(withIdentifier: "exchangeRate", sender: nil)
|
|
}
|
|
activeTextField?.resignFirstResponder()
|
|
}
|
|
|
|
@IBAction func showExchangeRate(_ sender: Any) {
|
|
|
|
if textFieldBankName.text == "" || (textFieldAccountNumber.text?.isBlank)! || textFieldBankBranch.text == "" {
|
|
if viewBankBranch.isHidden == true && textFieldBankBranch.text == "" && !(textFieldAccountNumber.text?.isBlank)! {
|
|
performSegue(withIdentifier: "exchangeRate", sender: nil)
|
|
} else {
|
|
self.popUpMessageError(value: 11, message: "Please fill all the fields.")
|
|
}
|
|
|
|
} else {
|
|
if bankBranchAutoCompeletionList.contains(textFieldBankBranch.text!) {
|
|
performSegue(withIdentifier: "exchangeRate", sender: nil)
|
|
} else {
|
|
self.textFieldBankBranch.text = ""
|
|
if bankBranchAutoCompeletionArray.isEmpty {
|
|
bankBranchAutoCompeletionArray = bankBranchAutoCompeletionList
|
|
}
|
|
self.popUpMessageInfo(value: 16, title: "Invalid Branch Selected", message: "Please select a branch from the list.")
|
|
}
|
|
}
|
|
activeTextField?.resignFirstResponder()
|
|
}
|
|
|
|
|
|
@IBAction func agentLocationTap(_ sender: UITapGestureRecognizer) {
|
|
let storyboard = UIStoryboard.init(name: "Agent", bundle: Bundle.main)
|
|
let vController = storyboard.instantiateViewController(withIdentifier: "AgentBankViewController") as! AgentBankViewController
|
|
vController.sendMoneyAgentLocationStatus = true
|
|
if let country = recipient?.country{
|
|
vController.selectedCountry = country
|
|
}
|
|
self.navigationController!.pushViewController(vController, animated: true)
|
|
}
|
|
|
|
func setUpHeaderMessage() {
|
|
|
|
let recipientColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0)
|
|
|
|
let questionPart1: String = String("How would you like ")
|
|
var questionPart2: String = String("to pick your money ?")
|
|
if let country = recipient?.country{
|
|
questionPart2 = String(" to pick your money in " + (country) + "?")
|
|
}
|
|
|
|
let mutableQuestion1 = NSMutableAttributedString(string: questionPart1)
|
|
let mutableQuestion2 = NSMutableAttributedString(string: questionPart2)
|
|
|
|
var mutableRecipient = NSMutableAttributedString(string: "")
|
|
|
|
if let fullName = recipient?.getFullName(){
|
|
mutableRecipient = NSMutableAttributedString(string: (fullName))
|
|
}
|
|
|
|
mutableRecipient.addAttribute(NSAttributedStringKey.foregroundColor, value: recipientColor, range: NSRange(location:0, length: mutableRecipient.length))
|
|
|
|
let mutableQuestion = NSMutableAttributedString()
|
|
mutableQuestion.append(mutableQuestion1)
|
|
mutableQuestion.append(mutableRecipient)
|
|
mutableQuestion.append(mutableQuestion2)
|
|
|
|
labelQuestion.attributedText = mutableQuestion
|
|
}
|
|
|
|
@objc func keyboardWillShow(notification: NSNotification) {
|
|
|
|
var userInfo = notification.userInfo!
|
|
var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
|
|
keyboardFrame = self.view.convert(keyboardFrame, from: nil)
|
|
|
|
var contentInset:UIEdgeInsets = self.scrollView.contentInset
|
|
keyboardHeight = keyboardFrame.size.height
|
|
|
|
contentInset.bottom = keyboardHeight + 100.00
|
|
scrollView.contentInset = contentInset
|
|
|
|
}
|
|
|
|
@objc func keyboardWillHide(notification: NSNotification) {
|
|
var contentInset = UIEdgeInsets.zero
|
|
contentInset.bottom = -75.00
|
|
self.scrollView.contentInset = contentInset
|
|
}
|
|
|
|
@objc func clearKeyboard() {
|
|
activeTextField?.resignFirstResponder()
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
|
|
super.viewDidLoad()
|
|
|
|
setUpNavBar(id: 201, title: "Send Money")
|
|
tableViewAutoComplete.delegate = self
|
|
tableViewAutoComplete.dataSource = self
|
|
scrollView.delegate = self
|
|
|
|
bottomMargin = scrollView.contentInset.bottom
|
|
selectedIndexFor["district"] = 0
|
|
selectedIndexFor["state"] = 0
|
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
|
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
|
|
|
|
startLoading()
|
|
viewMain.isHidden = true
|
|
|
|
paymentviewmodel.paymentMethodConnectionTimeOut.value = nil
|
|
/**
|
|
connection timeout
|
|
*/
|
|
paymentviewmodel.paymentMethodConnectionTimeOut.bind { [weak self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self?.stopLoading()
|
|
if PaymentMethodViewController.paymentMethodConnectionCheck == 0{
|
|
PaymentMethodViewController.paymentMethodConnectionCheck = PaymentMethodViewController.paymentMethodConnectionCheck+1
|
|
self?.popUpMessage(value: 20)
|
|
self?.viewMain.isHidden = true
|
|
}
|
|
// self?.viewMain.isHidden = true
|
|
}
|
|
|
|
/**
|
|
Check internet connection
|
|
*/
|
|
paymentviewmodel.internetConnection.value = nil
|
|
paymentviewmodel.internetConnection.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
if !self.networkDialogShown {
|
|
self.networkDialogShown = true
|
|
self.popUpMessage(value: 15)
|
|
self.viewMain.isHidden = true
|
|
}
|
|
|
|
}
|
|
|
|
guard recipient != nil else {
|
|
self.popUpMessageError(value: 10, message: "Error getting data")
|
|
stopLoading()
|
|
viewMain.isHidden = false
|
|
return
|
|
}
|
|
buttonSave.isHidden = true
|
|
setUpHeaderMessage()
|
|
// payoutMethodBindCall()
|
|
if let countryId = self.recipient?.countryId{
|
|
self.paymentviewmodel.fetchCountryPayoutMode(countryId: countryId)
|
|
}
|
|
payoutBankBindCall()
|
|
self.payoutBankBranchBindCall()
|
|
if let countryId = self.recipient?.countryId{
|
|
self.paymentviewmodel.fetchPayoutBankDetail(countryId: countryId, payoutMethodId: "1")
|
|
}
|
|
cddListBindCall()
|
|
fetchStates()
|
|
if let stateId = self.recipient?.stateId {
|
|
fetchDistrict(stateId: stateId)
|
|
}
|
|
|
|
textFieldBankName.delegate = self
|
|
textFieldBankBranch.delegate = self
|
|
textFieldAccountNumber.delegate = self
|
|
|
|
textFieldCity.delegate = self
|
|
textFieldState.delegate = self
|
|
textFieldDistrict.delegate = self
|
|
textFieldAddress.delegate = self
|
|
|
|
textFieldCashBankBranch.delegate = self
|
|
textFieldCashPartner.delegate = self
|
|
|
|
pickerView.delegate = self
|
|
pickerView.dataSource = self
|
|
|
|
textFieldBankBranch.layer.borderColor = UIColor(red:0.91, green:0.93, blue:0.95, alpha:1.0).cgColor
|
|
textFieldBankBranch.layer.borderWidth = 1.0
|
|
textFieldBankBranch.layer.cornerRadius = 5
|
|
|
|
textFieldBankName.layer.borderColor = UIColor(red:0.91, green:0.93, blue:0.95, alpha:1.0).cgColor
|
|
textFieldBankName.layer.borderWidth = 1.0
|
|
textFieldBankName.layer.cornerRadius = 5
|
|
|
|
textFieldAccountNumber.layer.borderColor = UIColor(red:0.91, green:0.93, blue:0.95, alpha:1.0).cgColor
|
|
textFieldAccountNumber.layer.borderWidth = 1.0
|
|
textFieldAccountNumber.layer.cornerRadius = 5
|
|
|
|
self.textFieldBankBranch.addTarget(self, action: #selector(self.searchRecords(_:)), for: .editingChanged)
|
|
}
|
|
|
|
@objc func searchRecords(_ textField: UITextField){
|
|
|
|
bankBranchAutoCompeletionArray.removeAll()
|
|
if textField.text?.count != 0 {
|
|
for bankBranch in bankBranchAutoCompeletionList {
|
|
if let branchToSearch = textField.text {
|
|
let range = bankBranch.lowercased().range(of:branchToSearch , options: .caseInsensitive, range: nil, locale: nil)
|
|
if range != nil {
|
|
self.bankBranchAutoCompeletionArray.append(bankBranch)
|
|
}
|
|
}
|
|
}
|
|
} else{
|
|
for bankBranch in bankBranchAutoCompeletionList {
|
|
bankBranchAutoCompeletionArray.append(bankBranch)
|
|
}
|
|
}
|
|
tableViewAutoComplete.reloadData()
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
payoutMethodBindCall()
|
|
}
|
|
/**
|
|
Disable user interaction while fetching data from api
|
|
*/
|
|
func startLoading(){
|
|
disableUserInteractions()
|
|
showActivityIndicator(activityIndicator: activityIndicator)
|
|
}
|
|
|
|
/**
|
|
Enable user interaction while fetching data from api
|
|
*/
|
|
func stopLoading(){
|
|
self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
|
|
self.enableUserInteractions()
|
|
}
|
|
|
|
func payoutMethodBindCall(){
|
|
paymentviewmodel.payoutMethodType.bind{[weak self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
// self?.stopLoading()
|
|
guard $0! else {
|
|
self?.popUpMessageError(value: 10, message: (self?.paymentviewmodel.getErrorMessage())!)
|
|
self?.stopLoading()
|
|
self?.viewMain.isHidden = true
|
|
return
|
|
}
|
|
self?.payoutMethodArray = (self?.paymentviewmodel.getPayoutMethodArray())!
|
|
self?.paymentSectionHide()
|
|
self?.setUpPayoutMethod()
|
|
self?.stopLoading()
|
|
self?.viewMain.isHidden = false
|
|
self?.toGetAmuountRange()
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request for payout Bank
|
|
*/
|
|
func payoutBankBindCall(){
|
|
paymentviewmodel.payoutBankAvailable.bind{[weak self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
guard $0! else {
|
|
// self?.popUpMessageError(value: 10, message: (self?.paymentviewmodel.getErrorMessage())!)
|
|
self?.stopLoading()
|
|
self?.viewMain.isHidden = true
|
|
return
|
|
}
|
|
|
|
self?.payoutBankDetailArray = (self?.paymentviewmodel.getPayoutBankDetailArray())!
|
|
self?.bankArray = (self?.payoutBankDetailArray.map{$0.name!})!
|
|
if self?.paymentviewmodel.getPayoutCashArray() != nil {
|
|
self?.payoutCashArray = (self?.paymentviewmodel.getPayoutCashArray())!
|
|
self?.bankCashArray = (self?.payoutCashArray.map{$0.name!})!
|
|
}
|
|
self?.stopLoading()
|
|
self?.paymentviewmodel.payoutBankAvailable.value = nil
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request to fetch state data
|
|
*/
|
|
func fetchStates() {
|
|
if let countryId = recipient?.countryId{
|
|
paymentviewmodel.fetchCDDListFor(cddName: cddCode.Province.rawValue, param: ["countryId": countryId])
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request to fetch district data
|
|
- parameter stateId: Required state id to fetch district value
|
|
*/
|
|
func fetchDistrict(stateId: String) {
|
|
if let countryId = recipient?.countryId{
|
|
paymentviewmodel.fetchCDDListFor(cddName: cddCode.District.rawValue, param: [ "countryId": countryId, "provinceId": stateId])
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request to cdd List i.e. state and district
|
|
*/
|
|
func cddListBindCall(){
|
|
paymentviewmodel.cddListAvailable.bind { [weak self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
|
|
guard $0! != 0 else {
|
|
// self?.popUpMessageError(value: 10, message: (self?.paymentviewmodel.getErrorMessage())!)
|
|
return
|
|
}
|
|
// self?.stopLoading()
|
|
switch $0!{
|
|
case 2:
|
|
if let stateList = self?.paymentviewmodel.getStateList(){
|
|
self?.stateNameListArray = stateList
|
|
}
|
|
if let stateValueList = self?.paymentviewmodel.getStateValueList(){
|
|
self?.stateValueListArray = stateValueList
|
|
}
|
|
case 3:
|
|
if let districtList = self?.paymentviewmodel.getDistrictList(){
|
|
self?.districtNameListArray = districtList.map{$0.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)}
|
|
}
|
|
if let districtListValue = self?.paymentviewmodel.getDistrictValueList(){
|
|
self?.districtValueListArray = districtListValue
|
|
}
|
|
default:
|
|
return
|
|
}
|
|
self?.stopLoading()
|
|
self?.paymentviewmodel.cddListAvailable.value = nil
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request to fetch payout Bank Branch
|
|
*/
|
|
func payoutBankBranchBindCall(){
|
|
paymentviewmodel.payoutBankBranchAvailable.bind{[unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
guard $0! else {
|
|
self.popUpMessageError(value: 10, message: (self.paymentviewmodel.getErrorMessage()))
|
|
self.stopLoading()
|
|
self.viewMain.isHidden = false
|
|
return
|
|
}
|
|
|
|
// to remove branch when bank name selected
|
|
self.bankBranchAutoCompeletionList.removeAll()
|
|
self.bankBranchAutoCompeletionArray.removeAll()
|
|
|
|
self.payoutBankBranchArray = (self.paymentviewmodel.getPayoutBankBranchArray())
|
|
if self.payoutBankBranchArray.count > 0{
|
|
self.bankBranchNameList = (self.payoutBankBranchArray.map{$0.name!})
|
|
}
|
|
|
|
if self.payoutBankBranchArray.count > 0 {
|
|
self.bankBranchArray = (self.payoutBankBranchArray.map{$0.name!})
|
|
}
|
|
|
|
self.bankBranchAutoCompeletionArray = (self.payoutBankBranchArray.map{$0.name!})
|
|
if self.bankBranchAutoCompeletionArray.count > 0{
|
|
for bankBranch in self.bankBranchAutoCompeletionArray {
|
|
self.bankBranchAutoCompeletionList.append(bankBranch)
|
|
}
|
|
}
|
|
self.tableViewAutoComplete.reloadData()
|
|
}
|
|
}
|
|
|
|
/**
|
|
Set up values as per payout method
|
|
*/
|
|
|
|
func setUpPayoutMethod(){
|
|
for payoutMethod in payoutMethodArray{
|
|
|
|
switch payoutMethod.payoutMethodId {
|
|
case paymentMethodIdType.cashMethod.rawValue?:
|
|
cashPaymentMethod()
|
|
if payoutMethod.serviceCharge.count > 0 {
|
|
if let serviceCharge = payoutMethod.serviceCharge[0].transferFee {
|
|
serviceChargeCashPayment = serviceCharge
|
|
if payoutMethod.serviceCharge.count > 0{
|
|
let firstRange1 = payoutMethod.serviceCharge[0].range!.split(separator: "-")
|
|
let cashFirstRangeServiceFee = firstRange1[1]
|
|
labelServiceRangeCash.text = "(Upto \(cashFirstRangeServiceFee )"
|
|
}
|
|
labelServiceRangeCash.isHidden = false
|
|
buttonCashInfoRange.isHidden = false
|
|
}
|
|
} else {
|
|
serviceChargeCashPayment = "N/A"
|
|
labelServiceRangeCash.isHidden = true
|
|
buttonCashInfoRange.isHidden = true
|
|
}
|
|
setupCashFee()
|
|
|
|
case paymentMethodIdType.bankMethod.rawValue?:
|
|
bankPaymentMethod()
|
|
if payoutMethod.serviceCharge.count > 0 {
|
|
if let serviceCharge = payoutMethod.serviceCharge[0].transferFee {
|
|
serviceChargeBankPayment = serviceCharge
|
|
if payoutMethod.serviceCharge.count > 0{
|
|
let firstRange1 = payoutMethod.serviceCharge[0].range!.split(separator: "-")
|
|
let lastpart = firstRange1[1]
|
|
labelServiceRangeBank.text = "(Upto \(lastpart)"
|
|
}
|
|
labelServiceRangeBank.isHidden = false
|
|
buttonBankInfoRange.isHidden = false
|
|
}
|
|
} else {
|
|
serviceChargeCashPayment = "N/A"
|
|
labelServiceRangeBank.isHidden = true
|
|
buttonBankInfoRange.isHidden = true
|
|
|
|
}
|
|
setupbankFee()
|
|
|
|
case paymentMethodIdType.homeMethod.rawValue?:
|
|
textFieldState.text = recipient?.state
|
|
textFieldCity.text = recipient?.city
|
|
textFieldDistrict.text = recipient?.district
|
|
textFieldAddress.text = recipient?.address
|
|
homePaymentMethod()
|
|
|
|
if payoutMethod.serviceCharge.count > 0 {
|
|
if let serviceCharge = payoutMethod.serviceCharge[0].transferFee {
|
|
serviceChargeHomePayment = serviceCharge
|
|
if payoutMethod.serviceCharge.count > 0{
|
|
let firstRange1 = payoutMethod.serviceCharge[0].range!.split(separator: "-")
|
|
let lastpart = firstRange1[1]
|
|
labelServiceRangeHome.text = "(Upto \(lastpart)"
|
|
}
|
|
labelServiceRangeHome.isHidden = false
|
|
buttonHomeInfoRange.isHidden = false
|
|
}
|
|
} else {
|
|
serviceChargeHomePayment = "N/A"
|
|
labelServiceRangeHome.isHidden = true
|
|
buttonHomeInfoRange.isHidden = true
|
|
}
|
|
setupHomeFee()
|
|
default:
|
|
|
|
return
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
Get amount range as per payout method id
|
|
*/
|
|
func toGetAmuountRange() {
|
|
for payoutMethod in payoutMethodArray{
|
|
|
|
switch payoutMethod.payoutMethodId {
|
|
case paymentMethodIdType.cashMethod.rawValue?:
|
|
let seviceFeeRanges = payoutMethod.serviceCharge
|
|
if seviceFeeRanges.count > 0{
|
|
for serviceCharge in seviceFeeRanges[0..<seviceFeeRanges.count]{
|
|
if let serviceChargeRange = serviceCharge.range{
|
|
cashRangeArray.append(serviceChargeRange)
|
|
}
|
|
if let transferFee = serviceCharge.transferFee{
|
|
cashFeeArray.append(transferFee)
|
|
}
|
|
}
|
|
}
|
|
case paymentMethodIdType.bankMethod.rawValue?:
|
|
let seviceFeeRanges = payoutMethod.serviceCharge
|
|
if seviceFeeRanges.count > 0{
|
|
for serviceCharge in seviceFeeRanges[0..<seviceFeeRanges.count]{
|
|
if let serviceChargeRange = serviceCharge.range{
|
|
bankRangeArray.append(serviceChargeRange)
|
|
}
|
|
if let transferFee = serviceCharge.transferFee{
|
|
bankFeeArray.append(transferFee)
|
|
}
|
|
}
|
|
}
|
|
case paymentMethodIdType.homeMethod.rawValue?:
|
|
let seviceFeeRanges = payoutMethod.serviceCharge
|
|
if seviceFeeRanges.count > 0{
|
|
for serviceCharge in seviceFeeRanges[0..<seviceFeeRanges.count]{
|
|
if let serviceChargeRange = serviceCharge.range{
|
|
homeRangeArray.append(serviceChargeRange)
|
|
}
|
|
|
|
if let transferFee = serviceCharge.transferFee{
|
|
homeFeeArray.append(transferFee)
|
|
}
|
|
}
|
|
}
|
|
default:
|
|
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
Show fee range in pop up dialog
|
|
*/
|
|
func popUpServiceFeeRange(){
|
|
guard let navController = self.navigationController else { return }
|
|
|
|
let popUpViewController = UIStoryboard(name: "RecipientListViewController", bundle: nil).instantiateViewController(withIdentifier: "rangePopUp") as! PopUpSavingViewController
|
|
|
|
switch paymentMethodId {
|
|
case paymentMethodIdType.cashMethod.rawValue?:
|
|
popUpViewController.rangeCount = cashFeeArray.count
|
|
|
|
if cashFeeArray.count > 0{
|
|
for i in 0..<cashFeeArray.count {
|
|
switch i {
|
|
case 0:
|
|
let firstRange1 = cashRangeArray[i].split(separator: "-")
|
|
let lastrange = firstRange1[1]
|
|
popUpViewController.firstRange = "Upto - \(lastrange)"
|
|
popUpViewController.firstRangefee = cashFeeArray[i]
|
|
case 1:
|
|
popUpViewController.secondRange = cashRangeArray[i]
|
|
popUpViewController.secondRangefee = cashFeeArray[i]
|
|
case 2:
|
|
popUpViewController.thirdRange = cashRangeArray[i]
|
|
popUpViewController.thirdRangefee = cashFeeArray[i]
|
|
default:
|
|
return
|
|
}
|
|
}
|
|
}
|
|
case paymentMethodIdType.homeMethod.rawValue?:
|
|
popUpViewController.rangeCount = homeFeeArray.count
|
|
if homeFeeArray.count > 0{
|
|
for i in 0..<homeFeeArray.count{
|
|
switch i {
|
|
case 0:
|
|
let firstRange1 = homeRangeArray[i].split(separator: "-")
|
|
let lastrange = firstRange1[1]
|
|
popUpViewController.firstRange = "Upto - \(lastrange)"
|
|
popUpViewController.firstRangefee = homeFeeArray[i]
|
|
case 1:
|
|
popUpViewController.secondRange = homeRangeArray[i]
|
|
popUpViewController.secondRangefee = homeFeeArray[i]
|
|
case 2:
|
|
popUpViewController.thirdRange = homeRangeArray[i]
|
|
popUpViewController.thirdRangefee = homeFeeArray[i]
|
|
default:
|
|
return
|
|
}
|
|
}
|
|
}
|
|
case paymentMethodIdType.bankMethod.rawValue?:
|
|
popUpViewController.rangeCount = bankFeeArray.count
|
|
if bankFeeArray.count > 0 {
|
|
for i in 0..<bankFeeArray.count {
|
|
switch i {
|
|
case 0:
|
|
let firstRange1 = bankRangeArray[i].split(separator: "-")
|
|
let lastrange = firstRange1[1]
|
|
popUpViewController.firstRange = "Upto - \(lastrange)"
|
|
popUpViewController.firstRangefee = bankFeeArray[i]
|
|
case 1:
|
|
popUpViewController.secondRange = bankRangeArray[i]
|
|
popUpViewController.secondRangefee = bankFeeArray[i]
|
|
case 2:
|
|
popUpViewController.thirdRange = bankRangeArray[i]
|
|
popUpViewController.thirdRangefee = bankFeeArray[i]
|
|
default:
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
default:
|
|
return
|
|
}
|
|
|
|
|
|
navController.addChildViewController(popUpViewController)
|
|
popUpViewController.view.frame = navController.view.bounds
|
|
navController.view.addSubview(popUpViewController.view)
|
|
popUpViewController.didMove(toParentViewController: navController)
|
|
}
|
|
|
|
/**
|
|
Cash payment method
|
|
*/
|
|
func cashPaymentMethod(){
|
|
self.viewMainCash.isHidden = false
|
|
if let recipientCountry = recipient?.country{
|
|
labelCashPayment.text = "Cash payment in " + recipientCountry
|
|
}
|
|
self.viewMainCash.layer.cornerRadius = 10
|
|
self.constraintCashPaymentView.constant = 81
|
|
viewCashDetail.isHidden = true
|
|
}
|
|
|
|
/**
|
|
Set up cash fee
|
|
*/
|
|
func setupCashFee(){
|
|
if self.serviceChargeCashPayment != "nil"{
|
|
let serviceFeeCashAmount = NSMutableAttributedString(string: serviceChargeCashPayment)
|
|
serviceFeeCashAmount.addAttribute(NSAttributedStringKey.foregroundColor, value: serviceFeeColor, range: NSRange(location:0, length: serviceFeeCashAmount.length))
|
|
let displayStringCash = NSMutableAttributedString()
|
|
displayStringCash.append(serviceFee)
|
|
displayStringCash.append(serviceFeeCashAmount)
|
|
labelServiceFeeCash.attributedText = displayStringCash
|
|
}
|
|
}
|
|
|
|
/**
|
|
Bank payment method
|
|
*/
|
|
func bankPaymentMethod(){
|
|
self.viewMainBank.isHidden = false
|
|
if let country = recipient?.country{
|
|
labelBankDeposit.text = "Bank deposit in " + country
|
|
}
|
|
viewMainBank.layer.cornerRadius = 10
|
|
constrainBankPaymentView.constant = 81
|
|
viewBankDetail.isHidden = true
|
|
|
|
}
|
|
|
|
/**
|
|
Set up bank fee
|
|
*/
|
|
func setupbankFee(){
|
|
if self.serviceChargeBankPayment != "nil"{
|
|
let serviceFeeBankAmount = NSMutableAttributedString(string: serviceChargeBankPayment)
|
|
serviceFeeBankAmount.addAttribute(NSAttributedStringKey.foregroundColor, value: serviceFeeColor, range: NSRange(location:0, length: serviceFeeBankAmount.length))
|
|
let displayStringBank = NSMutableAttributedString()
|
|
displayStringBank.append(serviceFee)
|
|
displayStringBank.append(serviceFeeBankAmount)
|
|
labelServiceFeeBank.attributedText = displayStringBank
|
|
}
|
|
}
|
|
|
|
/**
|
|
Home payment method
|
|
*/
|
|
func homePaymentMethod(){
|
|
self.viewMainHomeDelivery.isHidden = false
|
|
if let country = recipient?.country{
|
|
labelHomeDelivery.text = "Home delivery in " + country
|
|
}
|
|
viewMainHomeDelivery.layer.cornerRadius = 10
|
|
constraintMainHomeDeliveryView.constant = 81
|
|
viewHomeDeliveryDetail.isHidden = true
|
|
}
|
|
|
|
func setupHomeFee(){
|
|
if self.serviceChargeHomePayment != "nil"{
|
|
let serviceFeeHomeAmount = NSMutableAttributedString(string: serviceChargeHomePayment)
|
|
serviceFeeHomeAmount.addAttribute(NSAttributedStringKey.foregroundColor, value: serviceFeeColor, range: NSRange(location:0, length: serviceFeeHomeAmount.length))
|
|
let displayStringHome = NSMutableAttributedString()
|
|
displayStringHome.append(serviceFee)
|
|
displayStringHome.append(serviceFeeHomeAmount)
|
|
labelServiceFeeHomeDelivery.attributedText = displayStringHome
|
|
}
|
|
}
|
|
|
|
/**
|
|
Payment section hide
|
|
*/
|
|
func paymentSectionHide(){
|
|
|
|
self.viewMainCash.isHidden = true
|
|
self.viewMainBank.isHidden = true
|
|
self.viewMainHomeDelivery.isHidden = true
|
|
|
|
constraintCashPaymentView.constant = 0
|
|
constrainBankPaymentView.constant = 0
|
|
constraintMainHomeDeliveryView.constant = 0
|
|
}
|
|
|
|
/**
|
|
Tap action
|
|
*/
|
|
@IBAction func cashPaymentTap(_ sender: Any) {
|
|
bankBranchCondition()
|
|
paymentMode = paymentModeType.cashPayment.rawValue
|
|
|
|
let paymentMethodIdArray = payoutMethodArray.filter{$0.payoutMethodId == "1" || $0.payoutMethodId == "2" || $0.payoutMethodId == "12" }
|
|
|
|
if paymentMethodIdArray.count == 3{
|
|
hideHomeDeliverySection()
|
|
hideBankSection()
|
|
} else if paymentMethodIdArray.count == 1{
|
|
constrainBankPaymentView.constant = 0
|
|
}
|
|
cashPayment = !cashPayment
|
|
if cashPayment == false {
|
|
hideCashPaymentSection()
|
|
}else{
|
|
hideBankSection()
|
|
showCashPaymentSection()
|
|
paymentMode = paymentModeType.cashPaymentPartner.rawValue
|
|
}
|
|
|
|
textFieldCashBankBranch.text = ""
|
|
|
|
}
|
|
|
|
/**
|
|
Hide cash payment section
|
|
*/
|
|
func hideCashPaymentSection(){
|
|
var contentInset:UIEdgeInsets = self.scrollView.contentInset
|
|
contentInset.bottom = 75
|
|
scrollView.contentInset = contentInset
|
|
constraintCashPaymentView.constant = 81
|
|
viewCashDetail.isHidden = true
|
|
viewCash.layer.cornerRadius = 10
|
|
cashPayment = false
|
|
}
|
|
|
|
/**
|
|
Show cash payment section
|
|
*/
|
|
func showCashPaymentSection(){
|
|
var contentInset:UIEdgeInsets = self.scrollView.contentInset
|
|
contentInset.bottom = -75
|
|
scrollView.contentInset = contentInset
|
|
constraintCashPaymentView.constant = 320
|
|
viewCashDetail.isHidden = false
|
|
viewCash.layer.cornerRadius = 0
|
|
}
|
|
|
|
/**
|
|
Home deliver tap action
|
|
*/
|
|
@IBAction func homeDeliveryTap(_ sender: Any) {
|
|
bankBranchCondition()
|
|
paymentMode = paymentModeType.homeDelivery.rawValue
|
|
hideBankSection()
|
|
hideCashPaymentSection()
|
|
homeDelivery = !homeDelivery
|
|
if homeDelivery == false {
|
|
hideHomeDeliverySection()
|
|
}else {
|
|
showHomeDeliverySection()
|
|
}
|
|
}
|
|
|
|
/**
|
|
Home delivery section
|
|
*/
|
|
func hideHomeDeliverySection(){
|
|
var contentInset:UIEdgeInsets = self.scrollView.contentInset
|
|
contentInset.bottom = 75
|
|
scrollView.contentInset = contentInset
|
|
constraintMainHomeDeliveryView.constant = 81
|
|
viewHomeDeliveryDetail.isHidden = true
|
|
viewHomeDelivery.layer.cornerRadius = 10
|
|
homeDelivery = false
|
|
}
|
|
|
|
/**
|
|
Show home delivery section
|
|
*/
|
|
func showHomeDeliverySection(){
|
|
var contentInset:UIEdgeInsets = self.scrollView.contentInset
|
|
contentInset.bottom = -75
|
|
scrollView.contentInset = contentInset
|
|
constraintMainHomeDeliveryView.constant = 490
|
|
viewHomeDeliveryDetail.isHidden = false
|
|
viewHomeDelivery.layer.cornerRadius = 0
|
|
}
|
|
|
|
/**
|
|
Bank payment tap
|
|
*/
|
|
@IBAction func bankPaymentTap(_ sender: Any) {
|
|
bankIdReferenceValue = 0
|
|
bankBranchCondition()
|
|
hideCashPaymentSection()
|
|
paymentMode = paymentModeType.bankPayment.rawValue
|
|
let paymentMethodIdArray = payoutMethodArray.filter{$0.payoutMethodId == "1" || $0.payoutMethodId == "2" || $0.payoutMethodId == "12" }
|
|
|
|
|
|
if paymentMethodIdArray.count == 3{
|
|
hideHomeDeliverySection()
|
|
hideCashPaymentSection()
|
|
} else if paymentMethodIdArray.count == 1{
|
|
constraintCashPaymentView.constant = 0
|
|
}
|
|
bankPayment = !bankPayment
|
|
if bankPayment == false {
|
|
hideBankSection()
|
|
} else {
|
|
startLoading()
|
|
showbankSection()
|
|
if let countryId = recipient?.countryId{
|
|
self.paymentviewmodel.fetchPayoutBankDetail(countryId: countryId, payoutMethodId: "2")
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
Hide bank section
|
|
*/
|
|
func hideBankSection() {
|
|
var contentInset:UIEdgeInsets = self.scrollView.contentInset
|
|
contentInset.bottom = 75
|
|
scrollView.contentInset = contentInset
|
|
constrainBankPaymentView.constant = 81
|
|
viewBankDetail.isHidden = true
|
|
buttonSave.isHidden = true
|
|
viewBank.layer.cornerRadius = 10
|
|
bankPayment = false
|
|
}
|
|
|
|
/**
|
|
Show bank section
|
|
*/
|
|
func showbankSection(){
|
|
var contentInset:UIEdgeInsets = self.scrollView.contentInset
|
|
contentInset.bottom = -75
|
|
scrollView.contentInset = contentInset
|
|
constrainBankPaymentView.constant = 420
|
|
viewBankDetail.isHidden = false
|
|
buttonSave.isHidden = false
|
|
viewBank.layer.cornerRadius = 0
|
|
}
|
|
|
|
/**
|
|
Bank branch condition
|
|
*/
|
|
func bankBranchCondition(){
|
|
viewCashBankBranch.isHidden = false
|
|
textFieldCashPartner.text = ""
|
|
viewBankBranch.isHidden = false
|
|
textFieldBankName.text = ""
|
|
textFieldBankBranch.text = ""
|
|
tableViewAutoComplete.isHidden = true
|
|
activeTextField?.resignFirstResponder()
|
|
}
|
|
|
|
/**
|
|
Doing Picker view button
|
|
*/
|
|
func pickUp(_ textField : UITextField){
|
|
// UIPickerView
|
|
self.pickerView = UIPickerView(frame:CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 216))
|
|
self.pickerView.delegate = self
|
|
self.pickerView.dataSource = self
|
|
//self.pickerView.backgroundColor = UIColor.white
|
|
textField.inputView = self.pickerView
|
|
|
|
// ToolBar
|
|
let toolBar = UIToolbar()
|
|
toolBar.barStyle = .default
|
|
toolBar.isTranslucent = true
|
|
toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1)
|
|
toolBar.sizeToFit()
|
|
|
|
// Adding Button ToolBar
|
|
let customButton = UIButton()
|
|
customButton.setTitle("Done", for: .normal)
|
|
customButton.addTarget(self, action: #selector(doneClick), for: .touchUpInside)
|
|
customButton.setTitleColor(UIColor(hex : 0xED1C24), for: .normal)
|
|
customButton.frame = CGRect(x: 0, y: 0, width: 60, height: 30)
|
|
|
|
let doneButton = UIBarButtonItem(customView: customButton)
|
|
let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
|
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelClick))
|
|
cancelButton.tintColor = UIColor.black
|
|
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
|
|
toolBar.isUserInteractionEnabled = true
|
|
textField.inputAccessoryView = toolBar
|
|
}
|
|
|
|
|
|
/**
|
|
Picker view done click
|
|
*/
|
|
@objc func doneClick() {
|
|
//Added Guard block to prevent crash
|
|
guard pickerData.count > 0 else {
|
|
textFieldBankName.resignFirstResponder()
|
|
return
|
|
}
|
|
self.activeTextField?.resignFirstResponder()
|
|
if activeTextField == textFieldBankName {
|
|
bankIdReferenceValue = pickerSelecteRow
|
|
//Clear the branch for the selected bank
|
|
textFieldBankBranch.text = ""
|
|
//Fetch the branch for the selected bank
|
|
if payoutBankDetailArray[pickerSelecteRow].hasBranch! == true {
|
|
viewBankBranch.isHidden = false
|
|
constrainBankPaymentView.constant = 420
|
|
startLoading()
|
|
|
|
if let country = recipient?.countryId, let payoutId = payoutBankDetailArray[pickerSelecteRow].payoutId{
|
|
paymentviewmodel.fetchPayoutBankBranchDetail(countryId: country, payoutId: payoutId)
|
|
}
|
|
} else {
|
|
viewBankBranch.isHidden = true
|
|
constrainBankPaymentView.constant = 363
|
|
viewBankDetail.layer.cornerRadius = 10
|
|
}
|
|
activeTextField!.text = pickerData[pickerSelecteRow]
|
|
} else if activeTextField == textFieldCashPartner {
|
|
bankIdReferenceValue = pickerSelecteRow
|
|
//Resetting the branch for newly selected bank
|
|
branchIdReferenceValue = 0
|
|
textFieldCashBankBranch.text = ""
|
|
if payoutCashArray[pickerSelecteRow].hasBranch! == true {
|
|
startLoading()
|
|
viewCashBankBranch.isHidden = false
|
|
constraintCashPaymentView.constant = 320
|
|
|
|
if let country = recipient?.countryId , let payoutId = payoutCashArray[pickerSelecteRow].payoutId{
|
|
paymentviewmodel.fetchPayoutBankBranchDetail(countryId: country, payoutId: payoutId)
|
|
}
|
|
} else {
|
|
viewCashBankBranch.isHidden = true
|
|
constraintCashPaymentView.constant = 243
|
|
}
|
|
activeTextField!.text = pickerData[pickerSelecteRow]
|
|
} else if activeTextField == textFieldCashBankBranch{
|
|
branchIdReferenceValue = pickerSelecteRow
|
|
activeTextField!.text = pickerData[pickerSelecteRow]
|
|
|
|
} else if activeTextField == textFieldState {
|
|
textFieldDistrict.text = ""
|
|
selectedIndexFor["district"] = 0
|
|
if pickerData.count > 0{
|
|
if let state = selectedIndexFor["state"]{
|
|
textFieldState.text = pickerData[state]
|
|
}
|
|
}
|
|
if stateNameListArray.count > 0 {
|
|
if textFieldState.text != ""{
|
|
fetchDistrict(stateId: stateValueListArray[stateNameListArray.index(of: textFieldState.text!)!])
|
|
}
|
|
}
|
|
startLoading()
|
|
} else if activeTextField == textFieldDistrict {
|
|
if pickerData.count > 0 {
|
|
if let district = selectedIndexFor["district"]{
|
|
textFieldDistrict.text = pickerData[district]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
Cancel click
|
|
*/
|
|
@objc func cancelClick(){
|
|
activeTextField?.resignFirstResponder()
|
|
}
|
|
|
|
func setTransactionDetail(bankPayoutIdIndex: Int, branchPayoutIdIndex: Int) -> [String: String]{
|
|
|
|
var bankTransactionDetail: [String: String]?
|
|
|
|
if paymentMode == paymentModeType.bankPayment.rawValue {
|
|
|
|
bankPaymentBranchEmpty(bankPayoutIdIndex: bankPayoutIdIndex, branchPayoutIdIndex: branchPayoutIdIndex)
|
|
|
|
bankTransactionDetail = ["bankName":payoutBankDetailArray[bankPayoutIdIndex].name,
|
|
"bankBranch": branchName,
|
|
"bankId": payoutBankDetailArray[bankPayoutIdIndex].payoutId,
|
|
"branchId": branchPayoutId,
|
|
"accountNumber": textFieldAccountNumber.text!]
|
|
|
|
} else if paymentMode == paymentModeType.cashPaymentPartner.rawValue {
|
|
bankPaymentBranchEmpty(bankPayoutIdIndex: bankPayoutIdIndex, branchPayoutIdIndex: branchPayoutIdIndex)
|
|
bankTransactionDetail = ["bankName": payoutCashArray[bankPayoutIdIndex].name,
|
|
"bankId": payoutCashArray[bankPayoutIdIndex].payoutId,
|
|
"bankBranch": branchName,
|
|
"branchId": branchPayoutId
|
|
]
|
|
|
|
} else if paymentMode == paymentModeType.homeDelivery.rawValue {
|
|
bankTransactionDetail = ["updatedState": textFieldState.text!,
|
|
"updatedDistrict": textFieldDistrict.text!,
|
|
"updatedCity": textFieldCity.text!,
|
|
"updatedAddress": textFieldAddress.text!
|
|
]
|
|
}
|
|
return bankTransactionDetail!
|
|
}
|
|
|
|
/**
|
|
Bank payment branch empty
|
|
- parameter bankPayoutIdIndex: bank payout id index
|
|
- parameter branchPayoutIndex: bank payout index
|
|
*/
|
|
func bankPaymentBranchEmpty(bankPayoutIdIndex: Int, branchPayoutIdIndex: Int){
|
|
if !payoutBankBranchArray.isEmpty{
|
|
branchName = payoutBankBranchArray[branchPayoutIdIndex].name
|
|
branchPayoutId = payoutBankBranchArray[branchPayoutIdIndex].payoutBranchId
|
|
} else {
|
|
branchName = "-"
|
|
branchPayoutId = ""
|
|
}
|
|
}
|
|
override func didReceiveMemoryWarning() {
|
|
super.didReceiveMemoryWarning()
|
|
}
|
|
|
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
|
if segue.identifier == "exchangeRate" {
|
|
hideBankSection()
|
|
hideCashPaymentSection()
|
|
let exchangeRateViewController
|
|
= segue.destination as! RecipientTranscationViewController
|
|
exchangeRateViewController.recipient = self.recipient
|
|
exchangeRateViewController.paymentMode = self.paymentMode
|
|
if paymentMode != paymentModeType.cashPayment.rawValue {
|
|
exchangeRateViewController.transferDetails = setTransactionDetail(bankPayoutIdIndex: bankIdReferenceValue, branchPayoutIdIndex: branchIdReferenceValue)
|
|
}
|
|
//ADDED FOR HOME-DELIVERY
|
|
if paymentMode == paymentModeType.homeDelivery.rawValue {
|
|
//BETTER TO SET THE VALUES IN VIEW MODEL, FOR NOW ITS BEEN DONE IN VIEW CONTROLLER
|
|
exchangeRateViewController.homeDetails = getHomeDetails()
|
|
}
|
|
}
|
|
}
|
|
|
|
func getHomeDetails() -> [String: String] {
|
|
var homeDetails = [String: String]()
|
|
homeDetails["state"] = textFieldState.text
|
|
if stateNameListArray.count > 0{
|
|
if textFieldState.text != ""{
|
|
if let index = stateNameListArray.index(of: textFieldState.text!){
|
|
homeDetails["stateId"] = stateValueListArray[index]
|
|
} else {
|
|
// print("no state")
|
|
}
|
|
}
|
|
}
|
|
|
|
let districtName = (textFieldDistrict.text!).removeSpacesTrailingPreceding()
|
|
homeDetails["district"] = districtName
|
|
if districtNameListArray.count > 0{
|
|
if textFieldDistrict.text != ""{
|
|
if let index = districtNameListArray.index(of: districtName){
|
|
homeDetails["districtId"] = districtValueListArray[index]
|
|
} else {
|
|
// print("NO district")
|
|
}
|
|
}
|
|
}
|
|
homeDetails["city"] = textFieldCity.text
|
|
homeDetails["address"] = textFieldAddress.text
|
|
return homeDetails
|
|
}
|
|
}
|
|
|
|
extension PaymentMethodViewController: UITextFieldDelegate {
|
|
|
|
func textFieldDidBeginEditing(_ textField: UITextField) {
|
|
|
|
activeTextField = textField
|
|
|
|
if textField == textFieldBankName {
|
|
bankNames(paymentType: paymentModeType.bankPayment.rawValue)
|
|
self.pickUp(textField)
|
|
|
|
} else if textField == textFieldBankBranch {
|
|
if textFieldBankName.text != "" {
|
|
if textField.text != "" {
|
|
if bankBranchNameList.count > 0 {
|
|
textField.text = bankBranchAutoCompeletionList[cellSelected]
|
|
}
|
|
|
|
}
|
|
tableViewAutoComplete.isHidden = false
|
|
} else {
|
|
textField.resignFirstResponder()
|
|
tableViewAutoComplete.isHidden = true
|
|
popUpMessageInfo(value: 16, title: "No Bank Name", message: "Please Select the Bank.")
|
|
}
|
|
if bankBranchAutoCompeletionList.contains(textFieldBankBranch.text!){
|
|
tableViewAutoComplete.isHidden = true
|
|
}
|
|
|
|
} else if textField == textFieldCashPartner {
|
|
self.pickUp(textField)
|
|
|
|
bankPartnerName()
|
|
if textField.text != ""{
|
|
self.textFieldCashPartner.inputView = self.pickerView
|
|
textField.text = pickerData[bankIdReferenceValue]
|
|
}
|
|
} else if textField == textFieldCashBankBranch {
|
|
guard textFieldCashPartner.text != "" else {
|
|
textField.resignFirstResponder()
|
|
popUpMessageInfo(value: 16, title: "No Payout Partner Name", message: "Please Select the Payout Partner.")
|
|
return
|
|
}
|
|
self.pickUp(textField)
|
|
|
|
if bankBranchNameList.count != 0 {
|
|
self.textFieldCashBankBranch.inputView = self.pickerView
|
|
pickerData = bankBranchNameList
|
|
|
|
pickerView.reloadAllComponents()
|
|
guard pickerData.count > 0 else {
|
|
self.popUpMessageInfo(value: 16, title: "Data being fetched", message: "Please wait few moments")
|
|
return
|
|
}
|
|
pickerView.selectRow(branchIdReferenceValue, inComponent: 0, animated: true)
|
|
}
|
|
if textField.text != ""{
|
|
textField.text = pickerData[branchIdReferenceValue]
|
|
}
|
|
|
|
} else if textField == textFieldState {
|
|
|
|
self.textFieldState.inputView = self.pickerView
|
|
self.pickUp(textField)
|
|
|
|
pickerData = stateNameListArray
|
|
if textFieldState.text != ""{
|
|
if let index = pickerData.index(of: textFieldState.text!) {
|
|
self.selectedIndexFor["state"]! = index
|
|
pickerView.selectRow(index, inComponent: 0, animated: true)
|
|
}
|
|
}
|
|
|
|
}else if textField == textFieldDistrict {
|
|
|
|
self.textFieldDistrict.inputView = self.pickerView
|
|
self.pickUp(textField)
|
|
|
|
pickerData = districtNameListArray
|
|
let districtName = (textFieldDistrict.text!).removeSpacesTrailingPreceding()
|
|
if textFieldDistrict.text != ""{
|
|
if let index = pickerData.index(of: districtName){
|
|
self.selectedIndexFor["district"]! = index
|
|
pickerView.selectRow(index, inComponent: 0, animated: true)
|
|
}
|
|
}
|
|
}
|
|
tableViewAutoComplete.reloadData()
|
|
}
|
|
|
|
/**
|
|
Bank names
|
|
*/
|
|
func bankNames(paymentType: String){
|
|
pickerData = bankArray
|
|
pickerView.reloadAllComponents()
|
|
guard pickerData.count > 0 else {
|
|
textFieldBankName.resignFirstResponder()
|
|
return
|
|
}
|
|
pickerView.selectRow(bankIdReferenceValue, inComponent: 0, animated: true)
|
|
}
|
|
|
|
/**
|
|
Bank partner name
|
|
*/
|
|
func bankPartnerName(){
|
|
pickerData = bankCashArray
|
|
pickerView.reloadAllComponents()
|
|
guard pickerData.count > 0 else {
|
|
textFieldCashPartner.resignFirstResponder()
|
|
return
|
|
}
|
|
pickerView.selectRow(bankIdReferenceValue, inComponent: 0, animated: true)
|
|
}
|
|
|
|
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
|
textField.resignFirstResponder()
|
|
self.tableViewAutoComplete.isHidden = true
|
|
return true
|
|
}
|
|
|
|
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
|
|
let inputText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
|
|
if textField == textFieldAccountNumber {
|
|
let accountNumber = (textField.text! as NSString).replacingCharacters(in: range, with: string)
|
|
paymentviewmodel.updateAccountNumber(acNumber: accountNumber)
|
|
return true
|
|
} else if textField == textFieldBankBranch {
|
|
if inputText == "" {
|
|
tableViewAutoComplete.isHidden = false
|
|
}
|
|
return true
|
|
}else if textField == textFieldAddress || textField == textFieldCity {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
|
|
extension PaymentMethodViewController: UIPickerViewDataSource, UIPickerViewDelegate {
|
|
|
|
func numberOfComponents(in pickerView: UIPickerView) -> Int {
|
|
return 1
|
|
}
|
|
|
|
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
|
|
return pickerData.count
|
|
}
|
|
|
|
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
|
|
return pickerData[row]
|
|
}
|
|
|
|
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
|
|
if activeTextField == textFieldState {
|
|
selectedIndexFor["state"] = row
|
|
} else if activeTextField == textFieldDistrict{
|
|
selectedIndexFor["district"] = row
|
|
} else {
|
|
pickerSelecteRow = row
|
|
}
|
|
}
|
|
}
|
|
|
|
extension PaymentMethodViewController: UITableViewDelegate, UITableViewDataSource {
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
|
|
|
return bankBranchAutoCompeletionArray.count
|
|
}
|
|
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
|
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
|
|
cell.textLabel?.text = bankBranchAutoCompeletionArray[indexPath.row]
|
|
return cell
|
|
}
|
|
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
|
|
|
cellSelected = indexPath.row
|
|
|
|
if bankBranchNameList.count > 0{
|
|
branchIdReferenceValue = bankBranchNameList.index(of: bankBranchAutoCompeletionList[indexPath.row])!
|
|
}
|
|
activeTextField?.text = bankBranchAutoCompeletionArray[indexPath.row]
|
|
tableViewAutoComplete.isHidden = true
|
|
}
|
|
}
|
|
|
|
extension PaymentMethodViewController: UIScrollViewDelegate {
|
|
|
|
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
|
if scrollView.contentOffset.y > (867) {
|
|
scrollView.isScrollEnabled = false
|
|
} else {
|
|
scrollView.isScrollEnabled = true
|
|
}
|
|
}
|
|
}
|