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.

216 lines
7.5 KiB

6 years ago
  1. //
  2. // WalletSuccessViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 3/1/18.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class WalletSuccessViewController: UIViewController {
  10. @IBOutlet weak var buttonTopConstraint: NSLayoutConstraint!
  11. @IBOutlet weak var viewDetailsHeightConstraint: NSLayoutConstraint!
  12. @IBOutlet weak var viewDetailsTopConstraint: NSLayoutConstraint!
  13. @IBOutlet weak var labelSuccessHeading: UILabel!
  14. @IBOutlet weak var labelSuccessDescription: UILabel!
  15. @IBOutlet weak var labelUserID: UILabel!
  16. @IBOutlet weak var labelUserName: UILabel!
  17. @IBOutlet weak var labelSuccessAmount: UILabel!
  18. @IBOutlet weak var labelTransactionDate: UILabel!
  19. @IBOutlet weak var labelTransactionNumber: UILabel!
  20. @IBOutlet weak var viewDetails: UIView!
  21. @IBOutlet weak var buttonSave: UIButton!
  22. private var webView: UIWebView
  23. private var pdfComposer: PdfComposer!
  24. private var HTMLContent: String!
  25. public var walletviewmodel: WalletViewModel?
  26. public var transaction: Transaction?
  27. override func viewDidLoad() {
  28. super.viewDidLoad()
  29. guard transaction == nil else {
  30. setupTransactionStatementDetails()
  31. return
  32. }
  33. setUpNavBar(id: 203, title: "Wallet to Wallet Transfer")
  34. guard walletviewmodel != nil else {
  35. self.popUpMessageInfo(value: 16, title: "No data", message: "Data not received")
  36. return
  37. }
  38. if walletviewmodel?.getModeIndex() == 1 {
  39. viewDetails.isHidden = true
  40. buttonTopConstraint.constant = buttonTopConstraint.constant - viewDetailsHeightConstraint.constant - viewDetailsTopConstraint.constant
  41. }
  42. let numberFormatter = NumberFormatter()
  43. numberFormatter.numberStyle = NumberFormatter.Style.decimal
  44. if let amount = walletviewmodel?.getAmount(){
  45. let amountNumber = Float(amount)! as NSNumber
  46. if let mode = walletviewmodel?.getModeIndex(){
  47. switch mode {
  48. case 0:
  49. setTransferMessage(amountNumber: amountNumber,numberFormatter: numberFormatter)
  50. case 1:
  51. setRequestMessage(amountNumber: amountNumber,numberFormatter: numberFormatter)
  52. default:
  53. return
  54. }
  55. }
  56. }
  57. if let date = walletviewmodel?.getTransactionResult().date{
  58. labelTransactionDate.text = unixTimeStampToDate(unixTimeStamp: date)
  59. }
  60. if let transactionId = walletviewmodel?.getTransactionResult().transactionId{
  61. labelTransactionNumber.text = transactionId
  62. }
  63. }
  64. /**
  65. Request loan layout
  66. - parameter amountNumber: amount asked for a loan
  67. - parameter numberFormatter: object of NumberFormatter
  68. */
  69. func setRequestMessage(amountNumber: NSNumber, numberFormatter: NumberFormatter){
  70. labelSuccessHeading.text = "Request Successful"
  71. labelSuccessDescription.text = "Your request for loan has been successfully sent to"
  72. if let gmeId = walletviewmodel?.getGMEID(){
  73. labelUserID.text = gmeId
  74. }
  75. if let fullName = walletviewmodel?.getFullName(){
  76. labelUserName.text = "(" + fullName + ")"
  77. }
  78. labelSuccessAmount.text = "Total Amount: " + numberFormatter.string(from: amountNumber)! + " KRW"
  79. }
  80. /**
  81. Transfer money layout'
  82. - parameter amountNumber: amount transferred to others account
  83. - parameter numberFormatter: object of NumberFormatter
  84. */
  85. func setTransferMessage(amountNumber: NSNumber,numberFormatter: NumberFormatter){
  86. labelSuccessHeading.text = "Transfer Successful"
  87. labelSuccessDescription.text = "You have successfully transferred your money to"
  88. if let gmeId = walletviewmodel?.getGMEID(){
  89. labelUserID.text = gmeId
  90. }
  91. if let username = walletviewmodel?.getFullName(){
  92. labelUserName.text = "(" + username + ")"
  93. }
  94. labelSuccessAmount.text = "Total Amount: " + numberFormatter.string(from: amountNumber)! + " KRW"
  95. }
  96. /**
  97. Set transaction statement details
  98. */
  99. func setupTransactionStatementDetails() {
  100. setUpNavBar(id: 204, title: "Transaction Statement")
  101. setUpHeaderMessage(transaction: transaction!)
  102. if let payoutAmountOriginal = transaction?.payoutAmountOriginal{
  103. labelSuccessAmount.text = "Total Amount: " + getCommaAddedAmountString(amountString: payoutAmountOriginal)
  104. }
  105. if let date = transaction?.date{
  106. labelTransactionDate.text = unixTimeStampToDate(unixTimeStamp: date)
  107. }
  108. if let transactionId = transaction?.transactionId{
  109. labelTransactionNumber.text = transactionId
  110. }
  111. }
  112. /**
  113. Set up header message
  114. - parameter transaction: object of class name Transaction
  115. */
  116. func setUpHeaderMessage(transaction: Transaction) {
  117. switch transaction.transactionType {
  118. case "sent":
  119. labelSuccessHeading.text = "Transfer Successful"
  120. labelSuccessDescription.text = "You have successfully transferred your money to"
  121. labelUserID.text = transaction.receiverId
  122. if let receiverName = transaction.receiverName{
  123. labelUserName.text = receiverName
  124. }
  125. case "received":
  126. labelSuccessHeading.text = "Money Transfer"
  127. labelSuccessDescription.text = "You have received money from"
  128. labelUserID.text = transaction.userId
  129. if let senderName = transaction.senderName{
  130. labelUserName.text = senderName
  131. }
  132. default:
  133. return
  134. }
  135. }
  136. override func didReceiveMemoryWarning() {
  137. super.didReceiveMemoryWarning()
  138. // Dispose of any resources that can be recreated.
  139. }
  140. required init?(coder aDecoder: NSCoder) {
  141. self.webView = UIWebView(frame: CGRect.zero)
  142. super.init(coder: aDecoder)
  143. }
  144. /**
  145. Save wallet transaction view into pdf
  146. */
  147. @IBAction func saveWalletTransactionPdf(_ sender: Any) {
  148. pdfComposer = PdfComposer()
  149. let pdfDetails: [String: String] = ["TXDATE": labelTransactionDate.text!,
  150. "TXNUMBER": labelTransactionNumber.text!,
  151. "AMOUNT": "50,000 KRW"]
  152. if let pdfHTML = pdfComposer.renderPdfWallet(pdfDetails: pdfDetails) {
  153. webView = UIWebView(frame: CGRect(x: 0, y: 0, width: 10, height: 10))
  154. view.addSubview(webView)
  155. webView.delegate = self
  156. webView.alpha = 0
  157. webView.loadHTMLString(pdfHTML, baseURL: nil)
  158. HTMLContent = pdfHTML
  159. }
  160. }
  161. @IBAction func showHomeScreen(_ sender: Any) {
  162. goToHomeScreen()
  163. }
  164. }
  165. extension WalletSuccessViewController: UIWebViewDelegate {
  166. func webViewDidFinishLoad(_ webView: UIWebView) {
  167. if self.pdfComposer.exportHTMLContentToPDF(HTMLContent: self.HTMLContent) {
  168. self.popUpMessageInfo(value: 16, title: "File Saved", message: "File is in Documents folder")
  169. } else {
  170. self.popUpMessageInfo(value: 16, title: "Something went wrong", message: "File not saved")
  171. }
  172. }
  173. }