// // NotificationsViewController.swift // Vendoo // // Created by Okechi Onyeje on 11/2/16. // Copyright © 2016 Okechi Onyeje. All rights reserved. // import UIKit class NotificationsViewController: UIViewController { var notifications: [Dictionary]! = (NSUserDefaults.standardUserDefaults().objectForKey("notifications") == nil ? [] : (NSUserDefaults.standardUserDefaults().objectForKey("notifications") as! [Dictionary])) var fireBase = FirebaseManager() @IBOutlet weak var notificationTable: UITableView! override func viewDidLoad() { super.viewDidLoad() self.notificationTable.dataSource = self self.notificationTable.delegate = self // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */ } extension NotificationsViewController: UITableViewDelegate { func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { var notification = self.notifications[indexPath.row] switch ( notification["network"] as! String) { case "facebook": let alert = UIAlertController(title: "New Comment from \(notification["senderName"] as! String)", message: (notification["commentMessage"] as! String), preferredStyle: .Alert) alert.addAction(UIAlertAction(title: "Mark as Dismissed", style: .Default, handler: { (action) -> Void in notification["seen"] = true self.notifications[indexPath.row] = notification self.fireBase.ref.child("Users/\(self.fireBase.user_email)/notifications/\(notification["UUID"] as! String)").setValue(notification, withCompletionBlock: { (error, reference) -> Void in if error == nil { self.notifications = self.notifications.filter({$0["seen"] as! Bool == false}) NSUserDefaults.standardUserDefaults().setObject(self.notifications, forKey: "notifications") self.notificationTable.reloadData() alert.dismissViewControllerAnimated(true, completion: nil) } }) })) alert.addAction(UIAlertAction(title: "OK", style: .Cancel, handler: {(action) -> Void in})) self.presentViewController(alert, animated: true, completion: nil) break case "ebay": break case "etsy": break case "amazon": break default: break } } } extension NotificationsViewController: UITableViewDataSource { func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell: NotificationTableViewCell! = self.notificationTable.dequeueReusableCellWithIdentifier("notification_cell") as! NotificationTableViewCell let notification = self.notifications[indexPath.row] cell.message.text = notification["notification"] as! String switch ( notification["network"] as! String) { case "facebook": cell.network.image = UIImage(named: "facebook_icon") break case "ebay": cell.network.image = UIImage(named: "ebay_icon") break case "etsy": cell.network.image = UIImage(named: "etsy_icon") break case "amazon": break default: break } return cell } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.notifications.count } } extension NotificationsViewController /*IBoutlets*/ { @IBAction func dismissNotifications(sender: AnyObject){ let vc = self.storyboard?.instantiateViewControllerWithIdentifier("Reveal View Controller") self.presentViewController(vc!, animated: false, completion: nil) } }