// // ReviewViewController.swift // GMERemittance // // Created by Fm-user on 12/26/17. // Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit class ReviewViewController: UIViewController { @IBOutlet weak var labelExchange: UILabel! @IBOutlet weak var labelServiceFee: UILabel! @IBOutlet weak var labelSend: UILabel! @IBOutlet weak var labelReciver: UILabel! @IBOutlet weak var labelRecipientName: UILabel! @IBOutlet weak var labelRecipientRelation: UILabel! @IBOutlet weak var labelRecipientAddress: UILabel! @IBOutlet weak var labelRecipientEmail: UILabel! @IBOutlet weak var labelRecipientMobile: UILabel! @IBOutlet weak var labelAgentOrBankOrPayoutMode: UILabel! @IBOutlet weak var labelPayoutBankOrPayoutMode: UILabel! @IBOutlet weak var labelBranchOrStateProvince: UILabel! @IBOutlet weak var labelPayoutBranchOrStateProvince: UILabel! @IBOutlet weak var labelAccountOrDistrict: UILabel! @IBOutlet weak var labelAccountNumberOrDistrictName: UILabel! @IBOutlet weak var labelCity: UILabel! @IBOutlet weak var labelDeliveryAddress: UILabel! @IBOutlet weak var reviewDetailConstraint: NSLayoutConstraint! @IBOutlet weak var viewReviewDetail: UIView! @IBOutlet weak var viewReview: UIView! @IBOutlet weak var branchOrStateProvinceView: UIView! @IBOutlet weak var accountNumOrDistrictView: UIView! @IBOutlet weak var cityView: UIView! @IBOutlet weak var addressView: UIView! @IBOutlet weak var deliveryAddressView: UIView! //Recieved from previous viewcontroller var transferDetails: [String: String]? var recipient: Recipient? var paymentMode: String? private var checkDialog = 0 private var reviewviewmodel = ReviewViewModel() private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView() override func viewDidLoad() { super.viewDidLoad() setUpNavBar(id: 201, title: "Send Money") setUpAnotherLoginListener(genericviewmodel: reviewviewmodel) reviewviewmodel.reviewConnectionTimeOut.value = nil /** connection timeout */ reviewviewmodel.reviewConnectionTimeOut.bind { [unowned self] in guard $0 != nil else { return } self.stopLoading() if self.checkDialog == 0{ self.checkDialog = self.checkDialog+1 self.popUpMessage(value: 20) } } /** Check internet connection */ reviewviewmodel.internetConnection.value = nil reviewviewmodel.internetConnection.bind { [unowned self] in guard $0 != nil else { return } self.stopLoading() self.popUpMessage(value: 15) } guard transferDetails?.count != 0 && recipient != nil && paymentMode != nil else { self.popUpMessageError(value: 10, message: "Error getting data") return } reviewviewmodel.successfulTransfer.bind { [unowned self] in guard $0 != nil else { return } self.stopLoading() guard $0! else { if self.checkDialog == 0{ self.checkDialog = self.checkDialog + 1 self.popUpMessageError(value: 10, message: self.reviewviewmodel.getErrorMessage()) } return } self.performSegue(withIdentifier: "transferSuccessful", sender: nil) } showReview() reviewviewmodel.setTransferDetails(transferDetails: transferDetails!) viewReview.layer.cornerRadius = 10 viewReviewDetail.layer.cornerRadius = 10 } /** 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() } /** Show review data */ func showReview() { youSendAmountDispaly() serviceFeeDispaly() exchangeRateDispaly() reciverDisplayAmount() if let fullName = recipient?.getFullName(){ labelRecipientName.text = fullName } if let relation = recipient?.relation{ labelRecipientRelation.text = relation } if let mobileNumber = recipient?.mobileNumber{ labelRecipientMobile.text = mobileNumber } if let email = recipient?.email{ if email != ""{ labelRecipientEmail.text = email } else { labelRecipientEmail.text = "-" } } else { labelRecipientEmail.text = "-" } if let address = recipient?.address{ labelRecipientAddress.text = address } if let transferDetails = transferDetails?["bankName"]{ labelPayoutBankOrPayoutMode.text = transferDetails } else { labelPayoutBankOrPayoutMode.text = "-" } if paymentMode! == paymentModeType.cashPayment.rawValue { reviewDetailConstraint.constant = 215 branchOrStateProvinceView.isHidden = true accountNumOrDistrictView.isHidden = true cityView.isHidden = true labelAgentOrBankOrPayoutMode.text = "Payout Bank/ Agent" labelPayoutBankOrPayoutMode.text = transferDetails?["bankName"] } else if paymentMode! == paymentModeType.cashPaymentPartner.rawValue { reviewDetailConstraint.constant = 240 branchOrStateProvinceView.isHidden = false accountNumOrDistrictView.isHidden = false deliveryAddressView.isHidden = true cityView.isHidden = true labelAgentOrBankOrPayoutMode.text = "Payout Agent/Bank" accountNumOrDistrictView.isHidden = true branchOrStateProvinceView.isHidden = true } else if paymentMode! == paymentModeType.bankPayment.rawValue { reviewDetailConstraint.constant = 287 branchOrStateProvinceView.isHidden = false accountNumOrDistrictView.isHidden = false cityView.isHidden = true labelAgentOrBankOrPayoutMode.text = "Payout Agent/Bank" labelBranchOrStateProvince.text = "Branch" labelPayoutBranchOrStateProvince.text = transferDetails?["bankBranch"] labelAccountOrDistrict.text = "Account Number" labelAccountNumberOrDistrictName.text = transferDetails?["accountNumber"] deliveryAddressView.isHidden = true } else if paymentMode! == paymentModeType.homeDelivery.rawValue{ reviewDetailConstraint.constant = 287 labelAgentOrBankOrPayoutMode.text = "Payout Mode" labelPayoutBankOrPayoutMode.text = "Home Delivery" labelBranchOrStateProvince.text = "State/Province" labelPayoutBranchOrStateProvince.text = transferDetails?["updatedStateId"] labelAccountOrDistrict.text = "District" labelAccountNumberOrDistrictName.text = transferDetails?["updatedDistrictId"] labelCity.text = transferDetails?["updatedCity"] cityView.isHidden = false addressView.isHidden = true deliveryAddressView.isHidden = false labelDeliveryAddress.text = transferDetails?["updatedAddress"] } } /** Display send amount */ func youSendAmountDispaly(){ let amountValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0) let youSend: String = String("You Send: ") let mutableYouSend = NSMutableAttributedString(string: youSend) if let cAmount = transferDetails!["cAmount"] , let from = transferDetails!["from"]{ let mutableSendAmountValue = NSMutableAttributedString(string: getCommaAddedAmountString(amountString: cAmount) + " " + from) mutableSendAmountValue.addAttribute(NSAttributedStringKey.foregroundColor, value: amountValueColor, range: NSRange(location:0, length: mutableSendAmountValue.length)) let sendAmountData = NSMutableAttributedString() sendAmountData.append(mutableYouSend) sendAmountData.append(mutableSendAmountValue) labelSend.attributedText = sendAmountData } } /** Display service fee */ func serviceFeeDispaly(){ let amountValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0) let youSend: String = String("Service Fee: ") let mutableYouSend = NSMutableAttributedString(string: youSend) if let transferFee = transferDetails!["transferFee"]{ let mutableSendAmountValue = NSMutableAttributedString(string: "-" + transferFee + " KRW") mutableSendAmountValue.addAttribute(NSAttributedStringKey.foregroundColor, value: amountValueColor, range: NSRange(location:0, length: mutableSendAmountValue.length)) let sendAmountData = NSMutableAttributedString() sendAmountData.append(mutableYouSend) sendAmountData.append(mutableSendAmountValue) labelServiceFee.attributedText = sendAmountData } } /** Display exchange rate */ func exchangeRateDispaly(){ let amountValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0) let youSend: String = String("Exchange Rate: ") let mutableYouSend = NSMutableAttributedString(string: youSend) if let exRate = transferDetails!["exRate"]{ let mutableSendAmountValue = NSMutableAttributedString(string: exRate) mutableSendAmountValue.addAttribute(NSAttributedStringKey.foregroundColor, value: amountValueColor, range: NSRange(location:0, length: mutableSendAmountValue.length)) let sendAmountData = NSMutableAttributedString() sendAmountData.append(mutableYouSend) sendAmountData.append(mutableSendAmountValue) labelExchange.attributedText = sendAmountData } } /** Display reciver amount */ func reciverDisplayAmount(){ let amountValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0) let youSend: String = String("Receiver Gets: ") let mutableYouSend = NSMutableAttributedString(string: youSend) if let pAmount = transferDetails!["pAmount"] , let to = transferDetails!["to"] { let mutableSendAmountValue = NSMutableAttributedString(string: getCommaAddedAmountString(amountString: pAmount) + " " + to) mutableSendAmountValue.addAttribute(NSAttributedStringKey.foregroundColor, value: amountValueColor, range: NSRange(location:0, length: mutableSendAmountValue.length)) let sendAmountData = NSMutableAttributedString() sendAmountData.append(mutableYouSend) sendAmountData.append(mutableSendAmountValue) labelReciver.attributedText = sendAmountData } } @IBAction func transferAmount(_ sender: Any) { if self.checkDialog == 1{ self.checkDialog = 0 } askPassword() } /** Ask confirmation password */ func askPassword() { let alertController = UIAlertController(title: "Enter your login password", message: "", preferredStyle: .alert) alertController.addTextField { (textField : UITextField!) -> Void in textField.placeholder = "Enter password" textField.isSecureTextEntry = true textField.tag = 51 textField.delegate = self } let confirmAction = UIAlertAction(title: "Confirm", style: .default, handler: { alert -> Void in let passwordTextField = alertController.textFields![0] as UITextField if passwordTextField.text != "" { self.startLoading() self.reviewviewmodel.finalizeTransferDetails(userPassword: passwordTextField.text!) self.reviewviewmodel.performTransfer() } else { self.popUpMessageError(value: 11, message: "Password was missing") } }) let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: { (action : UIAlertAction!) -> Void in }) cancelAction.setValue(UIColor.black, forKey: "titleTextColor") confirmAction.setValue(UIColor(hex:0xEC1C24), forKey: "titleTextColor") alertController.addAction(cancelAction) alertController.addAction(confirmAction) self.present(alertController, animated: true, completion: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "transferSuccessful" { let transferViewController = segue.destination as! TransferSuccessfulViewController transferViewController.responseDetails = self.reviewviewmodel.getResponseDetails() transferViewController.paymentMethod = self.paymentMode } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } extension ReviewViewController: UITextFieldDelegate { func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { if textField.tag == 51 { textField.tag = 0 return false } return true } }