Advertisement
Guest User

Untitled

a guest
Jul 18th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 9.13 KB | None | 0 0
  1. import UIKit
  2. import os.log
  3. import CoreActionSheetPicker
  4.  
  5. class EventEditViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate {
  6.    
  7.     //Properties
  8.     var event: Event?
  9.     var viewMode: String?
  10.     var newDate: Date?
  11.     var datePicker = UIDatePicker()
  12.     var startDateTime: Date?
  13.    
  14.  
  15.     @IBOutlet weak var startTimeButton: UIButton!
  16.     @IBOutlet weak var startDateButton: UIButton!
  17.     @IBOutlet weak var endTimeButton: UIButton!
  18.     @IBOutlet weak var endDateButton: UIButton!
  19.    
  20.     @IBOutlet weak var saveButton: UIBarButtonItem!
  21.     @IBOutlet weak var eventNameTextField: UITextField!
  22.     @IBOutlet weak var eventLocationTextField: UITextField!
  23.    
  24.     override func viewDidLoad() {
  25.         super.viewDidLoad()
  26.         eventNameTextField.delegate = self
  27.         eventLocationTextField.delegate = self
  28.         var date = Date()
  29.    
  30.         formatDateTime(type: "startTime", data: date, exists: false)
  31.         formatDateTime(type: "startDate", data: date, exists: false)
  32.         formatDateTime(type: "endTime", data: date, exists: false)
  33.         formatDateTime(type: "endDate", data: date, exists: false)
  34.        
  35.         if let event = event {
  36.             navigationItem.title = event.eventName
  37.             eventNameTextField.text = event.eventName
  38.             eventLocationTextField.text = event.eventLocation
  39.         }
  40.         checkValidEventFields()
  41.     }
  42.    
  43.     override func didReceiveMemoryWarning() {
  44.         super.didReceiveMemoryWarning()
  45.     }
  46.    
  47.     func formatDateTime(type: String, data: Date, exists: Bool){
  48.         var dateTime = Date()
  49.         let formatter = DateFormatter()
  50.        
  51.         if(type == "startTime") {
  52.             if (exists == false) {
  53.                 formatter.dateFormat = "00:00"
  54.             } else {
  55.                 dateTime = data
  56.                 formatter.dateFormat = "HH:mm"
  57.             }
  58.             startDateTime = dateTime
  59.             let dateTimeResult = formatter.string(from: dateTime)
  60.             startTimeButton.setTitle(dateTimeResult, for: .normal)
  61.            
  62.         } else if(type == "startDate") {
  63.             if (exists == false) {
  64.                 formatter.dateFormat = "dd/MM/yy"
  65.             } else {
  66.                 dateTime = data
  67.                 formatter.dateFormat = "dd/MM/yy"
  68.             }
  69.             startDateTime = dateTime
  70.             let dateTimeResult = formatter.string(from: dateTime)
  71.             startDateButton.setTitle(dateTimeResult, for: .normal)
  72.         } else if(type == "endTime") {
  73.             if (exists == false) {
  74.                 formatter.dateFormat = "00:00"
  75.             } else {
  76.                 dateTime = data
  77.                 formatter.dateFormat = "HH:mm"
  78.             }
  79.             let dateTimeResult = formatter.string(from: dateTime)
  80.             endTimeButton.setTitle(dateTimeResult, for: .normal)
  81.         } else if(type == "endDate") {
  82.             if (exists == false) {
  83.                 formatter.dateFormat = "dd/MM/yy"
  84.             } else {
  85.                 dateTime = data
  86.                 formatter.dateFormat = "dd/MM/yy"
  87.             }
  88.             let dateTimeResult = formatter.string(from: dateTime)
  89.             endDateButton.setTitle(dateTimeResult, for: .normal)
  90.         }
  91.     }
  92.    
  93.     @IBAction func setStartTime(_ sender: UIButton) {
  94.         let datePicker = ActionSheetDatePicker(title: "Set Start Time:", datePickerMode: UIDatePickerMode.time, selectedDate: Date(), target: self, action: #selector(self.donePickerStartTime), origin: sender.superview!.superview)!
  95.        
  96.         datePicker.minuteInterval = 20
  97.        
  98.         datePicker.show()
  99.     }
  100.    
  101.     @IBAction func setStartDate(_ sender: UIButton) {
  102.         let datePicker = ActionSheetDatePicker(title: "Set Start Date:", datePickerMode: UIDatePickerMode.date, selectedDate: Date(), target: self, action: #selector(self.donePickerStartDate), origin: sender.superview!.superview)!
  103.        
  104.         datePicker.minuteInterval = 20
  105.        
  106.         datePicker.show()
  107.     }
  108.    
  109.     @IBAction func setEndTime(_ sender: UIButton) {
  110.         let datePicker = ActionSheetDatePicker(title: "Set End Time:", datePickerMode: UIDatePickerMode.time, selectedDate: Date(), target: self, action: #selector(self.donePickerEndDate), origin: sender.superview!.superview)!
  111.        
  112.         datePicker.minuteInterval = 20
  113.        
  114.         datePicker.show()
  115.     }
  116.    
  117.     @IBAction func setEndDate(_ sender: UIButton) {
  118.         let datePicker = ActionSheetDatePicker(title: "Set End Date:", datePickerMode: UIDatePickerMode.date, selectedDate: Date(), target: self, action: #selector(self.donePickerEndDate), origin: sender.superview!.superview)!
  119.        
  120.         datePicker.minuteInterval = 20
  121.        
  122.         datePicker.show()
  123.     }
  124.    
  125.     func donePickerStartTime(datePicked: Date){
  126.         formatDateTime(type: "startTime", data: datePicked, exists: true)
  127.         self.view.endEditing(true)
  128.     }
  129.    
  130.     func donePickerStartDate(datePicked: Date){
  131.         formatDateTime(type: "startDate", data: datePicked, exists: true)
  132.         self.view.endEditing(true)
  133.     }
  134.    
  135.     func donePickerEndTime(datePicked: Date){
  136.         formatDateTime(type: "endTime", data: datePicked, exists: true)
  137.         self.view.endEditing(true)
  138.     }
  139.    
  140.     func donePickerEndDate(datePicked: Date){
  141.         formatDateTime(type: "endDate", data: datePicked, exists: true)
  142.         self.view.endEditing(true)
  143.     }
  144.    
  145.     func checkValidEventFields() {
  146.         let eventNameText = eventNameTextField.text ?? ""
  147.         let eventLocationText = eventLocationTextField.text ?? ""
  148.        
  149.         saveButton.isEnabled = !eventNameText.isEmpty
  150.        
  151.         //|| !eventStartDateText.isEmpty || !eventLocationText.isEmpty
  152.     }
  153.    
  154.     //Text field
  155.     func textFieldShouldReturn(_ textField: UITextField) -> Bool {
  156.         textField.resignFirstResponder()
  157.         return true
  158.     }
  159.    
  160.     func textFieldDidEndEditing(_ textField: UITextField) {
  161.         if (textField == eventNameTextField) {
  162.             checkValidEventFields()
  163.             navigationItem.title = eventNameTextField.text
  164.         }
  165.     }
  166.    
  167.     func textFieldDidBeginEditing(_ textField: UITextField) {
  168.         //Disable the Save button whilst editing
  169.     }
  170.    
  171.    
  172.     // MARK: - Navigation
  173.  
  174.     @IBAction func cancel(_ sender: UIBarButtonItem) {
  175.         let isPresentingInAddEventMode = presentingViewController is UINavigationController
  176.        
  177.         if isPresentingInAddEventMode {
  178.             dismiss(animated: true, completion: nil)
  179.         }
  180.         else if let owningNavigationController = navigationController{
  181.             owningNavigationController.popViewController(animated: true)
  182.         }
  183.         else {
  184.             fatalError("The EventViewController is not inside a navigation controller.")
  185.         }
  186.     }
  187.    
  188.     @IBAction func saveEvent(_ sender: Any) {
  189.         if (event == nil) {
  190.             print("null")
  191.         }
  192.         else {
  193.             print("not null")
  194.         }
  195.        
  196.         print(startDateTime)
  197.        
  198.         let eventID = detectEventID()
  199.         let eventName = eventNameTextField.text ?? ""
  200.         let eventLocation = eventLocationTextField.text ?? ""
  201.         let eventStartDate = ""
  202.         let retrievedToken:String = KeychainWrapper.standard.string(forKey: "webToken")!
  203.  
  204.         if (eventName.isEmpty || eventStartDate.isEmpty || eventLocation.isEmpty) {
  205.             displayAlert(alertTitle: "Empty fields", alertMessage: "Please fill in all event details")
  206.             return
  207.         }
  208.         else {
  209.             HTTPRequest.createEventRequest(eventID: eventID, eventName: eventName, eventStartDate: eventStartDate, eventLocation: eventLocation, token: retrievedToken, callback: completeEventCreation)
  210.         }
  211.  
  212.     }
  213.    
  214.     func detectEventID() -> String {
  215.         if (viewMode == "createEvent") {
  216.             var e = Event(
  217.                 eventID: UUID().uuidString,
  218.                 eventName: "",
  219.                 eventStartDate: "",
  220.                 eventLocation: ""
  221.             )
  222.            
  223.             self.event = e
  224.         } else if (viewMode == "showEvent") {
  225.             print(event!.eventID)
  226.         }
  227.         return event!.eventID
  228.     }
  229.    
  230.    
  231.     func completeEventCreation(result: Dictionary<String, String>) -> Void {
  232.    
  233.         let isEventAdded = (result["status"]! == "Success")
  234.         let statusMessage:String = result["message"]!
  235.                
  236.         if (isEventAdded) {
  237.             print("Event Added")
  238.         } else {
  239.             DispatchQueue.main.async(execute: {
  240.                 //display alert message with confirmation
  241.                 self.displayAlert(alertTitle: "Alert", alertMessage: statusMessage)
  242.             })
  243.         }
  244.     }
  245.    
  246.    
  247.     func displayAlert(alertTitle: String, alertMessage: String) {
  248.         let alertController = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert)
  249.        
  250.         let OKAction = UIAlertAction(title: "OK", style: .default) { (action) in }
  251.         alertController.addAction(OKAction)
  252.        
  253.         present(alertController, animated: true, completion: nil)
  254.     }
  255.    
  256. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement