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.
 
 
 
 

184 lines
6.2 KiB

//
// RedeemViewController.swift
// GMERemittance
//
// Created by Sujal on 3/16/18.
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class RedeemViewController: UIViewController {
@IBOutlet weak var textFieldAddress: UITextField!
@IBOutlet weak var imageViewReward: UIImageView!
@IBOutlet weak var labelPointsDeduction: UILabel!
@IBOutlet weak var labelRedeemItem: UILabel!
@IBOutlet weak var buttonSubmitRedeemRequest: UIButton!
var rewardviewmodel: RewardViewModel?
public static var redeemConnectionTimeOutCheck = 0
var selectedIndex: Int!
private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
override func viewDidLoad() {
super.viewDidLoad()
setUpNavBar(id: 201, title: "Reward")
hideKeyboardWhenTappedAround()
rewardviewmodel?.rewardConnectionTimeOut.value = nil
/**
connection timeout
*/
rewardviewmodel?.rewardConnectionTimeOut.bind { [unowned self] in
guard $0 != nil else {
return
}
self.enableUserInteractions()
self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
if RedeemViewController.redeemConnectionTimeOutCheck == 0{
RedeemViewController.redeemConnectionTimeOutCheck = RedeemViewController.redeemConnectionTimeOutCheck+1
self.popUpMessage(value: 43)
}
}
setUpListener()
setUpNetworkListener()
guard rewardviewmodel != nil else {
buttonSubmitRedeemRequest.isUserInteractionEnabled = false
return
}
setUpAnotherLoginListener(genericviewmodel: rewardviewmodel!)
selectedIndex = rewardviewmodel!.getSelectedRewardIndex()
setUpDetailsforRedeem()
buttonSubmitRedeemRequest.isUserInteractionEnabled = true
}
/**
Update reward data in view
*/
func setUpListener() {
rewardviewmodel?.rewardsAvailable.bind { [unowned self] in
guard $0 != nil else {
return
}
self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
self.enableUserInteractions()
if $0 == 0 {
if RedeemViewController.redeemConnectionTimeOutCheck == 0{
RedeemViewController.redeemConnectionTimeOutCheck = RedeemViewController.redeemConnectionTimeOutCheck+1
self.popUpMessageError(value: 10, message: (self.rewardviewmodel?.getErrorMessage())!)
}
} else if $0 == 2 {
self.showSuccessfulPopUp()
}
self.rewardviewmodel?.rewardsAvailable.value = nil
}
}
/**
Internet Check
*/
func setUpNetworkListener() {
rewardviewmodel?.internetConnection.bind { [unowned self] in
guard $0 != nil else {
return
}
self.enableUserInteractions()
self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
self.popUpMessage(value: 15)
}
}
/**
Pop up message for successfull redeem
*/
func showSuccessfulPopUp() {
let storyboard = UIStoryboard.init(name: "Main", bundle: Bundle.main)
guard let navController = self.navigationController else {
return
}
if let popUpViewController = storyboard.instantiateViewController(withIdentifier: "popUpInfo") as? PopUpGeneralInfo {
popUpViewController.indexValue = 17
navController.addChildViewController(popUpViewController)
popUpViewController.view.frame = navController.view.bounds
navController.view.addSubview(popUpViewController.view)
popUpViewController.didMove(toParentViewController: navController)
}
}
func setUpDetailsforRedeem() {
labelRedeemItem.text = "Redeem" + " " + rewardviewmodel!.getRewardName(index: selectedIndex)
labelPointsDeduction.text = String(rewardviewmodel!.getRedeemPoint(index: selectedIndex)) + " " + "Points will be deducted from your reward point"
if let rewardImageString = rewardviewmodel!.getRewardImage(index: selectedIndex) {
if let rewardImageUrl = URL(string: rewardImageString) {
imageViewReward.sd_setImage(with: rewardImageUrl, placeholderImage: nil, options: [.progressiveDownload,.scaleDownLargeImages], completed: nil)
}
}
imageViewReward.layer.cornerRadius = imageViewReward.frame.height/2
}
@IBAction func submitRedeemRequest(_ sender: Any) {
switch rewardviewmodel!.validateAddress(address: textFieldAddress.text!) {
case .Valid:
if let rewardId = rewardviewmodel?.getRewardId(index: selectedIndex) {
showActivityIndicator(activityIndicator: activityIndicator)
disableUserInteractions()
rewardviewmodel!.redeemReward(rewardId: rewardId)
}
case .InValid(let error):
self.popUpMessageError(value: 11, message: error)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func viewAgentLocationFromTextClick(_ sender: Any) {
viewAgentLocation()
}
@IBAction func viewAgentLocationFromImageClick(_ sender: Any) {
viewAgentLocation()
}
func viewAgentLocation() {
let storyboard = UIStoryboard.init(name: "_Home", bundle: Bundle.main)
if let agentViewController = storyboard.instantiateViewController(withIdentifier: "PayoutViewController") as? PayoutViewController {
//agentViewController.fromReward = 0
self.navigationController!.pushViewController(agentViewController, animated: true)
}
}
}