@@ -7,34 +7,194 @@
//
import UIKit
import Firebase

class DateTableViewController: UITableViewController {

var eventObject: addEvent!
var imageName: String!

@IBOutlet weak var datePickerView: UIDatePicker!


override func viewDidLoad() {
print("The category is \(eventObject.category)")
}

@IBAction func addEvent(_ sender: Any) {





// add event to the database.


// create a string for the google maps api.
let baseUrl = "https://maps.googleapis.com/maps/api/geocode/json?"

// store the api key
let apikey = "AIzaSyCBbEHnpzqPwuD4FITiwVakMq2HjsBA5sw"

// get the location from the text field.
let parameterStr = eventObject.location

// temporarilly store longitude and latitude with default values
var longitude = 0.0
var latitude = 0.0

// search and replace in a string
let replaceStr = parameterStr.replacingOccurrences(of: " ", with: "+")

// create the finished string to send a request to.
let urlStr = "\(baseUrl)address=\(replaceStr)&key=\(apikey)"

// create a url.
let url = URL(string: urlStr)


var formatter = DateFormatter()
formatter.dateFormat = "MM-dd-YYYY hh:mm"
eventObject.datetime = formatter.string(from: datePickerView.date)


DispatchQueue.global().async {

self.imageName = NSUUID().uuidString

let storageRef = FIRStorage.storage().reference().child("\(self.imageName!).png")

if let uploadData = UIImagePNGRepresentation(self.eventObject.image) {

storageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in

if error != nil {

}
else {
return
}

if let eventImageURL = metadata?.downloadURL()?.absoluteString {

self.eventObject.imageUrl = eventImageURL

print("THE IMAGE URL IS \(self.eventObject.imageUrl)")
}

})

}
}




// run this code on a background thread.
DispatchQueue.global().async {





// create a URLSession task to be completed.
let task = URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in

if let data = data {


// get the geocoding data from google maps api as JSON
let json = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as! NSDictionary

// access the necessary longitude and latitude information
if let result = json["results"] as? NSArray {
if let geometry = (result[0] as! NSDictionary)["geometry"] {
if let location = geometry as? NSDictionary {
if let loc = location["location"] as? NSDictionary {
longitude = loc["lat"]! as! Double
latitude = loc["lng"]! as! Double

// run this code on the main thread.
DispatchQueue.main.async {

// create a reference to firebase database.
let ref: FIRDatabaseReference = FIRDatabase.database().reference()

// create an access point to add info to the database.
let db = DBAccessObject(DBAccessObj: ref)

// add the event to the database.
db.addEventTreeStructure(eventRoot: "Events",attendees: [], title:
self.eventObject.title, description: self.eventObject.description, avatar: self.eventObject.imageUrl,Category: self.eventObject.category,images: [], startDate: self.eventObject.datetime, longitude: longitude, latitude: latitude, placeName: self.eventObject.eventPlaceName, host: self.eventObject.host)




} // end DispatchQueue.main.async
}



}

}
}


}

if let error = error {
print("the error is \(error)")
}



}) // end task
// if the task is suspended resume it.
task.resume()


let flashMessageController = UIAlertController(title: "Eventure", message: "Successfully Created Event", preferredStyle: UIAlertControllerStyle.alert)
flashMessageController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))
self.present(flashMessageController, animated: true, completion: nil)



} // end of background thread.




}








override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

if segue.identifier == "eventSuccess"{
if segue.identifier == "eventSuccess" {



var formatter = DateFormatter()
formatter.dateFormat = "MM dd, YYYY"
eventObject.datetime = formatter.string(from: datePickerView.date)
let successVC = (segue.destination as! MapViewController)

let successVC = (segue.destination as! EventSuccessViewController)
successVC.eventObject = eventObject


}


}


}


}


@@ -15,6 +15,7 @@ class EditProfileViewController: UIViewController, UIImagePickerControllerDelega
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var lastName: UITextField!
@IBOutlet weak var firstName: UITextField!
@IBOutlet weak var age: UITextField!

