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.
 
 
 
 

119 lines
3.9 KiB

//
// TrackTransferViewModel.swift
// GMERemittance
//
// Created by Fm-user on 2/5/18.
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
import Alamofire
class TrackRecipientViewModel: ModelExtension {
var recipientListObtained: Box<Bool?> = Box(nil)
var recipientArray = [Recipient]()
var recipientName: String?
var trackRecipientTimeOut: Box<Bool?> = Box(nil)
var request: URLRequest!
/**
Api request for recipient list
- parameter String: Reciver name
*/
func fetchRecipientList(queryString: String) {
if !Reachability.isConnectedToNetwork() {
self.internetConnection.value = false
} else {
let query_string = queryString
RestApiMananger.sharedInstance.getFilteredRecipientList(queryString: queryString, userId: getUserId()) { result in
switch result {
case let .success(fetchedJSON):
self.recipientArray.removeAll()
guard fetchedJSON.count > 0 else {
self.recipientListObtained.value = true
return
}
for i in 0 ... (fetchedJSON.count-1) {
do {
let recipient = try JSONDecoder().decode(Recipient.self, from: fetchedJSON[i].rawData())
self.recipientArray.append(recipient)
} catch {
self.recipientListObtained.value = false
}
}
self.recipientListObtained.value = true
case let .failure(errorJSON):
self.setErrorMessage(message: errorJSON["message"].stringValue)
self.recipientListObtained.value = false
case .updateAccessCode:
RestApiMananger.sharedInstance.updateAccessCode(userId: self.getUserId(), password: self.getLoginPassword()) {
result in
if result != "Error"{
UserDefaults.standard.set((result + ":" + RestApiMananger.sharedInstance.getUUID()).toBase64(), forKey: "com.gmeremit.accessCode")
self.fetchRecipientList(queryString: query_string)
}
}
case .logOutUser():
RestApiMananger.sharedInstance.cancelExistingNetworkCalls()
self.anotherLogin.value = true
case .timeOut:
self.trackRecipientTimeOut.value = false
}
}
}
}
/**
empty the array
*/
func clearArray() {
recipientArray.removeAll()
}
/**
get the count of array
*/
func getRecipientCount() -> Int {
return recipientArray.count
}
/**
- parameter index: position of recipient in an array
- returns: recipient
*/
func getFilteredRecipientList(index: Int) -> Recipient {
return recipientArray[index]
}
/**
- parameter index: position of recipient name in an array
- returns: recipient name
*/
func getRecipientName(index: Int) -> String {
var recipientName: String?
recipientName = self.recipientArray[index].getFullName()
if let name = recipientName{
return name
}
return "nil"
}
/**
- parameter index: position of recipient phone in an array
- returns: recipient phone
*/
func getRecipientPhone(index: Int) -> String {
var phoneNumber: String?
phoneNumber = self.recipientArray[index].mobileNumber
if let number = phoneNumber{
return number
}
return "nil"
}
}