From f2ed3b91653b5572978b86d22ed81c2a30c90210 Mon Sep 17 00:00:00 2001 From: Okechi Onyeje Date: Wed, 31 Aug 2016 09:09:01 -0400 Subject: [PATCH 1/6] Skeleton of Notifications Manager is Set up Need to implement request for: amazon, ebay, etsy, facebook --- Vendoo.xcodeproj/project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 62015 -> 62914 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 430 +++++++++++++++++- Vendoo/.DS_Store | Bin 10244 -> 10244 bytes Vendoo/HomeViewController.swift | 26 +- Vendoo/ServiceNotificationManager.swift | 101 ++++ 6 files changed, 535 insertions(+), 26 deletions(-) create mode 100644 Vendoo/ServiceNotificationManager.swift diff --git a/Vendoo.xcodeproj/project.pbxproj b/Vendoo.xcodeproj/project.pbxproj index 5715c21..ef1a544 100644 --- a/Vendoo.xcodeproj/project.pbxproj +++ b/Vendoo.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */; }; 3E1DC3CD1D4232490091BC60 /* CategoriesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */; }; 3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */; }; + 3E3A004A1D76680E00A3A5B6 /* ServiceNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A00491D76680E00A3A5B6 /* ServiceNotificationManager.swift */; }; 3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4897D01D0067030069F742 /* FirebaseManager.swift */; }; 3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */; }; 3E6CC3591CF2A94B00E00A70 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3581CF2A94B00E00A70 /* SignInViewController.swift */; }; @@ -74,6 +75,7 @@ 3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EtsySettingsViewController.swift; sourceTree = ""; }; 3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoriesTableViewController.swift; sourceTree = ""; }; 3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryCell.swift; sourceTree = ""; }; + 3E3A00491D76680E00A3A5B6 /* ServiceNotificationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceNotificationManager.swift; sourceTree = ""; }; 3E4897D01D0067030069F742 /* FirebaseManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseManager.swift; sourceTree = ""; }; 3E6CC3531CF2A94B00E00A70 /* Vendoo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vendoo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -175,6 +177,7 @@ 3E4897CF1D00629B0069F742 /* FirebaseServices */, 3E7CF3FF1CF6363200F486B2 /* EtsyServices */, 3EC325241CF7E6B300626C48 /* FacebookServices */, + 3E3A00491D76680E00A3A5B6 /* ServiceNotificationManager.swift */, ); name = Services; sourceTree = ""; @@ -753,6 +756,7 @@ 3E7CF3FC1CF5FE9400F486B2 /* RecoverPasswordViewController.swift in Sources */, 3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */, 3EC325111CF703A600626C48 /* ItemCell.swift in Sources */, + 3E3A004A1D76680E00A3A5B6 /* ServiceNotificationManager.swift in Sources */, 3EA668A11D02836C00EE57A8 /* EbayWebServiceManager.swift in Sources */, 3EF422B21D73262000B9A3EB /* UserCell.swift in Sources */, 3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */, diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate index f1866acb19fe3e87c5fc96749baacfb62b6572fc..cd761850114d1f1830619d0a05a1666dcfaf2f85 100644 GIT binary patch delta 27897 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