@IBAction func submit(_ sender: Any) {
let storageRef = FIRStorage.storage().reference().child("avatar.png")
@@ -42,6 +43,20 @@ class EditProfileViewController: UIViewController, UIImagePickerControllerDelega
let uid = FIRAuth.auth()?.currentUser?.uid
FIRDatabase.database().reference().child("Users/"+uid!+"/firstName").setValue(firstName.text)
FIRDatabase.database().reference().child("Users/"+uid!+"/lastName").setValue(lastName.text)

FIRDatabase.database().reference().child("Users/"+uid!+"/age").setValue(age.text)


let flashMessageController = UIAlertController(title: "Eventure", message: "Successfully Updated Profile", preferredStyle: UIAlertControllerStyle.alert)
flashMessageController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))
self.present(flashMessageController, animated: true, completion: nil)


firstName.text = ""
lastName.text = ""
age.text = ""


}


@@ -15,19 +15,23 @@ class EventInfoTableViewController: UITableViewController {
@IBOutlet weak var descriptionField: UITextField!
@IBOutlet weak var titleField: UITextField!

@IBOutlet weak var hostName: UITextField!
@IBOutlet weak var placeName: UITextField!
@IBOutlet weak var locationField: UITextField!
override func viewDidLoad() {

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

if segue.identifier == "sendTitleInfo" {
if segue.identifier == "sendEventInfo" {


eventObject.title = self.titleField.text!
eventObject.description = self.descriptionField.text!
eventObject.location = self.locationField.text!
eventObject.eventPlaceName = self.placeName.text!
self.eventObject.host = hostName.text!

let catVC = (segue.destination as! CategoryTableViewController)

@@ -9,6 +9,7 @@
import UIKit

import Firebase
import FirebaseAuth


class EventSuccessViewController: UIViewController {
@@ -17,135 +18,7 @@ class EventSuccessViewController: UIViewController {
var imageName: String!

override func viewDidLoad() {

// add event to the database.


// create a string for the google maps api.
let baseUrl = "https://maps.googleapis.com/maps/api/geocode/json?"

// store the api key
let apikey = "AIzaSyCBbEHnpzqPwuD4FITiwVakMq2HjsBA5sw"

// get the location from the text field.
let parameterStr = eventObject.location

// temporarilly store longitude and latitude with default values
var longitude = 0.0
var latitude = 0.0

// search and replace in a string
let replaceStr = parameterStr.replacingOccurrences(of: " ", with: "+")

// create the finished string to send a request to.
let urlStr = "\(baseUrl)address=\(replaceStr)&key=\(apikey)"

// create a url.
let url = URL(string: urlStr)


DispatchQueue.global().async {

self.imageName = NSUUID().uuidString

let storageRef = FIRStorage.storage().reference().child("\(self.imageName!).png")

if let uploadData = UIImagePNGRepresentation(self.eventObject.image) {

storageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in

if error != nil {

}
else {
return
}



})

}




// run this code on a background thread.
DispatchQueue.global().async {

// create a URLSession task to be completed.
let task = URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in

if let data = data {


// get the geocoding data from google maps api as JSON
let json = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as! NSDictionary

// access the necessary longitude and latitude information
if let result = json["results"] as? NSArray {
if let geometry = (result[0] as! NSDictionary)["geometry"] {
if let location = geometry as? NSDictionary {
if let loc = location["location"] as? NSDictionary {
longitude = loc["lat"]! as! Double
latitude = loc["lng"]! as! Double

// run this code on the main thread.
DispatchQueue.main.async {

// create a reference to firebase database.
let ref: FIRDatabaseReference = FIRDatabase.database().reference()

// create an access point to add info to the database.
let db = DBAccessObject(DBAccessObj: ref)

// add the event to the database.
db.addEventTreeStructure(eventRoot: "Events",attendees: [], title:
self.eventObject.title, description: self.eventObject.description, avatar: self.imageName,Category: self.eventObject.category, chatChannel: 0, images: [], startDate: self.eventObject.datetime, longitude: longitude, latitude: latitude)




} // end DispatchQueue.main.async
}



}

}
}


}

if let error = error {
print("the error is \(error)")
}



}) // end task
// if the task is suspended resume it.
task.resume()

} // end of background thread.



}








}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

@@ -66,8 +66,23 @@ class EventsProfileViewController: UIViewController {
let eventTitle = dictionary?["title"] as? String
self.eventTitle.text = eventTitle

//let eventImage = dictionary?["eventImage"] as? String
//self.eventImage.image = eventImage
let eventImage = dictionary?["avatar"] as? String
let url = URL(string: eventImage!)
let urlRequest = URLRequest(url: url!)
let task = URLSession.shared.dataTask(with: urlRequest, completionHandler: { (data, response, error) in

if error != nil {
return
}

DispatchQueue.main.async {

self.eventImage.image = UIImage.init(data: data!)

}

})
task.resume()

let eventDescription = dictionary?["description"] as? String
self.eventDescription.text = eventDescription
@@ -81,6 +96,7 @@ class EventsProfileViewController: UIViewController {
let eventHost = dictionary?["eventHost"] as? String
self.eventHost.text = "Hosted by: " + eventHost!


let eventLocationAddress = dictionary?["eventLocationAddress"] as? String
self.eventLocationAddress.text = eventLocationAddress

@@ -96,8 +112,12 @@ class EventsProfileViewController: UIViewController {
func addMyselfToEvent(withEventId eventId: String) {
//Grabes current event by ID then adds the current user into the attendees list.
FIRDatabase.database().reference().child("Events").child(eventId).child("attendees").child(myUserId!).setValue(true)
// After function is ran the segue will execute progromatticly
self.performSegue(withIdentifier: "SignupSuccessSegue", sender: nil)

let flashMessageController = UIAlertController(title: "Eventure", message: "Successfully Signed Up", preferredStyle: UIAlertControllerStyle.alert)
flashMessageController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))
self.present(flashMessageController, animated: true, completion: nil)


}

override func didReceiveMemoryWarning() {

Large diffs are not rendered by default.

@@ -71,8 +71,11 @@ class MapViewController: UIViewController {
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let uploadImgVC = (segue.destination as! UploadImageTableViewController)
if segue.identifier == "addEventSegue" {
let uploadImgVC = (segue.destination as! UploadImageTableViewController)
}
}


}

@@ -10,6 +10,7 @@ import UIKit

import UIKit
import FirebaseStorage
import FirebaseAuth

class UploadImageTableViewController: UITableViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@@ -120,7 +121,7 @@ class UploadImageTableViewController: UITableViewController, UIImagePickerContro

var event: addEvent
let eventInfoVC = (segue.destination as! EventInfoTableViewController)
event = addEvent(image: imageToSend, title: "", description: "", location: "", category: "", datetime: "")
event = addEvent(image: imageToSend, title: "", description: "", location: "", category: "", datetime: "", eventPlaceName: "", host: (FIRAuth.auth()?.currentUser?.uid)!,imageUrl: "")
print("THE EVENTS IMAGE IS \(event.image)")
eventInfoVC.eventObject = event

@@ -83,6 +83,7 @@ class ViewController: UIViewController {
return
}


// save user to database
let ref = FIRDatabase.database().reference()
let usersReference = ref.child("Users").child(uid)
@@ -111,7 +112,7 @@ class ViewController: UIViewController {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

print("THE CURRENT \(FIRAuth.auth()?.currentUser?.email)")
}


@@ -19,16 +19,22 @@ class addEvent {
var location: String
var category: String
var datetime: String
var eventPlaceName: String
var host: String
var imageUrl: String


init(image: UIImage, title: String, description: String, location: String, category: String, datetime: String) {
init(image: UIImage, title: String, description: String, location: String, category: String, datetime: String, eventPlaceName: String, host: String, imageUrl: String) {

self.image = image
self.title = title
self.description = description
self.location = location
self.category = category
self.datetime = datetime
self.eventPlaceName = eventPlaceName
self.host = host
self.imageUrl = imageUrl

}

Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.