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.

115 lines
3.7 KiB

  1. //
  2. // DatePickerViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 01/10/2018.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class DatePickerViewController: UIViewController {
  10. @IBOutlet weak var fromTextfield: UITextField!
  11. @IBOutlet weak var toTextfield: UITextField!
  12. @IBOutlet weak var fromTitleLabel: UILabel!
  13. @IBOutlet weak var toTitleLabel: UILabel!
  14. @IBOutlet weak var cancelButton: UIButton!
  15. @IBOutlet weak var searchButton: UIButton!
  16. struct StringConstants {
  17. let fromPlaceholderText = "placeholder_from_text".localized()
  18. let toPlaceholderText = "placeholder_to_text".localized()
  19. let cancelButtonText = "cancel_text".localized()
  20. let searchButtonText = "search_text".localized()
  21. }
  22. var completion: ((_ from: String?, _ to: String?) -> ())?
  23. var fromDate: String?
  24. var toDate: String?
  25. var _fromDate: Date? {
  26. didSet {
  27. self.toDatePicker.minimumDate = _fromDate
  28. self.toDatePicker.maximumDate = Date()
  29. }
  30. }
  31. var _toDate: Date?
  32. let fromDatePicker = UIDatePicker()
  33. let toDatePicker = UIDatePicker()
  34. override func viewDidLoad() {
  35. super.viewDidLoad()
  36. setup()
  37. }
  38. // IBActions
  39. @IBAction func cancel(_ sender: Any) {
  40. self.view.endEditing(true)
  41. self.dismiss(animated: true, completion: nil)
  42. }
  43. @IBAction func searcg(_ sender: UIButton) {
  44. self.view.endEditing(true)
  45. self.dismiss(animated: true, completion: {
  46. self.completion?(self.fromDate, self.toDate)
  47. })
  48. }
  49. // private functions
  50. private func setup() {
  51. self.setupToDatePicker()
  52. self.setupFromDatePicker()
  53. self.fromDatePicker.date = Date()
  54. self.handleFromDatePicker(sender: fromDatePicker)
  55. configureLanguage()
  56. // Do any additional setup after loading the view.
  57. }
  58. func configureLanguage() {
  59. self.fromTitleLabel.text = StringConstants().fromPlaceholderText
  60. self.toTitleLabel.text = StringConstants().toPlaceholderText
  61. self.fromTextfield.text = StringConstants().fromPlaceholderText
  62. self.toTextfield.text = StringConstants().toPlaceholderText
  63. self.cancelButton.setTitle(StringConstants().cancelButtonText, for: UIControlState.normal)
  64. self.searchButton.setTitle(StringConstants().searchButtonText, for: UIControlState.normal)
  65. }
  66. private func setupFromDatePicker() {
  67. self.fromDatePicker.datePickerMode = .date
  68. self.fromTextfield.inputView = fromDatePicker
  69. fromDatePicker.maximumDate = Date()
  70. self.fromDatePicker.addTarget(self, action: #selector(handleFromDatePicker(sender:)), for: .valueChanged)
  71. }
  72. @objc private func handleFromDatePicker(sender: UIDatePicker) {
  73. self._fromDate = sender.date
  74. let dateFormatter = DateFormatter()
  75. dateFormatter.dateFormat = AppConstants.dateFormat
  76. let date = dateFormatter.string(from: sender.date)
  77. self.fromTextfield.text = date
  78. self.fromDate = date
  79. }
  80. private func setupToDatePicker() {
  81. self.toDatePicker.datePickerMode = .date
  82. self.toTextfield.inputView = toDatePicker
  83. toDatePicker.maximumDate = self._fromDate
  84. self.toDatePicker.addTarget(self, action: #selector(handleToDatePicker(sender:)), for: .valueChanged)
  85. }
  86. @objc private func handleToDatePicker(sender: UIDatePicker) {
  87. self._toDate = sender.date
  88. let dateFormatter = DateFormatter()
  89. dateFormatter.dateFormat = AppConstants.dateFormat
  90. let date = dateFormatter.string(from: sender.date)
  91. self.toTextfield.text = date
  92. self.toDate = date
  93. }
  94. }