// // MessageComposeViewController.swift // GMERemittance // // Created by gme_2 on 02/10/2018. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit class MessageComposeViewController: UIViewController { struct StringConstants { let headerText = "support_description_text".localized() let submitText = "submit_text".localized() let cancelText = "cancel_text".localized() let subjectAmendmentText = "request_for_amendment_text".localized() let subjectCancelText = "request_for_cancellation_text".localized() let requestMessagePlaceHolderText = "your_request_text".localized() } // MARK: IBOutlets @IBOutlet weak var headerLabel: UILabel! @IBOutlet weak var submitButton: UIButton! @IBOutlet weak var cancelButton: UIButton! @IBOutlet weak var textFieldSubject: UITextField! @IBOutlet weak var textViewMessage: UITextView! // MARK: Properties var type: MailBoxType? var controlNO: String? var transactionId: String? var presenter: MessageComposeModuleInterface? // MARK: VC's Life cycle override func viewDidLoad() { super.viewDidLoad() self.setup() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.setupNormalNavigation(color: .themeRedDark) self.navigationItem.title = "support_text".localized() } // MARK: IBActions @IBAction func cancelMessage(_ sender: Any) { navigationController?.popViewController(animated: true) dismiss(animated: true, completion: nil) } // MARK: Other Functions private func setup() { // all setup should be done here self.textViewMessage.text = StringConstants().requestMessagePlaceHolderText textViewMessage.textColor = UIColor.themeText textViewMessage.layer.borderWidth = 0.3 textViewMessage.layer.borderColor = UIColor.themeText.cgColor textViewMessage.layer.backgroundColor = UIColor.white.cgColor textViewMessage.delegate = self let barbutton = UIBarButtonItem( image: #imageLiteral(resourceName: "backIconBlack"), style: .plain, target: self, action: #selector(self.cancelMessage(_:)) ) self.navigationItem.leftBarButtonItem = barbutton setupSubject() configureText() } private func configureText() { self.headerLabel.text = StringConstants().headerText self.submitButton.setTitle(StringConstants().submitText, for: UIControl.State.normal) self.cancelButton.setTitle(StringConstants().cancelText, for: UIControl.State.normal) } private func setupSubject() { if let type = self.type { switch type { case .cancel: self.textFieldSubject.text = "request_for_cancellation_text".localized() case .edit: self.textFieldSubject.text = "request_for_amendment_text".localized() case .pending: self.textFieldSubject.text = "request_for_cancellation_text".localized() } } self.textFieldSubject.isUserInteractionEnabled = false } @IBAction func submit(_ sender: UIButton) { let subject = self.textFieldSubject.text! let body = self.textViewMessage.text ?? "" let controlNo = self.controlNO ?? "" let transactionId = self.transactionId ?? "" if body.isEmpty || body == "" || body == "Your request here" { self.alert(message: "Remarks is required") } else { if let type = self.type { switch type { case .cancel: self.presenter?.cancel(control: controlNo, transId: transactionId, subject: subject, body: body) case .edit: self.presenter?.edit(control: controlNo, transId: transactionId, subject: subject, body: body) case .pending: self.presenter?.pending(control: controlNo, transId: transactionId, subject: subject, body: body) } } } } } // MARK: MessageComposeViewInterface extension MessageComposeViewController: MessageComposeViewInterface { func show(model: SuccessMessage) { self.alert( type: .normal, message: model.message, title: "success_text".localized() ) { self.presenter?.dismiss() } } func show(error: String) { self.alert(type: .error, message: error) } } extension MessageComposeViewController: UITextViewDelegate { func textViewDidBeginEditing(_ textView: UITextView) { if textView.textColor == UIColor.themeText { textView.text = nil textView.textColor = UIColor.init(hex: "#4a4a4a") } } func textViewDidEndEditing(_ textView: UITextView) { if textViewMessage.text.isEmpty { textViewMessage.text = "your_request_text".localized() textViewMessage.textColor = UIColor.themeText } } }