Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- import os.log
- import CoreActionSheetPicker
- class EventEditViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate {
- //Properties
- var event: Event?
- var viewMode: String?
- var newDate: Date?
- var datePicker = UIDatePicker()
- var startDateTime: Date?
- @IBOutlet weak var startTimeButton: UIButton!
- @IBOutlet weak var startDateButton: UIButton!
- @IBOutlet weak var endTimeButton: UIButton!
- @IBOutlet weak var endDateButton: UIButton!
- @IBOutlet weak var saveButton: UIBarButtonItem!
- @IBOutlet weak var eventNameTextField: UITextField!
- @IBOutlet weak var eventLocationTextField: UITextField!
- override func viewDidLoad() {
- super.viewDidLoad()
- eventNameTextField.delegate = self
- eventLocationTextField.delegate = self
- var date = Date()
- formatDateTime(type: "startTime", data: date, exists: false)
- formatDateTime(type: "startDate", data: date, exists: false)
- formatDateTime(type: "endTime", data: date, exists: false)
- formatDateTime(type: "endDate", data: date, exists: false)
- if let event = event {
- navigationItem.title = event.eventName
- eventNameTextField.text = event.eventName
- eventLocationTextField.text = event.eventLocation
- }
- checkValidEventFields()
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- }
- func formatDateTime(type: String, data: Date, exists: Bool){
- var dateTime = Date()
- let formatter = DateFormatter()
- if(type == "startTime") {
- if (exists == false) {
- formatter.dateFormat = "00:00"
- } else {
- dateTime = data
- formatter.dateFormat = "HH:mm"
- }
- startDateTime = dateTime
- let dateTimeResult = formatter.string(from: dateTime)
- startTimeButton.setTitle(dateTimeResult, for: .normal)
- } else if(type == "startDate") {
- if (exists == false) {
- formatter.dateFormat = "dd/MM/yy"
- } else {
- dateTime = data
- formatter.dateFormat = "dd/MM/yy"
- }
- startDateTime = dateTime
- let dateTimeResult = formatter.string(from: dateTime)
- startDateButton.setTitle(dateTimeResult, for: .normal)
- } else if(type == "endTime") {
- if (exists == false) {
- formatter.dateFormat = "00:00"
- } else {
- dateTime = data
- formatter.dateFormat = "HH:mm"
- }
- let dateTimeResult = formatter.string(from: dateTime)
- endTimeButton.setTitle(dateTimeResult, for: .normal)
- } else if(type == "endDate") {
- if (exists == false) {
- formatter.dateFormat = "dd/MM/yy"
- } else {
- dateTime = data
- formatter.dateFormat = "dd/MM/yy"
- }
- let dateTimeResult = formatter.string(from: dateTime)
- endDateButton.setTitle(dateTimeResult, for: .normal)
- }
- }
- @IBAction func setStartTime(_ sender: UIButton) {
- let datePicker = ActionSheetDatePicker(title: "Set Start Time:", datePickerMode: UIDatePickerMode.time, selectedDate: Date(), target: self, action: #selector(self.donePickerStartTime), origin: sender.superview!.superview)!
- datePicker.minuteInterval = 20
- datePicker.show()
- }
- @IBAction func setStartDate(_ sender: UIButton) {
- let datePicker = ActionSheetDatePicker(title: "Set Start Date:", datePickerMode: UIDatePickerMode.date, selectedDate: Date(), target: self, action: #selector(self.donePickerStartDate), origin: sender.superview!.superview)!
- datePicker.minuteInterval = 20
- datePicker.show()
- }
- @IBAction func setEndTime(_ sender: UIButton) {
- let datePicker = ActionSheetDatePicker(title: "Set End Time:", datePickerMode: UIDatePickerMode.time, selectedDate: Date(), target: self, action: #selector(self.donePickerEndDate), origin: sender.superview!.superview)!
- datePicker.minuteInterval = 20
- datePicker.show()
- }
- @IBAction func setEndDate(_ sender: UIButton) {
- let datePicker = ActionSheetDatePicker(title: "Set End Date:", datePickerMode: UIDatePickerMode.date, selectedDate: Date(), target: self, action: #selector(self.donePickerEndDate), origin: sender.superview!.superview)!
- datePicker.minuteInterval = 20
- datePicker.show()
- }
- func donePickerStartTime(datePicked: Date){
- formatDateTime(type: "startTime", data: datePicked, exists: true)
- self.view.endEditing(true)
- }
- func donePickerStartDate(datePicked: Date){
- formatDateTime(type: "startDate", data: datePicked, exists: true)
- self.view.endEditing(true)
- }
- func donePickerEndTime(datePicked: Date){
- formatDateTime(type: "endTime", data: datePicked, exists: true)
- self.view.endEditing(true)
- }
- func donePickerEndDate(datePicked: Date){
- formatDateTime(type: "endDate", data: datePicked, exists: true)
- self.view.endEditing(true)
- }
- func checkValidEventFields() {
- let eventNameText = eventNameTextField.text ?? ""
- let eventLocationText = eventLocationTextField.text ?? ""
- saveButton.isEnabled = !eventNameText.isEmpty
- //|| !eventStartDateText.isEmpty || !eventLocationText.isEmpty
- }
- //Text field
- func textFieldShouldReturn(_ textField: UITextField) -> Bool {
- textField.resignFirstResponder()
- return true
- }
- func textFieldDidEndEditing(_ textField: UITextField) {
- if (textField == eventNameTextField) {
- checkValidEventFields()
- navigationItem.title = eventNameTextField.text
- }
- }
- func textFieldDidBeginEditing(_ textField: UITextField) {
- //Disable the Save button whilst editing
- }
- // MARK: - Navigation
- @IBAction func cancel(_ sender: UIBarButtonItem) {
- let isPresentingInAddEventMode = presentingViewController is UINavigationController
- if isPresentingInAddEventMode {
- dismiss(animated: true, completion: nil)
- }
- else if let owningNavigationController = navigationController{
- owningNavigationController.popViewController(animated: true)
- }
- else {
- fatalError("The EventViewController is not inside a navigation controller.")
- }
- }
- @IBAction func saveEvent(_ sender: Any) {
- if (event == nil) {
- print("null")
- }
- else {
- print("not null")
- }
- print(startDateTime)
- let eventID = detectEventID()
- let eventName = eventNameTextField.text ?? ""
- let eventLocation = eventLocationTextField.text ?? ""
- let eventStartDate = ""
- let retrievedToken:String = KeychainWrapper.standard.string(forKey: "webToken")!
- if (eventName.isEmpty || eventStartDate.isEmpty || eventLocation.isEmpty) {
- displayAlert(alertTitle: "Empty fields", alertMessage: "Please fill in all event details")
- return
- }
- else {
- HTTPRequest.createEventRequest(eventID: eventID, eventName: eventName, eventStartDate: eventStartDate, eventLocation: eventLocation, token: retrievedToken, callback: completeEventCreation)
- }
- }
- func detectEventID() -> String {
- if (viewMode == "createEvent") {
- var e = Event(
- eventID: UUID().uuidString,
- eventName: "",
- eventStartDate: "",
- eventLocation: ""
- )
- self.event = e
- } else if (viewMode == "showEvent") {
- print(event!.eventID)
- }
- return event!.eventID
- }
- func completeEventCreation(result: Dictionary<String, String>) -> Void {
- let isEventAdded = (result["status"]! == "Success")
- let statusMessage:String = result["message"]!
- if (isEventAdded) {
- print("Event Added")
- } else {
- DispatchQueue.main.async(execute: {
- //display alert message with confirmation
- self.displayAlert(alertTitle: "Alert", alertMessage: statusMessage)
- })
- }
- }
- func displayAlert(alertTitle: String, alertMessage: String) {
- let alertController = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert)
- let OKAction = UIAlertAction(title: "OK", style: .default) { (action) in }
- alertController.addAction(OKAction)
- present(alertController, animated: true, completion: nil)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement