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.
246 lines
8.3 KiB
246 lines
8.3 KiB
//
|
|
// PennyTestSubmitViewController.swift
|
|
// GME Remit
|
|
//
|
|
// Created by Mac on 11/28/18.
|
|
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import PMAlertController
|
|
import FirebaseInstanceID
|
|
|
|
|
|
class PennyTestSubmitViewController: UIViewController {
|
|
|
|
struct StringConstants {
|
|
let navigationTitle = "penny_test_title_text".localized()
|
|
let depositReferenceText = "deposit_reference_text".localized()
|
|
let viewSampleText = "view_sample_text".localized()
|
|
let resendRequestText = "resend_request_text".localized()
|
|
let submitText = "submit_text".localized()
|
|
let notNowText = "not_now_text".localized()
|
|
}
|
|
|
|
// MARK: Properties
|
|
|
|
var presenter: PennyTestSubmitModuleInterface?
|
|
weak var parentViewcontroller: UIViewController?
|
|
|
|
// MARK: IBOutlets
|
|
|
|
@IBOutlet weak var dipositReferencelabel: UILabel!
|
|
@IBOutlet weak var titleLabel: UILabel!
|
|
@IBOutlet weak var verificationCodeTextField: UITextField!
|
|
@IBOutlet weak var viewSampleButton: UIButton!
|
|
@IBOutlet weak var resendButton: UIButton!
|
|
@IBOutlet weak var submitButton: UIButton!
|
|
@IBOutlet weak var notNowButton: UIButton!
|
|
// MARK: VC's Life cycle
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
self.setup()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.setupNormalNavigation()
|
|
self.navigationItem.title = StringConstants().navigationTitle
|
|
self.navigationItem.hidesBackButton = true
|
|
}
|
|
|
|
// MARK: IBActions
|
|
|
|
// MARK: Other Functions
|
|
|
|
private func setup() {
|
|
// all setup should be done here
|
|
requestPennytestInfoDuringViewLoad()
|
|
let message = UserDefaults.standard.string(forKey: AppConstants.pennyTestServerMessage)
|
|
self.titleLabel.text = message
|
|
configureText()
|
|
|
|
}
|
|
|
|
private func configureText() {
|
|
self.titleLabel.text = "penny_test_promt_description_text".localized()
|
|
self.dipositReferencelabel.text = StringConstants().depositReferenceText
|
|
self.viewSampleButton.setTitle(StringConstants().viewSampleText, for: UIControlState.normal)
|
|
self.resendButton.setTitle(StringConstants().resendRequestText, for: UIControlState.normal)
|
|
self.submitButton.setTitle(StringConstants().submitText, for: UIControlState.normal)
|
|
self.notNowButton.setTitle(StringConstants().notNowText, for: UIControlState.normal)
|
|
}
|
|
|
|
@IBAction func viewSample(_ sender: Any) {
|
|
self.showSampleImage()
|
|
}
|
|
|
|
|
|
@IBAction func resend(_ sender: Any) {
|
|
self.proceed()
|
|
}
|
|
|
|
@IBAction func dismiss(_ sender: Any) {
|
|
self.dismiss()
|
|
}
|
|
|
|
private func dismiss() {
|
|
parentViewcontroller?.dismiss(animated: true, completion: nil)
|
|
self.dismiss(animated: true, completion: nil)
|
|
if let navigation = self.navigationController {
|
|
navigation.popViewController(animated: true)
|
|
}
|
|
}
|
|
|
|
func showSampleImage() {
|
|
let image = #imageLiteral(resourceName: "penny3.jpg")
|
|
let alertVC = PMAlertController(title: "", description: "", image: image, style: .alert)
|
|
alertVC.alertView.layer.cornerRadius = 10
|
|
let action = PMAlertAction(title: "ok_text".localized(), style: .cancel)
|
|
alertVC.addAction(action)
|
|
self.present(alertVC, animated: true, completion: nil)
|
|
}
|
|
|
|
|
|
// resend
|
|
private func proceed() {
|
|
let userId = Utility.getMyUserName()
|
|
self.showLoading()
|
|
|
|
self.initiate(userId: userId, isResendRequest: "Y", success: { result in
|
|
self.hideLoading()
|
|
self.alertWithOk(message: result.message, title: "success_text".localized(), okTitle: "ok_text".localized(), style: UIAlertControllerStyle.alert, OkStyle: UIAlertActionStyle.default, okAction: nil)
|
|
self.updatePennyTestRequestStatus()
|
|
}) { (error) in
|
|
self.updatePennyTestRequestStatus()
|
|
self.hideLoading()
|
|
self.alert(message: error.localizedDescription)
|
|
}
|
|
}
|
|
|
|
private func requestPennytestInfoDuringViewLoad() {
|
|
let message = UserDefaults.standard.string(forKey: AppConstants.pennyTestServerMessage)
|
|
let userId = Utility.getMyUserName()
|
|
self.showLoading()
|
|
|
|
self.initiate(userId: userId, isResendRequest: "N", success: { result in
|
|
self.hideLoading()
|
|
self.titleLabel.text = result.message
|
|
UserDefaults.standard.set(result.message, forKey: AppConstants.pennyTestServerMessage)
|
|
self.updatePennyTestRequestStatus()
|
|
}) { (error) in
|
|
self.updatePennyTestRequestStatus()
|
|
self.hideLoading()
|
|
self.alert(message: error.localizedDescription)
|
|
}
|
|
}
|
|
|
|
private func updatePennyTestRequestStatus() {
|
|
let _default = UserDefaults.standard
|
|
_default.set(PennyTestStatusCode.requested.rawValue, forKey: AppConstants.pennyTestStatusCode)
|
|
}
|
|
|
|
private func showLoading() {
|
|
self.showProgressHud()
|
|
}
|
|
|
|
private func hideLoading() {
|
|
self.hideProgressHud()
|
|
}
|
|
|
|
@IBAction func Verify(_ sender: UIButton) {
|
|
let customerId = Utility.getMyId()
|
|
let certNumber = self.verificationCodeTextField.text!.removeSpacesTrailingPreceding()
|
|
if certNumber.isEmpty || certNumber.count != 4 {
|
|
self.alert(message: "valid_verification_code_error".localized())
|
|
return
|
|
}
|
|
|
|
let accountNumber = Utility.getMyPrimaryAccountNumber()
|
|
|
|
let params =
|
|
[
|
|
"AccountNo": accountNumber,
|
|
"CertNumber": certNumber,
|
|
"CustomerId": customerId
|
|
]
|
|
|
|
self.submit(params: params, success: { (response) in
|
|
|
|
// UPDATE BALANCE
|
|
let balance = response.extra ?? ""
|
|
let userInfo = [SideMenuNavigationNotifications.availableBalance : balance]
|
|
|
|
UserDefaults.standard.set(balance, forKey: UserKeys.availableBalance)
|
|
NotificationCenter.default.post(name: self.getAvailableBalanceNotificationName(), object: nil, userInfo: userInfo)
|
|
|
|
// UPDATE YEARLY LIMIT
|
|
let limit = response.yearlyLimit ?? ""
|
|
let userInfo2 = [AppConstants.yearlyLimitNotification : limit]
|
|
NotificationCenter.default.post(name: self.getAvailableBalanceNotificationName(), object: nil, userInfo: userInfo2)
|
|
|
|
|
|
// show alert and dismiss
|
|
self.alertWithOk(message: response.message ?? "", title: "Success", okTitle: "Ok", style: UIAlertControllerStyle.alert
|
|
, OkStyle: .default, okAction: {
|
|
UserDefaults.standard.set(PennyTestStatusCode.completed.rawValue, forKey: AppConstants.pennyTestStatusCode)
|
|
self.dismiss()
|
|
})
|
|
}) { (error) in
|
|
self.alert(message: error.localizedDescription)
|
|
}
|
|
}
|
|
|
|
func getAvailableBalanceNotificationName() -> Notification.Name {
|
|
return Notification.Name.init(rawValue: SideMenuNavigationNotifications.availableBalance)
|
|
}
|
|
|
|
private func getFcmToken() -> String? {
|
|
let token = InstanceID.instanceID().token()
|
|
return token
|
|
}
|
|
|
|
func fetchUserInfo() {
|
|
let userId = Utility.getMyUserName()
|
|
var param = ["userId" : userId]
|
|
|
|
|
|
param["uuid"] = Utility.getUUid() ?? ""
|
|
param["appVersion"] = Utility.getAppVersion()
|
|
param["phoneBrand"] = Utility.getPhoneBrand()
|
|
param["phoneOs"] = Utility.getPhoneOs()
|
|
param["fcmId"] = self.getFcmToken()
|
|
param["osVersion"] = Utility.getOsVersion()
|
|
|
|
self.fetchUserInfo(param: param, success: { user in
|
|
self.navigationController?.popToRootViewController(animated: true)
|
|
}) { error in
|
|
self.navigationController?.popToRootViewController(animated: true)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// MARK: PennyTestSubmitViewInterface
|
|
extension PennyTestSubmitViewController: PennyTestSubmitViewInterface {
|
|
|
|
}
|
|
|
|
extension PennyTestSubmitViewController: SubmitPennyTestService {
|
|
|
|
}
|
|
|
|
|
|
|
|
extension PennyTestSubmitViewController: InitiatePennyTestService {
|
|
|
|
}
|
|
|
|
|
|
extension PennyTestSubmitViewController: UserInfoService {
|
|
|
|
}
|
|
|
|
|
|
|