r{Lk)M}vXs9Hx6>xTLMAA9JB`9r}_ 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 W3z7f3-u8?9e-91*U;mdEqW%Zs-I%BV delta 26796 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 F{{b9Z#;E`R diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index bd35679..6af231b 100644 --- a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -198,7 +198,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift" - timestampString = "494297335.911172" + timestampString = "494341261.945578" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "385" @@ -213,7 +213,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift" - timestampString = "494297335.911317" + timestampString = "494341261.945674" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "385" @@ -246,7 +246,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift" - timestampString = "494297335.91226" + timestampString = "494341261.946415" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "404" @@ -261,7 +261,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift" - timestampString = "494297335.912365" + timestampString = "494341261.946515" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "406" @@ -310,7 +310,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift" - timestampString = "494297335.91396" + timestampString = "494341261.947602" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "423" @@ -325,7 +325,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift" - timestampString = "494297335.914116" + timestampString = "494341261.947696" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "423" @@ -340,7 +340,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ListingPreviewViewController.swift" - timestampString = "494297335.914278" + timestampString = "494341261.947779" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "425" @@ -589,11 +589,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/HomeViewController.swift" - timestampString = "494087787.593663" + timestampString = "494337640.582836" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "33" - endingLineNumber = "33" + startingLineNumber = "35" + endingLineNumber = "35" landmarkName = "viewDidLoad()" landmarkType = "5"> @@ -685,7 +685,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/MenuPanelViewController.swift" - timestampString = "494297335.923076" + timestampString = "494341261.956102" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "137" @@ -700,7 +700,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/MenuPanelViewController.swift" - timestampString = "494297335.923177" + timestampString = "494341261.956207" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "137" @@ -781,7 +781,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ItemImagePickerViewController.swift" - timestampString = "494297335.925585" + timestampString = "494341261.959326" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "67" @@ -796,7 +796,7 @@ moduleName = "Vendoo" usesParentBreakpointCondition = "Yes" urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ItemImagePickerViewController.swift" - timestampString = "494297335.925882" + timestampString = "494341261.959485" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "68" @@ -820,6 +820,38 @@ endingLineNumber = "197" landmarkName = "tableView(_:didSelectRowAtIndexPath:)" landmarkType = "5"> + + + + + + + startingLineNumber = "195" + endingLineNumber = "195" + offsetFromSymbolStart = "2972"> + startingLineNumber = "198" + endingLineNumber = "198" + offsetFromSymbolStart = "27"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Vendoo/.DS_Store b/Vendoo/.DS_Store index 661de9b12e61cc0d9ce910e7e285c30a0c34c804..0929a6a70474837e767a959c18c880fdbe29939d 100644 GIT binary patch delta 103 zcmZn(XbG6$RCU^hRb-ew+wX)K#rM4MP9Ka!lc`I*!fMs)>-V1`tNB8D=COon72 z%a0+Sp#;cI1M?HX?0km2$+hB|lP^fKOui+>vw4A^t7X)f7%MhU7wKhTl$(57LZ7j2@D7CBFaw diff --git a/Vendoo/HomeViewController.swift b/Vendoo/HomeViewController.swift index 05d5b51..e744738 100644 --- a/Vendoo/HomeViewController.swift +++ b/Vendoo/HomeViewController.swift @@ -16,11 +16,13 @@ class HomeViewController: UITabBarController { let firebaseManager = FirebaseManager() let ebayGraphManager = EbayWebServiceManager() var userListings: [Listing] = [] + var notificationsManager = ServiceNotificationManager() override func viewDidLoad() { super.viewDidLoad() + self.notificationsManager.setManagers(fbGraphManager, fireManager: firebaseManager, ebayManager: ebayGraphManager, etsyManager: etsyManager) // Do any additional setup after loading the view. dispatch_async(dispatch_get_main_queue(), { @@ -35,11 +37,12 @@ class HomeViewController: UITabBarController { NSUserDefaults.standardUserDefaults().setObject(userDict!["name"] as? String, forKey: "name") if listingDict != nil { + var notificationStartTracker = 0 dispatch_async(dispatch_get_main_queue(), { - - + //let notificationStartGroup = dispatch_group_create() for (key, values) in listingDict! { let serviceGroup: dispatch_group_t = dispatch_group_create() + //dispatch_group_enter(notificationStartGroup) self.firebaseManager.ref.observeSingleEventOfType(.Value, withBlock: { snapshot in let databaseDict = snapshot.value as! [String : AnyObject] @@ -54,6 +57,7 @@ class HomeViewController: UITabBarController { if(error != nil){ print("problem retrieving items") + notificationStartTracker += 1 }else{ let mainImage = UIImage(data: dataMain!) @@ -74,6 +78,9 @@ class HomeViewController: UITabBarController { count+=1 if(count == 4){ dispatch_group_leave(serviceGroup) + notificationStartTracker += 1 + //dispatch_group_enter(notificationStartGroup) + //dispatch_group_leave(notificationStartGroup) } }) @@ -93,9 +100,17 @@ class HomeViewController: UITabBarController { itemKey: key, networksSellingOn: (listingInfo!["networks"] as? Dictionary)! )) + print(notificationStartTracker) + if(notificationStartTracker == listingDict?.count){ + NSNotificationCenter.defaultCenter().postNotificationName("finished_fetching_listings", object: nil) + self.notificationsManager.setListings(self.userListings) + self.notificationsManager.startServicePolling() + } + + - NSNotificationCenter.defaultCenter().postNotificationName("finished_fetching_listings", object: nil) }) + @@ -107,6 +122,11 @@ class HomeViewController: UITabBarController { } + /* + dispatch_group_notify(notificationStartGroup, dispatch_get_main_queue(), { + + + })*/ diff --git a/Vendoo/ServiceNotificationManager.swift b/Vendoo/ServiceNotificationManager.swift new file mode 100644 index 0000000..4e6de8a --- /dev/null +++ b/Vendoo/ServiceNotificationManager.swift @@ -0,0 +1,101 @@ +// +// ServiceNotificationManager.swift +// Vendoo +// +// Created by Okechi Onyeje on 8/30/16. +// Copyright © 2016 Okechi Onyeje. All rights reserved. +// + +import Foundation + +protocol ServiceNotificationManagerDelegate { + func listingHasEnded(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) + func listingHasNewNotifications(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) +} + +class ServiceNotificationManager: NSObject { + + var etsyManager: EtsyRESTAPIManager! + var fbGraphManager: FacebookGraphAPIManager! + var firebaseManager: FirebaseManager! + var ebayGraphManager: EbayWebServiceManager! + var userListings: [Listing] = [] + var timer: NSTimer! + var delegate: ServiceNotificationManagerDelegate? + + override init() { + super.init() + + + } + + func startServicePolling() { + timer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: #selector(ServiceNotificationManager.pollServices), userInfo: nil, repeats: true) + } + + func stopServicePolling() { + timer.invalidate() + } + + func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager, etsyManager: EtsyRESTAPIManager){ + self.fbGraphManager = fbManager + self.firebaseManager = fireManager + self.ebayGraphManager = ebayManager + self.etsyManager = etsyManager + } + + func setListings(listings: [Listing]) { + self.userListings = listings + } + + func pollServices(){ + let notificationGroup = dispatch_group_create() + for listing in userListings { + dispatch_group_enter(notificationGroup) + + self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(listing.key)").observeSingleEventOfType( .Value, withBlock: { + (snapshot) -> Void in + + let listingDict = snapshot.value as? [String : AnyObject] + + if !(listingDict!["isListingDraft"] as! Bool) { + if let networksDict = listingDict!["networkIDs"] as? [String : AnyObject] { + let ebayID = (networksDict["ebay"] as? String) + let facebookID = (networksDict["facebook"] as? String) + let etsyID = (networksDict["etsy"] as? Int) + let amazonID = (networksDict["amazon"] as? String) + + //@TODO: Skeleton for Notfications Manager is set up. Need to implement listing request for each listing to retrieve relevant notifications for user such as if listing has ended + if(ebayID != nil){ + + } + if(facebookID != nil){ + + } + if(etsyID != nil){ + + } + if(amazonID != nil){ + + } + //dispatch_group_leave(notificationGroup) + }else { + dispatch_group_leave(notificationGroup) + } + + + }else { + dispatch_group_leave(notificationGroup) + } + }) + } + + dispatch_group_notify(notificationGroup, dispatch_get_main_queue(), { + self.delegate?.listingHasEnded(nil, ebayInfo: nil, amazonInfo: nil, etsyInfo: nil) + self.delegate?.listingHasNewNotifications(nil, ebayInfo: nil, amazonInfo: nil, etsyInfo: nil) + }) + + } + +} + From 9888a1c7a53f4ebb07b66077fc9e0ce10b3ebf4e Mon Sep 17 00:00:00 2001 From: Okechi Onyeje Date: Sat, 3 Sep 2016 15:18:58 -0400 Subject: [PATCH 2/6] Currently working on ebay notifications --- .DS_Store | Bin 10244 -> 10244 bytes .../UserInterfaceState.xcuserstate | Bin 62914 -> 63642 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 1276 +---------------- Vendoo/EbayWebServiceManager.swift | 66 +- Vendoo/ItemImagePickerViewController.swift | 2 + Vendoo/ServiceNotificationManager.swift | 8 +- 6 files changed, 96 insertions(+), 1256 deletions(-) diff --git a/.DS_Store b/.DS_Store index 61cbc18476e1e3c0cff57edf742f2620230c0cbb..59fbdbdfacd210a0c3c9fd8a64b64e93fed19cc8 100644 GIT binary patch delta 277 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 A>;M1& delta 30329 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 HzH$n7b1FyCTqIRO*1;{ybH5K*l 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + startingLineNumber = "71" + endingLineNumber = "71" + offsetFromSymbolStart = "4017"> - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -356,61 +73,13 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Vendoo/ListingPreviewViewController.swift" - timestampString = "494285108.864963" + filePath = "Vendoo/ServiceNotificationManager.swift" + timestampString = "494388796.589441" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "432" - endingLineNumber = "432" - landmarkName = "publishItem(_:)" - landmarkType = "5"> - - - - - - - - - - - - @@ -421,135 +90,15 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/EbayWebServiceManager.swift" - timestampString = "494033422.080596" + timestampString = "494390858.671323" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "576" - endingLineNumber = "576"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Vendoo/EbayWebServiceManager.swift b/Vendoo/EbayWebServiceManager.swift index 59d8111..4b579bb 100644 --- a/Vendoo/EbayWebServiceManager.swift +++ b/Vendoo/EbayWebServiceManager.swift @@ -40,6 +40,7 @@ class EbayWebServiceManager: NSObject { private var completion: ServiceResponse! private var isGettingSubCategories: Bool = false private var isRevisingListing: Bool = false + var isGettingNotification: Bool = false //---------------------------------------------// @@ -328,6 +329,27 @@ extension EbayWebServiceManager { self.catDetailLevel = detailLevel self.requestMaker(soapMessage, theRequest: theRequest) } + + func getListingInfo(listingID: String, onComplete: ServiceResponse?){ + var soapMessage = "" + + "" + + "" + + "\(self.xmlResponseDictionary["eBayAuthToken"] as! String)" + + "" + + soapMessage = soapMessage + + "\(listingID)" + + "" + + let url = NSURL(string: self.baseURL) + let theRequest = NSMutableURLRequest(URL: url!) + theRequest.addValue("GetItem", forHTTPHeaderField: "X-EBAY-API-CALL-NAME") + + self.completion = onComplete + self.isGettingNotification = true + self.requestMaker(soapMessage, theRequest: theRequest) + + } } extension EbayWebServiceManager: NSURLConnectionDelegate { @@ -478,26 +500,30 @@ extension EbayWebServiceManager: NSXMLParserDelegate { self.catLevel = string break case "CategoryName" : - if(!self.isGettingSubCategories) { - if((EbayWebServiceManager.settingsDictionary["categories"]) == nil) { - EbayWebServiceManager.settingsDictionary["categories"] = Dictionary>() - } - var dict: Dictionary> = (EbayWebServiceManager.settingsDictionary["categories"]!) as! Dictionary> - - dict[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel] - EbayWebServiceManager.settingsDictionary["categories"] = dict - NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings") - } - else { - if "\(self.catDetailLevel)" == self.catLevel { - if((self.subCategories[string] == nil )){ - self.subCategories[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel] + if (!self.isGettingNotification) { + if(!self.isGettingSubCategories) { + if((EbayWebServiceManager.settingsDictionary["categories"]) == nil) { + EbayWebServiceManager.settingsDictionary["categories"] = Dictionary>() } + var dict: Dictionary> = (EbayWebServiceManager.settingsDictionary["categories"]!) as! Dictionary> + + dict[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel] + EbayWebServiceManager.settingsDictionary["categories"] = dict + NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings") } - - + else { + if "\(self.catDetailLevel)" == self.catLevel { + if((self.subCategories[string] == nil )){ + self.subCategories[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel] + } + } + + + } + } + self.currentCategory = string break @@ -534,6 +560,14 @@ extension EbayWebServiceManager: NSXMLParserDelegate { self.isRevisingListing = true break + /* + Used for retrieving listing info for notifications + */ + case "ListingStatus": + print("ListingStatus: \(string)") + self.completion(string, nil) + self.isGettingNotification = false + break default: //print(string) print("\(self.currentElementName):\(string)") diff --git a/Vendoo/ItemImagePickerViewController.swift b/Vendoo/ItemImagePickerViewController.swift index 7a0f36e..55fd698 100644 --- a/Vendoo/ItemImagePickerViewController.swift +++ b/Vendoo/ItemImagePickerViewController.swift @@ -39,6 +39,8 @@ class ItemImagePickerViewController: UIViewController { private var imageIndex: Int! private var isEditing: Bool = false private var currentInformation: Dictionary! + + override func viewDidLoad() { super.viewDidLoad() diff --git a/Vendoo/ServiceNotificationManager.swift b/Vendoo/ServiceNotificationManager.swift index 4e6de8a..4401789 100644 --- a/Vendoo/ServiceNotificationManager.swift +++ b/Vendoo/ServiceNotificationManager.swift @@ -67,7 +67,13 @@ class ServiceNotificationManager: NSObject { //@TODO: Skeleton for Notfications Manager is set up. Need to implement listing request for each listing to retrieve relevant notifications for user such as if listing has ended if(ebayID != nil){ - + /*if self.ebayGraphManager.isAuthorized { + self.ebayGraphManager.getListingInfo(ebayID!, onComplete: { + (listingStatus, error) -> Void in + dispatch_group_leave(notificationGroup) + + }) + }*/ } if(facebookID != nil){ From 7fe237819401676a02e269f5894051ba5422274f Mon Sep 17 00:00:00 2001 From: Okechi Onyeje Date: Tue, 6 Sep 2016 06:21:25 -0400 Subject: [PATCH 3/6] set up delegation for notifications --- .../UserInterfaceState.xcuserstate | Bin 63642 -> 65707 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 348 +----------------- Vendoo/EbayWebServiceManager.swift | 62 ++-- Vendoo/HomeViewController.swift | 118 +++++- Vendoo/Listing.swift | 1 + Vendoo/ServiceNotificationManager.swift | 46 ++- 6 files changed, 207 insertions(+), 368 deletions(-) diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate index a4aa0d797c978e6f13fa5d5b5aaa747a3df05106..938394e2120ac4a36fd78177c7a60bc0a17898fc 100644 GIT binary patch delta 29207 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ºQle^i+9gXT8pOo%g!vo$p=d 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 diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 35dfe9c..c1c6ba6 100644 --- a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -10,11 +10,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/ServiceNotificationManager.swift" - timestampString = "494388533.467001" + timestampString = "494778762.798972" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "70" - endingLineNumber = "70" + startingLineNumber = "79" + endingLineNumber = "79" landmarkName = "pollServices()" landmarkType = "5"> @@ -26,59 +26,27 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/ServiceNotificationManager.swift" - timestampString = "494388607.180284" + timestampString = "494778870.382513" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "71" - endingLineNumber = "71" + startingLineNumber = "75" + endingLineNumber = "75" landmarkName = "pollServices()" landmarkType = "5"> - - - - - - @@ -89,299 +57,13 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Vendoo/EbayWebServiceManager.swift" -<<<<<<< HEAD - timestampString = "494390858.671323" + filePath = "Vendoo/HomeViewController.swift" + timestampString = "494847768.56364" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "568" - endingLineNumber = "568" -======= - timestampString = "494685275.012942" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "573" - endingLineNumber = "573"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >>>>>> Rapid-Dev-Branch - landmarkName = "parser(_:foundCharacters:)" - landmarkType = "5"> - - - - - - - - - - - - - - - - - - - - >>>>>> Rapid-Dev-Branch + startingLineNumber = "182" + endingLineNumber = "182" + landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)" landmarkType = "5"> diff --git a/Vendoo/EbayWebServiceManager.swift b/Vendoo/EbayWebServiceManager.swift index b5b1f5f..8c86b5c 100644 --- a/Vendoo/EbayWebServiceManager.swift +++ b/Vendoo/EbayWebServiceManager.swift @@ -42,6 +42,8 @@ class EbayWebServiceManager: NSObject { private var isRevisingListing: Bool = false private var requestGroup: dispatch_group_t = dispatch_group_create() var isGettingNotification: Bool = false + private var qtySold: Int! + private var currItemQuantity: Int! //---------------------------------------------// @@ -479,21 +481,23 @@ extension EbayWebServiceManager: NSXMLParserDelegate { self.completion(nil, nil) break case "UserID" : - print(string) - EbayWebServiceManager.settingsDictionary["userID"] = string - NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings") - print(self.xmlResponseDictionary["eBayAuthToken"]) - let soapmessage = "" + - "" + - "\(self.xmlResponseDictionary["eBayAuthToken"] as! String)" + - "0ReturnAll1" + - "" - - let url = NSURL(string: self.baseURL) - let theRequest = NSMutableURLRequest(URL: url!) - theRequest.addValue("GetCategories", forHTTPHeaderField: "X-EBAY-API-CALL-NAME") - self.completion(nil, nil) - self.requestMaker(soapmessage, theRequest: theRequest) + if(!self.isGettingNotification) { + print(string) + EbayWebServiceManager.settingsDictionary["userID"] = string + NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings") + print(self.xmlResponseDictionary["eBayAuthToken"]) + let soapmessage = "" + + "" + + "\(self.xmlResponseDictionary["eBayAuthToken"] as! String)" + + "0ReturnAll1" + + "" + + let url = NSURL(string: self.baseURL) + let theRequest = NSMutableURLRequest(URL: url!) + theRequest.addValue("GetCategories", forHTTPHeaderField: "X-EBAY-API-CALL-NAME") + self.completion(nil, nil) + self.requestMaker(soapmessage, theRequest: theRequest) + } break /* Used to build both the top level categories, and subcategories on request during item listing workflow @@ -525,11 +529,10 @@ extension EbayWebServiceManager: NSXMLParserDelegate { } - + self.currentCategory = string } - self.currentCategory = string break case "LeafCategory": @@ -558,7 +561,9 @@ extension EbayWebServiceManager: NSXMLParserDelegate { Used during the listing creation process to save the new listing id, as well as adding pictures to the new listing */ case "ItemID": - self.completion(string, nil) + if (!self.isGettingNotification) { + self.completion(string, nil) + } break case "ReviseItemResponse": @@ -568,10 +573,25 @@ extension EbayWebServiceManager: NSXMLParserDelegate { /* Used for retrieving listing info for notifications */ + case "Quantity": + if self.isGettingNotification { + print("Quantity: \(string)") + self.currItemQuantity = Int(string) + } + break + case "QuantitySold": + if self.isGettingNotification { + print("QuantitySold: \(string)") + self.qtySold = Int(string) + } + break case "ListingStatus": - print("ListingStatus: \(string)") - self.completion(string, nil) - self.isGettingNotification = false + if self.isGettingNotification { + print("ListingStatus: \(string)") + self.completion(["status":string, "quantitySold": self.qtySold, "itemQuantity": self.currItemQuantity], nil) + self.qtySold = nil + self.currItemQuantity = nil + } break default: //print(string) diff --git a/Vendoo/HomeViewController.swift b/Vendoo/HomeViewController.swift index e744738..5242ca6 100644 --- a/Vendoo/HomeViewController.swift +++ b/Vendoo/HomeViewController.swift @@ -17,11 +17,12 @@ class HomeViewController: UITabBarController { let ebayGraphManager = EbayWebServiceManager() var userListings: [Listing] = [] var notificationsManager = ServiceNotificationManager() + var notifications: [Dictionary] = (NSUserDefaults.standardUserDefaults().objectForKey("notifications") == nil ? [] : (NSUserDefaults.standardUserDefaults().objectForKey("notifications") as! [Dictionary])) override func viewDidLoad() { super.viewDidLoad() - + ServiceNotificationManager.delegate = self self.notificationsManager.setManagers(fbGraphManager, fireManager: firebaseManager, ebayManager: ebayGraphManager, etsyManager: etsyManager) // Do any additional setup after loading the view. dispatch_async(dispatch_get_main_queue(), { @@ -158,3 +159,118 @@ class HomeViewController: UITabBarController { } + + +extension HomeViewController: ServiceNotificationManagerDelegate { + func listingHasFinishedRetrievingNotifications() { + NSUserDefaults.standardUserDefaults().setObject(self.notifications, forKey: "notifications") + } + + func listingHasStartedRetrievingNotifications() { + + } + + func listingHasEnded(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) { + if (fbInfo != nil) { + self.notifications.append( + [ + "network": "facebook", + "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "type": "ended", + "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "UUID": NSUUID().UUIDString + ] + ) + } + + if (ebayInfo != nil) { + self.notifications.append( + [ + "network": "ebay", + "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "type": "ended", + "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "UUID": NSUUID().UUIDString + ] + ) + } + + if (amazonInfo != nil) { + self.notifications.append( + [ + "network": "amazon", + "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "type": "ended", + "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "UUID": NSUUID().UUIDString + ] + ) + } + + if (etsyInfo != nil) { + self.notifications.append( + [ + "network": "etsy", + "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "type": "ended", + "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "UUID": NSUUID().UUIDString + ] + ) + } + + } + + func listingHasNewNotifications(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) { + + + if (fbInfo != nil) { + self.notifications.append( + [ + "network": "facebook", + "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "type": "ended", + "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "UUID": NSUUID().UUIDString + ] + ) + } + + if (ebayInfo != nil) { + self.notifications.append( + [ + "network": "ebay", + "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "type": "ended", + "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "UUID": NSUUID().UUIDString + ] + ) + } + + if (amazonInfo != nil) { + self.notifications.append( + [ + "network": "amazon", + "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "type": "ended", + "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "UUID": NSUUID().UUIDString + ] + ) + } + + if (etsyInfo != nil) { + self.notifications.append( + [ + "network": "etsy", + "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "type": "ended", + "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "UUID": NSUUID().UUIDString + ] + ) + } + + } +} diff --git a/Vendoo/Listing.swift b/Vendoo/Listing.swift index a86601b..c9657f9 100644 --- a/Vendoo/Listing.swift +++ b/Vendoo/Listing.swift @@ -19,6 +19,7 @@ class Listing : NSObject { var images: [UIImage]! var key: String! var networks: Dictionary! + var listingStatus: String! init(itemTitle:String, itemCategory: String!, itemPrice: String!, itemDescription: String!, itemImages: [UIImage], isDraftListing: Bool, itemKey: String, networksSellingOn: Dictionary){ diff --git a/Vendoo/ServiceNotificationManager.swift b/Vendoo/ServiceNotificationManager.swift index 4401789..9afef9f 100644 --- a/Vendoo/ServiceNotificationManager.swift +++ b/Vendoo/ServiceNotificationManager.swift @@ -11,6 +11,9 @@ import Foundation protocol ServiceNotificationManagerDelegate { func listingHasEnded(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) func listingHasNewNotifications(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) + func listingHasFinishedRetrievingNotifications() + func listingHasStartedRetrievingNotifications() + } class ServiceNotificationManager: NSObject { @@ -21,7 +24,7 @@ class ServiceNotificationManager: NSObject { var ebayGraphManager: EbayWebServiceManager! var userListings: [Listing] = [] var timer: NSTimer! - var delegate: ServiceNotificationManagerDelegate? + static var delegate: ServiceNotificationManagerDelegate? override init() { super.init() @@ -51,11 +54,11 @@ class ServiceNotificationManager: NSObject { func pollServices(){ let notificationGroup = dispatch_group_create() for listing in userListings { - dispatch_group_enter(notificationGroup) self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(listing.key)").observeSingleEventOfType( .Value, withBlock: { (snapshot) -> Void in - + //dispatch_group_enter(notificationGroup) + let listingDict = snapshot.value as? [String : AnyObject] if !(listingDict!["isListingDraft"] as! Bool) { @@ -67,13 +70,29 @@ class ServiceNotificationManager: NSObject { //@TODO: Skeleton for Notfications Manager is set up. Need to implement listing request for each listing to retrieve relevant notifications for user such as if listing has ended if(ebayID != nil){ - /*if self.ebayGraphManager.isAuthorized { + if self.ebayGraphManager.isAuthorized { + self.ebayGraphManager.isGettingNotification = true self.ebayGraphManager.getListingInfo(ebayID!, onComplete: { - (listingStatus, error) -> Void in - dispatch_group_leave(notificationGroup) + (listingNotificationInfo, error) -> Void in + //dispatch_group_leave(notificationGroup) + let info = (listingNotificationInfo as! [String : AnyObject]) + if((info["quantitySold"] as! Int) > 0) { + //@TODO: Add both firbase logic and code logic to do notifications for sold listings + } + if(info["status"] as! String == "Ended") { + ServiceNotificationManager.delegate?.listingHasEnded( + nil, + ebayInfo: [ + "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has ended on ebay.", + "listingKey": listing.key], + amazonInfo: nil, + etsyInfo: nil + ) + + } }) - }*/ + } } if(facebookID != nil){ @@ -86,20 +105,21 @@ class ServiceNotificationManager: NSObject { } //dispatch_group_leave(notificationGroup) }else { - dispatch_group_leave(notificationGroup) + // dispatch_group_leave(notificationGroup) } }else { - dispatch_group_leave(notificationGroup) + //dispatch_group_leave(notificationGroup) } }) } + self.ebayGraphManager.isGettingNotification = false + - dispatch_group_notify(notificationGroup, dispatch_get_main_queue(), { - self.delegate?.listingHasEnded(nil, ebayInfo: nil, amazonInfo: nil, etsyInfo: nil) - self.delegate?.listingHasNewNotifications(nil, ebayInfo: nil, amazonInfo: nil, etsyInfo: nil) - }) + //dispatch_group_notify(notificationGroup, dispatch_get_main_queue(), { + //self.delegate?.listingHasNewNotifications(nil, ebayInfo: nil, amazonInfo: nil, etsyInfo: nil) + //}) } From 5df12695df357c75e665a841acf9eab3e6b0cfc9 Mon Sep 17 00:00:00 2001 From: Okechi Onyeje Date: Wed, 5 Oct 2016 08:53:06 -0400 Subject: [PATCH 4/6] Ebay Ended and Sold notifications completed. Sold, Unsold, and Selling completed --- .../UserInterfaceState.xcuserstate | Bin 22962 -> 25217 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 629 +----------------- Vendoo/EbayWebServiceManager.swift | 4 +- Vendoo/HomeViewController.swift | 77 ++- Vendoo/ItemTableViewController.swift | 164 +++-- Vendoo/Main.storyboard | 12 +- Vendoo/ServiceNotificationManager.swift | 40 +- 7 files changed, 233 insertions(+), 693 deletions(-) diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate index 6a7ce46937bab1c4be83afbdd046892e3161e845..dc2f0c7659d6d6b55b6eee3deec3e3e2dc2331f8 100644 GIT binary patch delta 13847 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 H?koNWnD!nr delta 12097 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 diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 520eda7..c78dbce 100644 --- a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -9,640 +9,29 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" -<<<<<<< HEAD filePath = "Vendoo/HomeViewController.swift" - timestampString = "494906385.49118" + timestampString = "497362780.635053" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "183" - endingLineNumber = "183"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >>>>>> Rapid-Dev-Branch - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "865" - endingLineNumber = "865" - landmarkName = "toggleNetworkSelection(_:)" - landmarkType = "5"> - - - - - - - - - - - - - - - - - - - - - - - - -<<<<<<< HEAD - - - - - - -======= ->>>>>>> Rapid-Dev-Branch - - - - - - - - - - -======= - urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/SignInViewController.swift" - timestampString = "496597493.364189" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "57" - endingLineNumber = "57" - offsetFromSymbolStart = "19"> ->>>>>>> Rapid-Dev-Branch - - -======= - urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/SignInViewController.swift" - timestampString = "496597493.364295" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "58" - endingLineNumber = "58" - offsetFromSymbolStart = "37"> ->>>>>>> Rapid-Dev-Branch - - - - - - - - - - - - - - - - - - >>>>>> Rapid-Dev-Branch + startingLineNumber = "238" + endingLineNumber = "238" + landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)" landmarkType = "5"> diff --git a/Vendoo/EbayWebServiceManager.swift b/Vendoo/EbayWebServiceManager.swift index 31e9faa..1458763 100644 --- a/Vendoo/EbayWebServiceManager.swift +++ b/Vendoo/EbayWebServiceManager.swift @@ -542,14 +542,14 @@ extension EbayWebServiceManager: NSXMLParserDelegate { } else { - if "\(self.catDetailLevel)" == self.catLevel { + /*if "\(self.catDetailLevel)" == self.catLevel { if((self.subCategories[string] == nil )){ self.subCategories[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel] } } - self.currentCategory = string + self.currentCategory = string*/ } diff --git a/Vendoo/HomeViewController.swift b/Vendoo/HomeViewController.swift index df1063e..8a1ee65 100644 --- a/Vendoo/HomeViewController.swift +++ b/Vendoo/HomeViewController.swift @@ -16,6 +16,8 @@ class HomeViewController: UITabBarController { let firebaseManager = FirebaseManager() let ebayGraphManager = EbayWebServiceManager() var userListings: [Listing] = [] + var endedListings: [Listing] = [] + var soldListings: [Listing] = [] var notificationsManager = ServiceNotificationManager() var notifications: [Dictionary] = (NSUserDefaults.standardUserDefaults().objectForKey("notifications") == nil ? [] : (NSUserDefaults.standardUserDefaults().objectForKey("notifications") as! [Dictionary])) @@ -91,17 +93,47 @@ class HomeViewController: UITabBarController { dispatch_group_notify(serviceGroup, dispatch_get_main_queue(), { print(listingImages.count) let listingInfo = values as? [String : AnyObject] - self.userListings.append( - Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!, - itemCategory: listingInfo!["listingCategory"] as? String, - itemQuantity: (listingInfo!["listingQuantity"] as? String)!, - itemPrice: listingInfo!["listingPrice"] as? String, - itemDescription: listingInfo!["listingDescription"] as? String, - itemImages: listingImages, - isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!, - itemKey: key, - networksSellingOn: (listingInfo!["networks"] as? Dictionary)! + + if listingInfo!["listingStatus"] == nil { + self.userListings.append( + Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!, + itemCategory: listingInfo!["listingCategory"] as? String, + itemQuantity: (listingInfo!["listingQuantity"] as? String)!, + itemPrice: listingInfo!["listingPrice"] as? String, + itemDescription: listingInfo!["listingDescription"] as? String, + itemImages: listingImages, + isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!, + itemKey: key, + networksSellingOn: (listingInfo!["networks"] as? Dictionary)! )) + } + else if listingInfo!["listingStatus"] as? String == "Ended" { + self.endedListings.append( + Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!, + itemCategory: listingInfo!["listingCategory"] as? String, + itemQuantity: (listingInfo!["listingQuantity"] as? String)!, + itemPrice: listingInfo!["listingPrice"] as? String, + itemDescription: listingInfo!["listingDescription"] as? String, + itemImages: listingImages, + isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!, + itemKey: key, + networksSellingOn: (listingInfo!["networks"] as? Dictionary)! + )) + } + else if listingInfo!["listingStatus"] as? String == "Sold" { + self.soldListings.append( + Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!, + itemCategory: listingInfo!["listingCategory"] as? String, + itemQuantity: (listingInfo!["listingQuantity"] as? String)!, + itemPrice: listingInfo!["listingPrice"] as? String, + itemDescription: listingInfo!["listingDescription"] as? String, + itemImages: listingImages, + isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!, + itemKey: key, + networksSellingOn: (listingInfo!["networks"] as? Dictionary)! + )) + } + print(notificationStartTracker) if(notificationStartTracker == listingDict?.count){ NSNotificationCenter.defaultCenter().postNotificationName("finished_fetching_listings", object: nil) @@ -189,11 +221,24 @@ extension HomeViewController: ServiceNotificationManagerDelegate { [ "network": "ebay", "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, - "type": "ended", + "type": (ebayInfo as! [String : AnyObject])["type"] as! String, "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, "UUID": NSUUID().UUIDString ] ) + self.endedListings.appendContentsOf( self.userListings.filter({$0.key == ((ebayInfo as! [String : AnyObject])["listingKey"] as! String)})) + self.userListings = self.userListings.filter({$0.key != ((ebayInfo as! [String : AnyObject])["listingKey"] as! String)}) + let itemsView = self.viewControllers![0] as! ItemTableViewController + + self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(((ebayInfo as! [String : AnyObject])["listingKey"] as! String))").observeSingleEventOfType( .Value, withBlock: { + (snapshot) -> Void in + + var listingDict = snapshot.value as? [String : AnyObject] + listingDict!["listingStatus"] = "Ended" + self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(((ebayInfo as! [String : AnyObject])["listingKey"] as! String))").setValue(listingDict) + + itemsView.itemTable.reloadData() + }) } if (amazonInfo != nil) { @@ -201,7 +246,7 @@ extension HomeViewController: ServiceNotificationManagerDelegate { [ "network": "amazon", "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, - "type": "ended", + "type": (ebayInfo as! [String : AnyObject])["type"] as! String, "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, "UUID": NSUUID().UUIDString ] @@ -230,7 +275,7 @@ extension HomeViewController: ServiceNotificationManagerDelegate { [ "network": "facebook", "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, - "type": "ended", + "type": (ebayInfo as! [String : AnyObject])["type"] as! String, "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, "UUID": NSUUID().UUIDString ] @@ -242,7 +287,7 @@ extension HomeViewController: ServiceNotificationManagerDelegate { [ "network": "ebay", "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, - "type": "ended", + "type": (ebayInfo as! [String : AnyObject])["type"] as! String, "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, "UUID": NSUUID().UUIDString ] @@ -254,7 +299,7 @@ extension HomeViewController: ServiceNotificationManagerDelegate { [ "network": "amazon", "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, - "type": "ended", + "type": "", "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, "UUID": NSUUID().UUIDString ] @@ -266,7 +311,7 @@ extension HomeViewController: ServiceNotificationManagerDelegate { [ "network": "etsy", "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, - "type": "ended", + "type": "", "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, "UUID": NSUUID().UUIDString ] diff --git a/Vendoo/ItemTableViewController.swift b/Vendoo/ItemTableViewController.swift index 2da8be4..ff66e52 100644 --- a/Vendoo/ItemTableViewController.swift +++ b/Vendoo/ItemTableViewController.swift @@ -80,6 +80,12 @@ class ItemTableViewController: UIViewController { } +// MARK: - IBAction +extension ItemTableViewController { + @IBAction func segSwitch(sender: UISegmentedControl) { + self.itemTable.reloadData() + } +} // MARK: - Navigation extension ItemTableViewController { @@ -129,63 +135,143 @@ extension ItemTableViewController: UITableViewDataSource{ func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // #warning Incomplete implementation, return the number of rows - return ((self.tabBarController as? HomeViewController)?.userListings.count)! + if self.tableSegmentController.selectedSegmentIndex == 0 { + return ((self.tabBarController as? HomeViewController)?.userListings.count)! + } + else if tableSegmentController.selectedSegmentIndex == 1 { + return ((self.tabBarController as? HomeViewController)?.endedListings.count)! + } + else{ + return ((self.tabBarController as? HomeViewController)?.soldListings.count)! + } + + } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell: ItemCell! = (tableView.dequeueReusableCellWithIdentifier("Item Cell", forIndexPath: indexPath) as! ItemCell) - - - // Configure the cell... //for each listing cell generated need to find the marketplaces it belongs to, the listing price, the name of the item, the status of the item, and the item image. //Once these objects are retrieved, access the ItemCell properties and manipulate as needed - cell.itemImage.image = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row].images[0] //come back - cell.itemName.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].title - cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].price - //check if item is published - if((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].isDraft!){ - cell.itemStatus.text = "Status: Unpublished" - dispatch_async(dispatch_get_main_queue(), { - - cell.alpha = 0.5 - - - }) + if self.tableSegmentController.selectedSegmentIndex == 0 { + cell.itemImage.image = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row].images[0] //come back + cell.itemName.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].title + cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].price - }else { - cell.itemStatus.text = "Status: Active" - } - - if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["areNetworksChosen"])!){ - cell.networks.hidden = true - }else{ - dispatch_async(dispatch_get_main_queue(), { - if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["ebay"])!){ - cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true - } - if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["amazon"])!){ - cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true - } - if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["etsy"])!){ - cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true + //check if item is published + if((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].isDraft!){ + cell.itemStatus.text = "Status: Unpublished" + dispatch_async(dispatch_get_main_queue(), { - } - if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["facebook"])!){ - cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true - } - - }) + cell.alpha = 0.5 + + + }) + + }else { + cell.itemStatus.text = "Status: Active" + } + if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["areNetworksChosen"])!){ + cell.networks.hidden = true + }else{ + dispatch_async(dispatch_get_main_queue(), { + if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["ebay"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true + } + if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["amazon"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true + } + if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["etsy"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true + + } + if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["facebook"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true + } + + }) + + } + } + else if tableSegmentController.selectedSegmentIndex == 1 { + cell.itemImage.image = (self.tabBarController as? HomeViewController)?.endedListings[indexPath.row].images[0] //come back + cell.itemName.text = (self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].title + cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].price + + cell.itemStatus.text = "Status: Unsold" + + if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["areNetworksChosen"])!){ + cell.networks.hidden = true + }else{ + dispatch_async(dispatch_get_main_queue(), { + if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["ebay"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true + } + if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["amazon"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true + } + if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["etsy"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true + + } + if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["facebook"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true + } + + }) + + } + + } + else{ + cell.itemImage.image = (self.tabBarController as? HomeViewController)?.soldListings[indexPath.row].images[0] //come back + cell.itemName.text = (self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].title + cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].price + + cell.itemStatus.text = "Status: Sold" + + if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["areNetworksChosen"])!){ + cell.networks.hidden = true + }else{ + dispatch_async(dispatch_get_main_queue(), { + if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["ebay"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true + } + if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["amazon"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true + } + if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["etsy"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true + + } + if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["facebook"])!){ + cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true + } + + }) + + } + } + + return cell } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { - self.selectedListing = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row] + if self.tableSegmentController.selectedSegmentIndex == 0 { + self.selectedListing = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row] + } + else if tableSegmentController.selectedSegmentIndex == 1 { + self.selectedListing = (self.tabBarController as? HomeViewController)?.endedListings[indexPath.row] + } + else{ + self.selectedListing = (self.tabBarController as? HomeViewController)?.soldListings[indexPath.row] + } self.performSegueWithIdentifier("ItemDetailSegue", sender: self) } } diff --git a/Vendoo/Main.storyboard b/Vendoo/Main.storyboard index cb927f7..a2f6b1f 100755 --- a/Vendoo/Main.storyboard +++ b/Vendoo/Main.storyboard @@ -1242,14 +1242,18 @@ - + + + + + @@ -2501,11 +2505,11 @@ + + - - - + diff --git a/Vendoo/ServiceNotificationManager.swift b/Vendoo/ServiceNotificationManager.swift index 9afef9f..cac2c7e 100644 --- a/Vendoo/ServiceNotificationManager.swift +++ b/Vendoo/ServiceNotificationManager.swift @@ -33,7 +33,8 @@ class ServiceNotificationManager: NSObject { } func startServicePolling() { - timer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: #selector(ServiceNotificationManager.pollServices), userInfo: nil, repeats: true) + //timer = NSTimer.scheduledTimerWithTimeInterval(60.0, target: self, selector: #selector(ServiceNotificationManager.pollServices), userInfo: nil, repeats: true) + pollServices() } func stopServicePolling() { @@ -76,18 +77,33 @@ class ServiceNotificationManager: NSObject { (listingNotificationInfo, error) -> Void in //dispatch_group_leave(notificationGroup) let info = (listingNotificationInfo as! [String : AnyObject]) - if((info["quantitySold"] as! Int) > 0) { - //@TODO: Add both firbase logic and code logic to do notifications for sold listings - } if(info["status"] as! String == "Ended") { - ServiceNotificationManager.delegate?.listingHasEnded( - nil, - ebayInfo: [ - "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has ended on ebay.", - "listingKey": listing.key], - amazonInfo: nil, - etsyInfo: nil - ) + if((info["quantitySold"] as! Int) > 0) { + //@TODO: Add both firbase logic and code logic to do notifications for sold listings + if (((info["itemQuantity"] as! Int) - (info["quantitySold"] as! Int)) == 0) { + + ServiceNotificationManager.delegate?.listingHasNewNotifications( + nil, + ebayInfo: [ + "type": "Sold", + "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has sold out on ebay.", + "listingKey": listing.key], + amazonInfo: nil, + etsyInfo: nil + ) + } + }else{ + ServiceNotificationManager.delegate?.listingHasEnded( + nil, + ebayInfo: [ + "type": "Ended", + "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has ended on ebay.", + "listingKey": listing.key], + amazonInfo: nil, + etsyInfo: nil + ) + } + } From 518fbb3e1e5d0249155eee94bc795b0da84afaf7 Mon Sep 17 00:00:00 2001 From: Okechi Onyeje Date: Mon, 31 Oct 2016 00:52:43 -0400 Subject: [PATCH 5/6] Etsy Ended and Sold notifications implemented --- .../UserInterfaceState.xcuserstate | Bin 25217 -> 26103 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 112 ++++++++++++++++++ Vendoo/EtsyRESTAPIManager.swift | 22 ++++ Vendoo/HomeViewController.swift | 25 +++- Vendoo/ServiceNotificationManager.swift | 38 ++++++ 5 files changed, 192 insertions(+), 5 deletions(-) diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate index dc2f0c7659d6d6b55b6eee3deec3e3e2dc2331f8..8169c3e037faba4c77173dda7d493d976868e296 100644 GIT binary patch delta 12257 zcma)h2V7Iv7k}=3_r1pmGGr!!B!mQ_fXEDc1xO$RLL7A=MN}$70r$wewpw@9=cua+ z;%w`vdvC4Ux>v2O+PbxlYTefVO(@#-*Z=4LCw%hq?mhRObG~QXbMM6mz_X)Zstk#g{jbLPgpZ8`>Jga7z~DhPrw*37JLfEf$?Ahm<48o&p{Jd0+xbhU^!R;R)R0V zCa@W70b9XAa0q-0&VaMv9QXzN3a){N;1T#8JO*!}00Iah1rekn1HE8t=nZ914uhcr zhCn4$!B7|jV__VOhY3&v6HPD&=E6LvgI3r9c7&Z^8SDki;Q&|*>!1yC5W`R5L^uh4 z4(GtRa2}iw7r_R&3@(Q&;3l{kZh>3jHn<(`fIHzX{t=McuEQJfCcFi2!#nUkd;*`t z7nCa{q}-@hlsn}?c~V}K4;4U3s6a|ig;HTuTPlKzq@pPel}IH~Cdy0|Qbm-7DyFPd z2dX30iRw&!Ky{(IQsq={st?td>Q4=$hEpS`k<=*4MvbQ?P!p+1)GTT?^|_5|q!v@l zs4uB))OKnIwUgRK?WXoqhp2CH+nbdO|&?UQlnS zKM_O}Vv!RPAu*DmKoo?eNQUGn7^zSiN=F$e6J?=nq(wO>7v&)x(xX!JAu2jX=ma{6&Y~aCMf4-OjIN-o=sLQA?x6eVck~!NLC?_(8qlt^C+$y5Xc-+shtX;} zf{v!+=_ESMM(5Ibw2s!(MYM(PMt7%s&?R&kJ&+zm52lCEL+N4kaC!tijvh}>peNGP z=vnl9dI9|f-9#^;m(nZgFX^x7ujy6vH}pn&6TOE%K%b{C(AVf&^nLmX{hWS5zoh?U zAj2>$PW`Ah+0V603BrX$mh z>CTify_gDS08`7AW*jq>nZ`_K<}&k`70gQJOXe%)Yi1R*li9`WX7(_9 znSIQD<_L3?Im!IM++=Psx0yT4UFHwwDf5hZ%L-V)vNqO@ZOsO-QdY*Q*fwlDo4{(= zL^g@dV6|)xTfmyx61FE>%6`a}vAx(@wvMf52eO0M!R!!rBs+>7&5mQovs2j_>`ZnJ zJC~iuE@T(8P3#hODZ7l_!R};tvAfwl>|S;syPrM49%K)*-?7KpQ|wvxN7nBudz-z( z-en)NPuM@$H|(EIj1%kR#6LjkK*zVEN4jGGF`zMMjX^91ar_qgCbgTpw{9_WiB{Bb zwcJo{1osIyj+@9$;ihpjxdq%JZaKG_TgPqUwsJexH45`wolRU7SIzb2`tYqpBW(v? zPB?J1bGPAfF$tP*S#)%4?8wssXMu~r74!rB1*#^{1#|`7KzFW!`-tnuRW^YEpcWW` ziR;e|uusEVYoEjY8?cV_ZQ#amV@cnq{8>?iVjI}~pY!Yi zdma47a}#)_SV0{I#~gAT2PYiuleo!zKe0k_9$flQg?<7*JLo>+i2P!C=yh=CKk4p* zdxY*jH=W~&Of&cw;_%QX;Dw#`5AYN`1JAix+-&Z1ZcY<;30@J}H{4uq9-*CYw^^Hm zZ%&#{q;((OJ~l2UhJdY!N*LK?czaE3djkDC+#w5vM0{@{bc3xNa(%%q&gzX&je$A~S^bUW@Uefl4vGCLG!=p9vQFhs)W8zvI0Vcup|C}cSW)i;H+!}5z zndck+MPS=dJv99%tr->)S_`+H+dybH@&!SmRA<<|S#us@Q`Ad{H-pa4MX}?dJ|~2f0H{kcZRY zOgM}CmOI29;lAe|O9zK95KM1?UvP)H*e;!;wGq|*BdSVc|B67^2%GHe7js7&;1cdT zewM6VyOnT_K(z#Z3BQ70!&PuKcZ@sEo#0M#r_zjF`%3C%MHH1|t9x;vn;DEu>D zQc$2;24BI~@D2PEzNG{d;2v_1xZk48>ATlr#5?d%?ZrUU9E6 z5MTiK6^hYuttszC-1AccqrgP@Qhwb`#m0g4r5{$77nj#BCN2Jgq7J5F@^Z?a!YGl0 zobMSDW(%UE|4@Jmrb37Ul!ANHKqM;nwK!kyKF*S%9 zELe+K!xx|G8}tKQFX4qGcpUkaDWO1iifSSrv4mRM z$y6NKtF*q<>|eR=*RY<@7S?Rv< zQUc2=YBg0)t);$kfYSzpwgevx!ZCJKBZKO7l?+p&DA~9%(L3<3yk4QUe!Fp{@ zW?6m3pbGwGTOa;>TWs4yWZX;bv&&dtQC03(S}nIeH(?OfEa3s_V6!mgjnn}_QHh7A zwWe3;P+4g`Nw!H*v9e5~$46a?2Uqm2ADUlmHZ}Y3Q9)IMpcO}Pq0R5d1yw5rd#IDt zDe5$JhB`}~qs~(os2}1vBL>7xH5epekb*%P1{oM+VW7nz*X|eZ@*nlHJ;*UgDDkKw zQEuYrxwR2ezcx1}mUxsqLO-yTLP*_eZcHxm_^7!tBar9X3tfL}Zci=o=<8_j9vSNT zdvja*`?M-{a-%Le9vO_5^D4GUSC?3tAx`mKV2D)LbWJI4ZKKt^OjW>koZkOdVZ!iyw;o*0y3@F50e81%xR90QUw`e4v^ zCF+Peq0WR;3i)(H-BAyFR;j??BMfHQ`A%~DH(_uYgQuL3KOUFn+NH8|XwATSYi)Ts zFN=@nd&jrs3*&v0J&OC*4Az!^IIvHj^4htWm|z(3B3NdQbViJ8el{u5sbuOls!4y zIE6iY-<&jS2K--(wXVK5qlX&4YZCh@h2n$UfM=}l-qI)DzMLl}IF0ZFnGFqlk$Ku6F~ z!eKu89v$OPCbnjYG6c7={M|$abqby4J(J|r89@9x0!L~?chNmQCE1_)jmWaqRgBOB^pGEv904BjP02Id9hnRLVK?zp3}*6OQvy8C zpqJzli=xAqjg(!Iig9bYQjdol~6-39_A$v;@;bI*? z(+RYu#3Pg+kf#uuYI>D7(uwwk#L?hpZ)m1Urc?Opyii1^5_?qVsrX%atb|UdvjnO} zI)l!{UBw3%WJDk z>&yR&ZMvB5L}Ht^(jDlI7<`GrR~US~nC^^HXp$XQIY2l}V!N!A?n%}#x)g)e@5&Rp z7hOq$n=Yq&(|zc^bOrqp-4BB`7_7yBMB+LO)?+{x-;E@=>1w)$?oSV(YiW{sNN{h$ zU>gPpFgS<-iJ5OnbWe?Lk!vJPa?bzmdFYSnPk@mgi@|0Lw%DV5E59;LQTQ&1=}Git zw3AqYB=CJ0Y$qOMx5cDpOH3C`Z=`v81_nDY*!?a^(X;6}Bm>f)W3aPmm&HG|5J)y^dtIr3{GQk4ukV80qfyPBz$U5VMHh*=UD!2rf-HLUkVo6 z%{7ll9%*M24 z{K;04@n(D&U&arED;QkG;1>*jZDIl#5w(GlU~mnCJC3692^ZGcP~N+~V@3Jk5)U6z zJr?(`tZ=+KmS6kY+r{8mq>UtuKd@Bv>FenI%c~g$6J}=@!YCOP6N)9^ItDi|xQW57 zCbD>?Fl_}=yHk@T^fv!nHvWL5jz#YrfQe@`#32Q}I7tJOh{0WsRLvy8Fe!qnMkbXZ zwc8kSslnhS2Cp~;|29P=Vd|N|{~{T}48`CL27mH# zsUbFI6e&Mjpu!jmTA=#G&T|Yi7DIp`de3t_GwELwPG+WHNY2qIPEn}H82<1ddh*Py z{~`a}K~9sZBZJS;xhKwN8p%lkvw-=6S;#D68Zcxrbi&XXLl+EPmoST&CT0ni*Mh8BLZE))dwUzq)Psos@8rHkVin3Y|b)yzh+>tWU~YngADbY+^PuTY!<-M(SqR8bdjT!NjLv7&)&YdmeA%wK;#=X4g5&$v^dS z{<2=mPtq3$wD`aQ<`CICGY2vBZeYH}(1))q6x*2Z7?On=1dF-o2Ie@1zVD7Cm{ZJI zvh)Z>lRhOEO@1)vIVFaE?%_XW z;J~_K81ha_wiWB~u7}t}`M$@S^(8&bk3{bV)(=C~`z{eHAziE(!_WqY3dC0a{QX3K zzDFE69GA0-_kx6AsD3X0b3==TaID#N?Dbei%ltR9{q3`YLC6NSVf0Etf z7%q%&Fv)m}si=#;UEBK7vVPe$RsCzr>*`2--?6lE;5*sNS#oZ_-?T zW0-d3IN%9^@?wdFEJ z`@g?LtN&W_*;(vtQX#;649OY6*v{6zc0^_EJSHf*&W`s=*aZuBF6`~AJ3YSCY3N$iQgwV!tUZV~z% zd%>QF?DYcs1BM^|wFt781XYXKpV*&Sl7P!FBob7-TM5};*z50>Hg`wWz}{eQV%Q7A zaz4CBCBDZ#ct_CO|B!uzVIK_p@>NB0@l*E2zxrR=$CD^3=T{U3ir+esljue#ffHGQ zD>1BUw1<*Cgh>3nEehd(EeZnN_yOKxKHZ|`#mWBsI7@5f^kMoaeUZLI|4d&cH=#G_JM?e# z19AhZAQzo^%rIsWvy55JY#>*ayU8`>e&!%^oLo|#X3jF_nIFh~WD2=oY#_E?%dTTL z5-V%7bPl=D;Pw=PaDJ}x4cP?vC*NS7#=IF|&MM3-cnONvX5i^-+COD~s7mw_%5U8cJ% zb6MlE&SitkCYNtrPPtrix#e=l<(|uZmxr$TuEnlBUCUkjxK_AUyY_djb**Z8IHq32=+bFmDZm-!!T2-_f)M`kpVXa2Ay3y)! zt3O&jYxTl?p!;a|Pu$14k8{86{?z@s`%CxN9yJ~#Y#yULIFHdD_dH&Byz+SC@z#^` zob36T=QK~=^P%S(&$nK{i}D)iHQMVFud!a^ydHYJ@p{`Dw5D2r(t28JzV*!3v%Ous z{k#Lb#omG5G$`@pZOUw6L}zf!*uevAFq`u*Vdi{Askhknoe zk-wY2yT7M@YkwdAAb**Euz!fZ%0J9M+y5i~A^wZ}SNL!A-{=3G|1tj){-^xU`2Xa8 z+5f8lum0ElZ~8y<|1-cfz&pS7Xz`oSS$_`w-?8Ve)nLEJ%HDy|j}77rB<7mpO%#N)&h#FNBR#8bu7#q-3=#OuX7#Jj|M z#QVet#K*)Z#HYk(#OK5p#8<_4#m^-`LP=-|D{+>1NxUV#5`T$EB9SO1F_JV%fy655 zDCsQeBIzb6m-LZTNcu^tBsG!=lC_duHpxxNL&=|k&Vjyx(m;8jB2XC^8WLU%7Mo5#S+0qVU_kXof3rJbc+q}`-FqClbf$E+bdI!9 z+9X{nT`pZI{Ytt)x>I^odPaIqdO>od`Y^d?xr@@P*)u!Iy%6 z4!#onOYpVe8^O1N?*!iqz90NB`1jx^!B2yq2ftL%3J--?p;EM0q$u(f7DabOUqzi_ zlw!PMhGL;&rDB6(x8kVcoZ?r-HN|zsO~n(%GsO$VYsH@-f)KY5_YlvJ)**EvT*zl3 z(?a-=nIW@7=Ga2!g)9j9Dr8m2nvico)`x5i*%GonWM{~QkZU2&l(f=c*+!{RW-7Ck zTBT9hMOmusqwKF7psZ8!%0>w=P)Sr$Rj?{V6|G8C<*GWVx~RIVda7(?s@|#!Ri&y%#i>44jZuB7nxLAj znyTVeGgY%y4XUqH2UM3-k3yNypwNU+L+Iqt8KLt+mxO*3x+Qdb=&sPcp@&1i3q2ls zD)dYk8x|av9HtF3hgrfpgmn(<8rCDMXINEOec0fzVPPY~J_-9YY(m(iuqk1i!mg`5 z)grarrjAs{sWs|kb(%Uyty34MP3l7R2kNfsQgyX@pn8aUxO$X&jC!1UqI$CWGxg`{ zdFtir)#`858`PWCyVQHs`_+fkht((4Kd7&U=Z5RUE#W=G`-E4A4-X#~J~4bs__XjD z;j_c%hA#_W8UA(nn(%eu8^gDRZwtQ?K}WQUuze8GHKJEUWyHXUArUxYT*TyvhKR)x zt0Fcn6+u`}XO#HEOzBd$hVi?|taC*rq=hY^n>o<_Wgcopds=@Kc7bdR(}PKulo zIW>}xeAUjWol84mJNI@Y+Kq2FvEAf$Q`^0Ya*A?^5=Oa4RYwhv8X0Aa8r}YRG#$-G zJ4XwnN7|w%L{EyI5Z&nF;ipsm{~D%V&=yzjA@Kn60<&LQ_R+w z?J>Jz_QvdwIT-V8%=wsCv29}e#ZHc05xYP3r`Q{@w`1?c-j971=MmRB&NnU~P7)`L z3yxF9g~hdvi;T;T%Z<~;6~vk1isGzso#H-->lRlMXDf}XisRy@#O;hb883);i zi`T`M#rKaN6F)9~V*Hf&Y4J1SXUETtUl6}2esTQf_-*k!sNv1x)eYE8JNohDk7s7cYJYqB(2O@GZe%_7YT%~zV$nzfppn(s9yG^aJ^ zG(TuAX)bGi(LB;T(LB?<)VxU)BvOfVBAe))C`(LEG$-~;9G^Hd@yo=`iF*?FB_2pT zlz2GtRN~ph3yBvKe@eWZcq{Q~5=in*QYUGW3X=LH**;3DO6s3fmozA8dD7aXtw}qQ zb|>viI+*lr(%GadNjH*iC*4bWknEByO!i5RO-@YioLrvVH@RPOb@GVhQOOgNrzB5H zo{>B+c|r2ZfO}) zsgF{hq`paG(wx(TY3^xWY2In_w2-vWv^Hr8X-R3RX&Gt8w8FIFw2o(Vx+ZAsgfwm8H}qr(a9IoqjLWO= zn2flL(u|=Q(=z5}EXY`t(U`G1V`s*mjQtshGLB??pK&7NbjB|k*E4Qq+|9V3@hIa- z#t*W^T#cmbpLkMCQfJ z2bsTT{*n1S^JV6nEGEk}t5ud~R_iQTmLf})rOpb^ipdq?)}?0wk>vM*)d&VHEvINSC#`-N7Z zrL>IJS?j9x*7|8hT8UPz)o7EoY1&M!R-32I*BZ6mv?baPwdLBr+J4$?Gf#F+GE-i+EdyewLfdGXn)Z@)4tTc$r0pGIZTdwj&DvtjwDB# zBhQJlj^tE?C!Ar_rVAGIZHGovuJ<(iQ5u=*o2cb#=Ny zx}mxex>366x`nz%-4fk$-Iuzrb$fJ2bjNk4bZ2$vb=P#ab@y}+bWe28bT4(U^^D$K zFVV~OA^K2#xW1iDAFYqo=jzS+Zu$~^slJ!KkG?`*s~@Z%rXQ)d=_l!@>1XI?>*wni z>KpY<`X%~R`fd8%`hEI?`lI?|`jh(8`b+xT`X~Bl`j`4Q`GR~Zzg50xzIVP~z9>I1 zUz(ql-zR@;{@nbn`G@k)FiJ7OXDVUa+fRZ^40rZwrnTTq?L-aIfHg!J~pF1y2o>!O7ra5E?uUtqr~ge}mEx zWr#7v88n7uLz+QvFc?gRLW9N7!O+Q2ZWw8pW|(VOW>{rdV_0X{XxL%cW!PibXEN%?n6a%f(%9Y@Ym7H$8*`01V}a3REHrjE_B4KI zEI0Nweq@vRA(Xp@u4)8uXPH3gU?rXW+4$=2D_$27_`(KN+0%{0R_+cd|t)U?dB+_ciP z$8^ke(sagj-gMD)$#mOv$8^{9o9U&QHM^MI%pT^}W?yrFS!E70w>3waqs%epc(cab z*<5R$WL{?8Yd&tiX#UB3#r&)JhWWPniTRoNrTMk_&q7d06-E^16jl{B6z;VZo-Djr zc)9SG!fS;$3V$zrRrqHSD58q|i$q0%MY1AAk*cUmQCU%CQB6^8(ZHf1MZ=0dEt*g? zxoB$9m7?E@9u_?=dRp|>0xYd89+uV?UyH(`vZyWL7QMw{sj!T*%(N`Gd}&!_S!-Eu z*<{&j*9uI0YvVX?&M_M`S80$FeMC)YhJZqD6t--p{y2ZNPy2rZT zddPa%ddYg*df)oU`o#Le`pWvo`nH3-LwbiVI;`oip~E)EnY{qQ=BJZe^Rwlk27#I#lfRSK4m;fe%NnkRV0;YobU;$VNR)CdY6<7_{fVE&9SPyo9 zonRN(4UU3i;5axBE`XoFHEX0GEljckup(cDvz>I`IMEiQSGSqR0rx4s(|WA z6;i#ZepD4Tgc?c>qlQx>sFBn->I-T-HG!H%&8B#24z-l}imIhn+No{Sc4`N;liEe? zroN{RPzR|))M4s4b%DA_U81f~SE=jN4eAbcmwHG&qMlLDsaMor)IZc)L?MJ)Az$Q& z{80cBAu$R>5)_1zQ3^^$X-I?8Q3leYOr%3uC>wQ0Jx~Gai3(9K)EgC{V$=uOOHh9_ z7*(L*XaxEkjYD6c@n|wyjFzCK=qt1gRiheIi|WufXd~K$Hlsc0J9G%uqaV--)PT;R z^XLM)h%TYa=qmah-9R_dUGxw=LXXjN^a}k&3ur(ybaUE+_N2XNZ#sY$(PBE74xvNo zFuJXsj;51o4Q-{n(cS4DbOBvV_oD~VgXs!-I6Z`GdL7JYXI& zFPT4?e^|&;tSjrm`miEa&W5o{R>P*V8AYs?&17|K7MsoL*&No$=CM|`J=>A(!HlG*fxV!e^%D91CAFiA)@Ev1c9yP|W z>W^-tViQ%-5wh5XnAkC0M#aad<053yW6lU%1#SX&FaQh|gw_E)$N>hB%k|_6xn5lF zI#2;BK^_>w4dyC{!b(o5(C*=O@!c0s>ozJTLG4r+ttJZN5)xzoSK%nYITVft0b{^t zz|IZfhH}HW;dKCmu|%VV8^Mj_KlR1@8h?>u8kqgj(Rnb(DLa}Q!{73kg)IWh9CC}n z60j6}#o0NI!`#?9Pz`E`Tpjm0H;!2O1>ZJcS=iTL^G9`l3$_s1ZQKNIB9WcMzX*s_ z>;d~fs`mgm=p26vHZ3Xvz-g!4bZ!PeRiv>041RUUjRybm{WoyMDL0Fo zO~x*9MzgMV=BBn`T}F{m#ze;@ywAu@aPOl!?t=$J$0KeIH<#%6vQfu!uOW*3?xW&V z@i9aXA0_sqUVzv9K0luxZ@}L~{w+73TR`L&I^~x~9Z_gYzUi0C`Z% z)pB)Y=;gdUu#O6a;l!+#@h}2LI+d*CR=tnK^6(pZ)(PDSR1=~JJY!xZS)*bYY~k1mOfY)e*&sa1xvhr*PkKd%5qqeRXge zoC0USncRMEA9s*D!Xx>xhU+tj&YZ8hpORM z++lvDylvY$xJD4V94?0|;7Yg(uI7$%$GGEMJ@>*3dM19yV^kvqwq;;!>_ z&=T*Rg4r89Tf$v%H{1iigL~ok{Hh?akZa&hb7#1-+&S(%e<~=De-(5+@jARA2wk?! z;bWsWx8Yrf5qG$o)$ks7`$Oj+JDtB(;MtwW&GPu(!G7t_;2S~cO86YUfG^>n@D=c~7;b+I*-l zl4>jPuBM{6zpJTe?jKIkJvS@cQdm~pzN(^hU`fZ0#RH4V%bU8ZD2>2-6_r4#sYEJ? zN~Th%R4OeE0|5qvKp_Sc1_%Qh0|olA* zoE!fi7e`U{k9FiIOpV1L00R*QV&2kPWS>Zpy7<3COrxe#Gcb@~K-`rPTFdYhIRCXv zmi=d}xzvJ>Xn<>}Mbu*M1O`DEC^%(rfh+_HWT&ZR1RK>#FC~ho-BZ9JOL357c!W!@E1!Zdl`=}GtkJL%(6xBeTrp{1jsdHRj31-T+OU4w#A z2nt1ENQqjbHYglLAd=&J46GQ~FldKCdki{Y@CgPTG3bOr=QXIUK#F2eEQ&+%NJXyI zh(x;!M~v%=!BY(W!q9+WJMsXMZWB4>r<;4JT!CGWY>p9gkOAc)BQhZ~%0m{EkH}b` zV$cl(QszA{D8Qg6289^(!k{+>MQczy)LtMZBPEib&ZrCOiimtM27L&TkYOh}|IfkT zD-2FyaNPkpN{T8)Nc(2rAg$SW)z*raA8`b^+mi$1OW zu832!`M8YUg=m5!dE~bI-{eg}yaO9k(KIw2%|J8JEHoQ~K^P3ifKXc{24vtN7z|yB z=AgOgOEeG7M+?wG42EGa9D~sq5PIS;n2EtG{$<8Yer}Sa_j0sG;9Up0f=@v=(48yg z`f>fa0d;6CS_kqFp@|U~jC3&fC{E!l?jwqIwg1nB+Bx(s+9GgAThTVO9qm9n(Jqw8 zw@Pl`YzhXSVK5y7;`u~=XmX-==BG!FUWN5s%SfbcAS`kB*_^ zU2}^_B1`*}7FT?dJFuvjctU(2@fyoNOjb}oqLX}5ij=BBr+9UW!rs{PG&+NhV=xYb zFNk3G4u!pX6&JPdO;S3r(vxb^{}Ty3k(%HP{MdIK?I~z#{ zNbrD9Po2Xr)4BVhKN<;Ps*~x^3rF5xV!-o-dYLzRjsA8Z>J0{StIFcSpJCC$NC=TbWgev?GzXseE2N}>j}m=0r9EPoj!uuHFOEx z7XwmB8{gM5-JdQad8JAHZ>XjRV(<+gk(usQNjvz1CSl!FO%wju%#Y4&-)vMP(zZB} z#!G$5_*`9-W8(3nM>S$+OXFbU9kC-|-pL=($?a3<86OM#OcHiN8@ruh|FJ3Ta|!I| zFEQBjuZauj>JP&H|BgCcL)X%E^m2Lyy^<#J{tkn^xH;H|K|KZsG57(46a3&TwS67E zkwpCeY$)hWjT;IK$o9gqqiC{fJF%*9Q}I8%Lhq*cH1Y}t$1vFco>UrxuwO8{mOelq zqz_?0Xyq^lN16y_fIG2}FpASC(mb}n)5Af}QI%EY6(f3;7giK`vQ5SRAve5xN}q0| zgrgs$1o}c_qKJM%31t0Hz~9d9=|^8^Ow#d2`+j#s`VS0FIttuM-=rOzYWfy^o4!Ne z#h?L$(-@q=;A|azpMF4Xq#t2$4ugx%Mc8Fd+1Xs&$2nJZX;)g(*Ll^|?3}Rj%8QEm z-Fm;cche31k|sNtI{Hug75x|e8iVr~T)^Nb41TU7)SgJc6-XWMo`}IOyf_C-S;6dO z@AJ>NF+u`H#vOx8)edk^xm12SA&kBV%IB7~IC-4hAH7_nMIQZt8kJQ#FC= z!)dAMsr{o^V?J%f+Wn7V?ZfHk1Miq3;$J$tL@4PJCdV=)0%UjFn59wzK1M}C!o@r1 zC#H-USl|i5_*p7{{))x}GUfbZO$=fNGZnloJ(Q|pD*62MwsvL+Gwgldhhy-pDet2k zc^}P?N&PtnfBu_yj`{pQ2^`0esrUs3FFA!(kumDg2l<}NO#46LWU)fTUlH=n;LqiH zB=HQ{G%aW5FmstNnR(273<##l%=kA3WM+K3oLR^$Viq$?n57sBFqC1~7Q<8w)A&GR z7{Aykp$a_3{1T%tkBuS_Ls$N&No+sB9CB3NK@8ohnZp>mbIK3* zkIZrA1et-Edh`>9Lb8A%m&{4WC2Ynitxej`Fh4s2R*z0I=a~ykqwF{gn`7vKp(kl! zE|TAR=2vG|FXyKaBiNEt^2O#f`!(hk*`_kriO5Y1y`AkXYMou`-w8t@r~Jg}XlF}t z)v)r4{*_I`KVqIbjbxrUWqlk*zU#&*yJhz(9MQhGVrXga;`cpXF|Yp(#~W-XM|X-Q zZEsmY;}X2U(`S_PY*IZYLN+Q^MUD#-$f;b@u^fw7=DiY@Bq-p$4%UrzQkpZcY%>f+ z?-v8CC+kgOPT~nBRI@EGIU`h_Y2SEq#I|C|X<{`ZygaU&^~W&q-)>^oaVo=HC()^9 zr5H;7Z3<$8NfWEUP+INu+X0V2zT8JzgLXgK z4e!pM$l(%e`k!lyplsQ@y)|q5pXVK%*Y85kc4B*wf?zwdUD&Sdr^L+e7)E0lgCVgo z&S_)(3UrL^i4ut=y&bzyj3J>Ha*mB*3fG4Os=(8aR7Cr#!ruLL^HsOHszS}vA*(j$7fx=&JZQBj|`*!ZMqQkYKAM1P1GexWfe zi{;oa$UMnnb}aijOX@>|VLFBx7;5X-@x-%<>?8~`9X@4anA23{y7B=73I|md7dfh& zkFZ48$#TNsYw>{M-c`j#j>7Lj?mL!NmXZ^{cI07`qchpr1fuLL40Y8kk6{+4Xzc5Z zOQqIH8co9U*!dsqJ=sOuG7B*I75{ zTy&T{_Mi6Sj{Y`B|05j&MJL(Qgb>(MYy*bvG3-#|*xx&L^CYSAPh>p!BnTAo)h$GP z_fJ~$1yM3bL@n)2#UqM~v=zPkmJThhXkah0mp&nQsw(Dyz(wFM2oi(~RDxtdI(dos zoQAX;?L%G{%4r38Vc3T3OxltSh=DGrN7Ga2Y4i+w7R}Rh>3Q@5dKGyuxQ_ms{)XO6 zZ>4vT_k*YDhx8k!1*2y=GnGu0ox#jxW-2qCnMvN{Eh1CPSLAJ8EqRmo8|y+|!j-Wj z$?G*c!Ob{!Jj;{JtYlY{mul->SQk$hkxQ^k8<(~&i7weL78k2aJC_bF9bF1s3SD}; z6uXqTl)B7uIpFfdRphF44R?)njdqQ7jdwM;+FU!jc6ROR+RfEo>N?PMkZXnOFxL^T zqg=|1 zw@SCsZgw~9_PN^}x20~Y+`e_&>bBi&r`vA#R_;>w2=^HGICqtMvU{q##y!J5$KB%I z+r6KAr91Dw(0!--DZBg6?!UU6;mv8Jq2FcBI*{X7$bNCz`98XEx7ju5WH=zNz`% z=KGo-Xnx2;>tXS*dbIQC;IYMHzsEt3!yZRHQ#=ixMo+V+#dEvoAzG%)*9ota-db;qx7E9ycL(p?-p9P_y-#?bY+-HDy+uKb!WO+-oNw_* zi|Z|Jwz%E0L(9UJz3nZFTb8u^spa*SH(TCrdDo}2Pq9ylPpMCTpL;&9d|vzf?en%( zX{({FhPN8oYILhNzOKIBzAb%Q`TF?=_$quue8YTO`-b~Q`Wk%8eaHAN_x;*;m+x-h z1HPwxfA+oTd)fCl->bfNeDC=_@O|X_#P^w>hhKtUmfrxsA%0{1rur@Lv)B05`K|C< z<+sLfv)>lKZGJoacKPk`JM4GH@3P+=zo&lB{a*UL@_X%%{26~2e>Z=je{=uV{#O4U z{^R{;_%HTf?Z3(YTmP;8+x>U?AMiiqf5iWof4%<+|MUL8`QP(@?*G#NmH%u1zXO;6 zmjJf_VLyiMc$&8qE;e5kzAw@g^0pLtwrIYcu|HZPt;M=S=3e3P1HkFA}SU27nO<1 zMT12nMdL-hXt8LiXql)+R3}<5+928}+AP{4+9vv5bX;^nbVc;L=$hz;$bL)oSoBo% zT=Y`(O7vQc#NOgSaT{@*SS41Alf)_FEU{i}5F5p2u|?cTTr3_W9wQzvo+zFyo+_R$ zo+n-)UL;;3{z_aeUL)QnJ}5pRJ}GVxpAnxE|0=#B{#|@cd_#OIkP2)Qm>AeIurzR3 z;Ml+!f%5|w1}+X<8o10JxH@oc;QGJ~fg1xi2ks6$9(W<}O5pE-*8*<@-U@si_%!f& z;LE^Qfv+V<;w2GFT1#Rj@sb2dq9j?OlVnSBB)JlkBu~;&(o@n;GEBlr#!ALX#!Dtj zW=VL-T**Ai0?8ston*aar{sX-kmQKun515ER&rkQljIl4C5io4$xX=<$y=$5)J-as zHkW!z{iPylpj0ZAOBK=xX_8bg&6S#@7O7R*PFf%>l=hYuOAksLq`ycnNq?1Ik^U~d zE4?p$D19t_Dt#{Vl7+}jvLacTY>=!%Rwc8`rpji>X36HrzLd?EeJk4|J1#pXyCC~n zc2Ra&_M2UHM|My4K=w%XMD|SfLJs837X+~XM@fM{Sjop5p*l)ZqWUphe2AlT6b*`NiYLKzuy1fka8z*H z;F#d#;GAGfaEIXT!99X|26MsFf~N=12%Z(ZG`KprHh4wws^B%jyMqq}9}Yem+z@;| z_(q%6w)=Mf5^a) zK_L|(Lqdj!j0*WIgbNuPGBspg$TuNJLN0|o4s{I;3RQ;=54DGm51kphB(yGcW$2pF z^`YN}ZVTNRx+ipR=##K!VWDAd!;-_&!ZN~iVfrw8ZkQ>ob67!Gudw2CzjB~*uyVL^ zl=3qrR(`IWs+^(xQdz59qg=22M!8wJQ@LBYSGiw#P+6}$tGpDh4bKYC3;#5{S9odo zP<#02;p4+6g-;Ei5k5P7Zg@@j^6*vRYs0?|-x&UF_}1`?5rT*|5gj5rMifMpL=1|k zj2Ip9dBntsMG;FPRz`diu{mN(#I}gSL0KO$~K+>W>x@i5{^#Ir~c zNk!6;E|J3{zlfX=IVo~#Dcnv(Xmrvr^n8UofA7R zc46$2*k!RBVmHNZiQN{vGj>nx-q?My2VzghzK9En>k~IIt}bqG+)r^=agmV>Icd)1S)OG5W>NVK*E%>U#B$>IU^$^#%1W>dWeT>WAtl>gVb|)vwk6B!WaL(KAt;s7^E`mLz_WI4f~w z;*t@mE0k@Fu5qXB)MPm z@Z^!n6OtzrywSew(^2bw}#q z)cVvPQyWsxr~aIJDfQRXd#P{JT+_VMq-nuvVQFpB+NQ;(snXPGxoPdv3et+wO49nJ zm8Vst4M`i8_JuudecGn9y=e#2j-(w=JDGMm?OfW0w5w?k(w?XNnf5yE9}TT>(YR}x zYdkgn8nH&Ik!zwfX_^d;PNUc4YRsB^O*>7Yrbttw>8B~v4AN9;hH8duzR*n9%+$=* z%+Y+Q`ASoxS*}^BS)*B}*`nE}sn=Z5{Gqv_xvjaYu|Lqf)V$HWO^4|y-7CFix^H?w zdSJRVJwClddSQA|dP#b}^s@Bw^pWY?(+{N|O|MTsk&&EX$mp9fBx6{{h>X!0Ut~%Q%`*pYdZxL&lkmOBugq{GM?wIJRV&nbXuY*Q z+F)&%wvAmIsg2ggX%n_J#J9_Ko&!rdMW*Oj)KPGc>bxWtolK|DMd;ef#OxBgG>shz5?q)s8dYbhj z>rZ<&$ac&2%@$`%vxBn3vfE@wX1C2w%FfJgpWQcmZ1$4uW!W{^%d=Ny@5?@(-H?4* zFVGA1&GlaTmU>@(gubmlRQnSt`aHc=-(KHQ-$nnazOTN&exQD^{xdz+kJC@k z&(Y7*FVrv5uhFm9f1}^5->E;MKdwKax1ZGC(%;qJ*FVxf(ZAOJlLK<79AQpEPD)O3 z&cK{GISX?3=KPRzGN&QuY|e$8pL2fCxtVh(=YGz^oHqtwKnB(zGDk~=kbSMG1Q{}`JYrN#(jTVt$I zWlS_C8_mWp#%{&}V=rT|vBWsgILgQwKR1pyPBBh5&NA}GImT+^I^zc8CgT?4cH=JN zVdF9555|+m)5deg3&w{gJ7p4@{7o{G!W3$1ZHhL6zqyQT-G$EIhd z7iP-Lm|e|6vxnKsEHTT?!R9b?8*_v?$((9VH)oo&%{g{+2XiNLS95oBPjfHxSn~{X zjd{6wm3giCYx73)x8`l;o#s8}Q|8m=bLOAS7tNQ=SImEyubXd~@8r>W{&|sksd*jp z`sR(xTafon-j2MTdAsutuH@a$yOVb>@0EqIxLSl34~w_O z$Kq!Ru_!I}a7&aW+7f3`S=5$xmI0RWmTJpB%a4|GmY*yaEx%f>TW(qISngXM=Ck=J z`NjDI^9Scw<`2mqm%k`~SN_rbhWxYn7xI6}znp&~|91Y}{0I4u^PgJXtg+TCYkO-? zYj0~GYpHdBb)c2APP0z8&alq1F11!$>#QrSYpm<+)*aTJ)?L;;*0a{D)@#-q*4x&5 z)(6&?)_-ikhHR|O)z-=;vPo=mTd1wIEy5OM)7p%-PPT5g0$VRziLIZl%vNq2V;gVd zZS!r5Y)fsmwiUM3wzanJZ1uKNwllW#wu`pQw%=@5ZExGj+f8h@u-#YfmOIae1?125 P8ZX$(jo(e5?N + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Vendoo/EtsyRESTAPIManager.swift b/Vendoo/EtsyRESTAPIManager.swift index d9e1204..e36346e 100644 --- a/Vendoo/EtsyRESTAPIManager.swift +++ b/Vendoo/EtsyRESTAPIManager.swift @@ -608,6 +608,28 @@ extension EtsyRESTAPIManager { ) } + //gets listing info + func getListingInfo (request: String, onCompletion: ServiceResponse?) { + self.oauthswift.client.get(self.baseURL + request, + success: { + (data, response) -> Void in + let dataString = NSString(data: data, encoding: NSUTF8StringEncoding) + let dict = self.convertStringToDictionary(dataString! as String) + print(dict) + print(response) + var dict2 = (dict!["results"] as! [[String : AnyObject]]) + + let listingState = dict2[0]["state"] as! String + + onCompletion!(["status":listingState], nil) + + + }, failure: { + (error) -> Void in + print(error) + } + )} + //sends the pregenerated url as a request to api service func sendPOSTRequest(request: String, var body: [String: AnyObject]?, onCompletion: ServiceResponse?) { diff --git a/Vendoo/HomeViewController.swift b/Vendoo/HomeViewController.swift index 8a1ee65..4d3c1a3 100644 --- a/Vendoo/HomeViewController.swift +++ b/Vendoo/HomeViewController.swift @@ -257,12 +257,25 @@ extension HomeViewController: ServiceNotificationManagerDelegate { self.notifications.append( [ "network": "etsy", - "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, + "message": (etsyInfo as! [String : AnyObject])["notification"] as! String, "type": "ended", - "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "key": (etsyInfo as! [String : AnyObject])["listingKey"] as! String, "UUID": NSUUID().UUIDString ] ) + self.endedListings.appendContentsOf( self.userListings.filter({$0.key == ((etsyInfo as! [String : AnyObject])["listingKey"] as! String)})) + self.userListings = self.userListings.filter({$0.key != ((etsyInfo as! [String : AnyObject])["listingKey"] as! String)}) + let itemsView = self.viewControllers![0] as! ItemTableViewController + + self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(((etsyInfo as! [String : AnyObject])["listingKey"] as! String))").observeSingleEventOfType( .Value, withBlock: { + (snapshot) -> Void in + + var listingDict = snapshot.value as? [String : AnyObject] + listingDict!["listingStatus"] = "Ended" + self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(((etsyInfo as! [String : AnyObject])["listingKey"] as! String))").setValue(listingDict) + + itemsView.itemTable.reloadData() + }) } } @@ -310,13 +323,15 @@ extension HomeViewController: ServiceNotificationManagerDelegate { self.notifications.append( [ "network": "etsy", - "message": (ebayInfo as! [String : AnyObject])["notification"] as! String, - "type": "", - "key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String, + "message": (etsyInfo as! [String : AnyObject])["notification"] as! String, + "type": (etsyInfo as! [String : AnyObject])["type"] as! String, + "key": (etsyInfo as! [String : AnyObject])["listingKey"] as! String, "UUID": NSUUID().UUIDString ] ) } + //@TODO: add firbase logic to add notifications and delete already viewed notifications + } } diff --git a/Vendoo/ServiceNotificationManager.swift b/Vendoo/ServiceNotificationManager.swift index cac2c7e..a59fee3 100644 --- a/Vendoo/ServiceNotificationManager.swift +++ b/Vendoo/ServiceNotificationManager.swift @@ -114,7 +114,45 @@ class ServiceNotificationManager: NSObject { } if(etsyID != nil){ + if (self.etsyManager.isAuthorized) { + self.etsyManager.getListingInfo ("/listings/\(etsyID!)", onCompletion: { + (listingNotificationInfo, error) -> Void in + + let info = (listingNotificationInfo as! [String : AnyObject]) + + //@TODO: Test this code with the draft condition for both expired and sold_out + if ((info["status"] as! String == "expired") || (info["status"] as! String == "removed")) { + + ServiceNotificationManager.delegate?.listingHasEnded( + nil, + ebayInfo: nil, + amazonInfo: nil, + etsyInfo: [ + "type": "Ended", + "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has ended on etsy.", + "listingKey": listing.key] + ) + + + }else if info["status"] as! String == "sold_out" { + + ServiceNotificationManager.delegate?.listingHasNewNotifications( + nil, + ebayInfo: nil, + amazonInfo: nil, + etsyInfo: [ + "type": "Sold", + "notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has sold out on etsy.", + "listingKey": listing.key] + ) + + } else if info["status"] as! String == "draft" { + + } + + }) + } } if(amazonID != nil){ From bf987b6418d27445fdb53cb55cafd7c53147012c Mon Sep 17 00:00:00 2001 From: Okechi Onyeje Date: Thu, 3 Nov 2016 22:48:49 -0400 Subject: [PATCH 6/6] Facebook Notifications and Notifications view controller implemented --- Vendoo/NotificationTableViewCell.swift | 24 ++++++++++++++++ Vendoo/NotificationsViewController.swift | 35 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 Vendoo/NotificationTableViewCell.swift create mode 100644 Vendoo/NotificationsViewController.swift diff --git a/Vendoo/NotificationTableViewCell.swift b/Vendoo/NotificationTableViewCell.swift new file mode 100644 index 0000000..05e6389 --- /dev/null +++ b/Vendoo/NotificationTableViewCell.swift @@ -0,0 +1,24 @@ +// +// NotificationTableViewCell.swift +// Vendoo +// +// Created by Okechi Onyeje on 11/2/16. +// Copyright © 2016 Okechi Onyeje. All rights reserved. +// + +import UIKit + +class NotificationTableViewCell: UITableViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} diff --git a/Vendoo/NotificationsViewController.swift b/Vendoo/NotificationsViewController.swift new file mode 100644 index 0000000..3dbecdb --- /dev/null +++ b/Vendoo/NotificationsViewController.swift @@ -0,0 +1,35 @@ +// +// NotificationsViewController.swift +// Vendoo +// +// Created by Okechi Onyeje on 11/2/16. +// Copyright © 2016 Okechi Onyeje. All rights reserved. +// + +import UIKit + +class NotificationsViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // 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. + } + */ + +}