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.

155 lines
4.7 KiB

2 years ago
2 years ago
  1. //
  2. // MessageComposeViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 02/10/2018.
  6. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class MessageComposeViewController: UIViewController {
  10. struct StringConstants {
  11. let headerText = "support_description_text".localized()
  12. let submitText = "submit_text".localized()
  13. let cancelText = "cancel_text".localized()
  14. let subjectAmendmentText = "request_for_amendment_text".localized()
  15. let subjectCancelText = "request_for_cancellation_text".localized()
  16. let requestMessagePlaceHolderText = "your_request_text".localized()
  17. }
  18. // MARK: IBOutlets
  19. @IBOutlet weak var headerLabel: UILabel!
  20. @IBOutlet weak var submitButton: UIButton!
  21. @IBOutlet weak var cancelButton: UIButton!
  22. @IBOutlet weak var textFieldSubject: UITextField!
  23. @IBOutlet weak var textViewMessage: UITextView!
  24. // MARK: Properties
  25. var type: MailBoxType?
  26. var controlNO: String?
  27. var transactionId: String?
  28. var presenter: MessageComposeModuleInterface?
  29. // MARK: VC's Life cycle
  30. override func viewDidLoad() {
  31. super.viewDidLoad()
  32. self.setup()
  33. }
  34. override func viewWillAppear(_ animated: Bool) {
  35. super.viewWillAppear(animated)
  36. self.setupNormalNavigation(color: .themeRedDark)
  37. self.navigationItem.title = "support_text".localized()
  38. }
  39. // MARK: IBActions
  40. @IBAction func cancelMessage(_ sender: Any) {
  41. navigationController?.popViewController(animated: true)
  42. dismiss(animated: true, completion: nil)
  43. }
  44. // MARK: Other Functions
  45. private func setup() {
  46. // all setup should be done here
  47. self.textViewMessage.text = StringConstants().requestMessagePlaceHolderText
  48. textViewMessage.textColor = UIColor.themeText
  49. textViewMessage.layer.borderWidth = 0.3
  50. textViewMessage.layer.borderColor = UIColor.themeText.cgColor
  51. textViewMessage.layer.backgroundColor = UIColor.white.cgColor
  52. textViewMessage.delegate = self
  53. let barbutton = UIBarButtonItem(
  54. image: #imageLiteral(resourceName: "backIconBlack"),
  55. style: .plain,
  56. target: self,
  57. action: #selector(self.cancelMessage(_:))
  58. )
  59. self.navigationItem.leftBarButtonItem = barbutton
  60. setupSubject()
  61. configureText()
  62. }
  63. private func configureText() {
  64. self.headerLabel.text = StringConstants().headerText
  65. self.submitButton.setTitle(StringConstants().submitText, for: UIControl.State.normal)
  66. self.cancelButton.setTitle(StringConstants().cancelText, for: UIControl.State.normal)
  67. }
  68. private func setupSubject() {
  69. if let type = self.type {
  70. switch type {
  71. case .cancel:
  72. self.textFieldSubject.text = "request_for_cancellation_text".localized()
  73. case .edit:
  74. self.textFieldSubject.text = "request_for_amendment_text".localized()
  75. case .pending:
  76. self.textFieldSubject.text = "request_for_cancellation_text".localized()
  77. }
  78. }
  79. self.textFieldSubject.isUserInteractionEnabled = false
  80. }
  81. @IBAction func submit(_ sender: UIButton) {
  82. let subject = self.textFieldSubject.text!
  83. let body = self.textViewMessage.text ?? ""
  84. let controlNo = self.controlNO ?? ""
  85. let transactionId = self.transactionId ?? ""
  86. if body.isEmpty || body == "" || body == "Your request here" {
  87. self.alert(message: "Remarks is required")
  88. } else {
  89. if let type = self.type {
  90. switch type {
  91. case .cancel:
  92. self.presenter?.cancel(control: controlNo, transId: transactionId, subject: subject, body: body)
  93. case .edit:
  94. self.presenter?.edit(control: controlNo, transId: transactionId, subject: subject, body: body)
  95. case .pending:
  96. self.presenter?.pending(control: controlNo, transId: transactionId, subject: subject, body: body)
  97. }
  98. }
  99. }
  100. }
  101. }
  102. // MARK: MessageComposeViewInterface
  103. extension MessageComposeViewController: MessageComposeViewInterface {
  104. func show(model: SuccessMessage) {
  105. self.alert(
  106. type: .normal,
  107. message: model.message,
  108. title: "success_text".localized()
  109. ) {
  110. self.presenter?.dismiss()
  111. }
  112. }
  113. func show(error: String) {
  114. self.alert(type: .error, message: error)
  115. }
  116. }
  117. extension MessageComposeViewController: UITextViewDelegate {
  118. func textViewDidBeginEditing(_ textView: UITextView) {
  119. if textView.textColor == UIColor.themeText {
  120. textView.text = nil
  121. textView.textColor = UIColor.init(hex: "#4a4a4a")
  122. }
  123. }
  124. func textViewDidEndEditing(_ textView: UITextView) {
  125. if textViewMessage.text.isEmpty {
  126. textViewMessage.text = "your_request_text".localized()
  127. textViewMessage.textColor = UIColor.themeText
  128. }
  129. }
  130. }