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.
214 lines
6.9 KiB
214 lines
6.9 KiB
//
|
|
// InviteViewController.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by FMI-12 on 2/28/18.
|
|
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class InviteViewController: UIViewController {
|
|
|
|
public var bonusStatus: Bool?
|
|
public static var inviteStatus: Bool?
|
|
public static var notificationCode = ""
|
|
|
|
private var inviteviewmodel = InviteViewModel()
|
|
|
|
@IBOutlet weak var labelNumberRefer: UILabel!
|
|
@IBOutlet weak var labelEarnedAmount: UILabel!
|
|
|
|
private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
|
|
|
|
public static var inviteConnectionTimeOutCheck = 0
|
|
public var fromNotification: Int?
|
|
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
self.tabBarController?.navigationController?.navigationBar.barTintColor = UIColor(hex:0xEC1C24)
|
|
}
|
|
|
|
/**
|
|
Request once again. After submitting a form view, redirect back to this view and provide updated number of count related to invitation.
|
|
*/
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
setUpAnotherLoginListener(genericviewmodel: inviteviewmodel)
|
|
setUpNetworkListener()
|
|
if (!(UserDefaults.standard.object(forKey: "com.gmeremit.isVerified") as! Bool)) {
|
|
popUpMessage(value: 14)
|
|
enableUserInteractions()
|
|
}
|
|
|
|
if (InviteViewController.inviteStatus != nil) && InviteViewController.inviteStatus == true {
|
|
disableUserInteractions()
|
|
showActivityIndicator(activityIndicator: activityIndicator)
|
|
inviteviewmodel.fetchInvitee()
|
|
}
|
|
}
|
|
|
|
/**
|
|
Check internet connection
|
|
*/
|
|
func setUpNetworkListener() {
|
|
|
|
inviteviewmodel.internetConnection.value = nil
|
|
inviteviewmodel.internetConnection.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
self.popUpMessage(value: 15)
|
|
}
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
/**
|
|
Nav Bar as per notification type i.e. push and internal notification
|
|
*/
|
|
|
|
inviteviewmodel.inviteeConnectionTimeOut.value = nil
|
|
/**
|
|
connection timeout
|
|
*/
|
|
inviteviewmodel.inviteeConnectionTimeOut.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
if self.fromNotification != 0{
|
|
if InviteViewController.inviteConnectionTimeOutCheck == 0{
|
|
InviteViewController.inviteConnectionTimeOutCheck = InviteViewController.inviteConnectionTimeOutCheck+1
|
|
self.popUpMessage(value: 36)
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if InviteViewController.notificationCode == "500" {
|
|
setUpNavBar(id: 201, title: "Invite")
|
|
} else if InviteViewController.notificationCode == "p500"{
|
|
setUpNavBar(id: 207, title: "Invite")
|
|
}else {
|
|
setUpNavBar(id: 202,title: "")
|
|
}
|
|
|
|
if !Reachability.isConnectedToNetwork() {
|
|
self.stopLoading()
|
|
self.popUpMessage(value: 15)
|
|
} else {
|
|
|
|
/**
|
|
Request Invitee Api to fetch number of invitation and total earned values
|
|
*/
|
|
self.startLoading()
|
|
inviteviewmodel.fetchInvitee()
|
|
|
|
inviteviewmodel.inviteeFetch.bind{ [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
guard $0! else {
|
|
self.stopLoading()
|
|
self.popUpMessageError(value: 10, message: self.inviteviewmodel.getErrorMessage())
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
|
|
/**
|
|
Update UI only when api respond with data
|
|
*/
|
|
if (self.inviteviewmodel.getInviteeArray().count > 0){
|
|
self.viewUpdate()
|
|
}else{
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
Provide number of invitations and total earned values.
|
|
Count Invitation and Total Earned values as per the status.
|
|
*/
|
|
func viewUpdate(){
|
|
var inviteePendingCount: Int = 0
|
|
var inviteeActiveCount: Int = 0
|
|
|
|
for i in inviteviewmodel.getInviteeArray()[0..<inviteviewmodel.getCount()]{
|
|
if i.status == "pending" {
|
|
inviteePendingCount = inviteePendingCount + 1
|
|
} else if i.status == "active" {
|
|
inviteeActiveCount = inviteeActiveCount + 1
|
|
} else {
|
|
|
|
}
|
|
}
|
|
self.labelNumberRefer.text = String(inviteePendingCount)
|
|
self.labelEarnedAmount.text = "+" + String(inviteeActiveCount * 7000)
|
|
}
|
|
|
|
/**
|
|
Disable user interaction while fetching data from api
|
|
*/
|
|
func startLoading(){
|
|
disableUserInteractions()
|
|
showActivityIndicator(activityIndicator: activityIndicator)
|
|
}
|
|
|
|
/**
|
|
Enable user interaction after fetching data from api
|
|
*/
|
|
func stopLoading(){
|
|
self.enableUserInteractions()
|
|
if self.activityIndicator.isAnimating {
|
|
self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
|
|
}
|
|
}
|
|
|
|
/**
|
|
Redirect to view name ReferringViewController. A user can refer app to others through.
|
|
*/
|
|
@IBAction func buttonInviteTap(_ sender: Any) {
|
|
performSegue(withIdentifier: "refering", sender: nil)
|
|
|
|
}
|
|
|
|
/**
|
|
Redirect to view name InviteViewController.
|
|
A user can view the list of referred people who still haven't used the app.
|
|
*/
|
|
@IBAction func pendingTap(_ sender: UITapGestureRecognizer) {
|
|
InviteViewController.inviteStatus = false
|
|
bonusStatus = true
|
|
performSegue(withIdentifier: "earned", sender: nil)
|
|
}
|
|
/**
|
|
Redirect to view name InviteViewController.
|
|
A user can view the list of referred people who still haven't used the app.
|
|
*/
|
|
@IBAction func earnedTap(_ sender: UITapGestureRecognizer) {
|
|
InviteViewController.inviteStatus = false
|
|
bonusStatus = false
|
|
performSegue(withIdentifier: "earned", sender: nil)
|
|
}
|
|
|
|
override func didReceiveMemoryWarning() {
|
|
super.didReceiveMemoryWarning()
|
|
// Dispose of any resources that can be recreated.
|
|
}
|
|
|
|
|
|
/**
|
|
Redirect to EarnedViewController. If var bonusStatus is true then redirect to Pending segment else redirect to Earned segment.
|
|
*/
|
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
|
if (segue.identifier == "earned") {
|
|
let vc = segue.destination as! EarnedViewController
|
|
vc.bonusStatus = bonusStatus
|
|
vc.inviteeArray = inviteviewmodel.getInviteeArray().reversed()
|
|
}
|
|
}
|
|
}
|