Skip to content

Commit

Permalink
Merge pull request #77 from cuappdev/joe/filter-networking
Browse files Browse the repository at this point in the history
Filter networking
  • Loading branch information
jmf373 committed Oct 3, 2018
2 parents b9b3ba7 + d1ff0f9 commit 2b99c5a
Show file tree
Hide file tree
Showing 9 changed files with 378 additions and 85 deletions.
2 changes: 1 addition & 1 deletion Fitness.xcodeproj/project.pbxproj
Expand Up @@ -347,8 +347,8 @@
buildConfigurationList = C7DFABDD204206E000545B0B /* Build configuration list for PBXNativeTarget "Fitness" */;
buildPhases = (
9BD15CB1CD033C4DBE57E681 /* [CP] Check Pods Manifest.lock */,
C7DFABC7204206E000545B0B /* Sources */,
0C3AC6132155BF5100761495 /* Generate Apollo GraphQL API */,
C7DFABC7204206E000545B0B /* Sources */,
C7DFABC8204206E000545B0B /* Frameworks */,
C7DFABC9204206E000545B0B /* Resources */,
7B68B6796476F8A7F1E6B485 /* [CP] Embed Pods Frameworks */,
Expand Down
263 changes: 263 additions & 0 deletions Fitness/API.swift
Expand Up @@ -168,6 +168,187 @@ public final class ClassesAtGymQuery: GraphQLQuery {
}
}

public final class AllIntructorsQuery: GraphQLQuery {
public let operationDefinition =
"query AllIntructors {\n classes {\n __typename\n instructor\n }\n}"

public init() {
}

public struct Data: GraphQLSelectionSet {
public static let possibleTypes = ["Query"]

public static let selections: [GraphQLSelection] = [
GraphQLField("classes", type: .list(.object(Class.selections))),
]

public private(set) var resultMap: ResultMap

public init(unsafeResultMap: ResultMap) {
self.resultMap = unsafeResultMap
}

public init(classes: [Class?]? = nil) {
self.init(unsafeResultMap: ["__typename": "Query", "classes": classes.flatMap { (value: [Class?]) -> [ResultMap?] in value.map { (value: Class?) -> ResultMap? in value.flatMap { (value: Class) -> ResultMap in value.resultMap } } }])
}

public var classes: [Class?]? {
get {
return (resultMap["classes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Class?] in value.map { (value: ResultMap?) -> Class? in value.flatMap { (value: ResultMap) -> Class in Class(unsafeResultMap: value) } } }
}
set {
resultMap.updateValue(newValue.flatMap { (value: [Class?]) -> [ResultMap?] in value.map { (value: Class?) -> ResultMap? in value.flatMap { (value: Class) -> ResultMap in value.resultMap } } }, forKey: "classes")
}
}

public struct Class: GraphQLSelectionSet {
public static let possibleTypes = ["ClassType"]

public static let selections: [GraphQLSelection] = [
GraphQLField("__typename", type: .nonNull(.scalar(String.self))),
GraphQLField("instructor", type: .scalar(String.self)),
]

public private(set) var resultMap: ResultMap

public init(unsafeResultMap: ResultMap) {
self.resultMap = unsafeResultMap
}

public init(instructor: String? = nil) {
self.init(unsafeResultMap: ["__typename": "ClassType", "instructor": instructor])
}

public var __typename: String {
get {
return resultMap["__typename"]! as! String
}
set {
resultMap.updateValue(newValue, forKey: "__typename")
}
}

public var instructor: String? {
get {
return resultMap["instructor"] as? String
}
set {
resultMap.updateValue(newValue, forKey: "instructor")
}
}
}
}
}

public final class AllClassNamesQuery: GraphQLQuery {
public let operationDefinition =
"query AllClassNames {\n classes {\n __typename\n details {\n __typename\n name\n }\n }\n}"

public init() {
}

public struct Data: GraphQLSelectionSet {
public static let possibleTypes = ["Query"]

public static let selections: [GraphQLSelection] = [
GraphQLField("classes", type: .list(.object(Class.selections))),
]

public private(set) var resultMap: ResultMap

public init(unsafeResultMap: ResultMap) {
self.resultMap = unsafeResultMap
}

public init(classes: [Class?]? = nil) {
self.init(unsafeResultMap: ["__typename": "Query", "classes": classes.flatMap { (value: [Class?]) -> [ResultMap?] in value.map { (value: Class?) -> ResultMap? in value.flatMap { (value: Class) -> ResultMap in value.resultMap } } }])
}

public var classes: [Class?]? {
get {
return (resultMap["classes"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Class?] in value.map { (value: ResultMap?) -> Class? in value.flatMap { (value: ResultMap) -> Class in Class(unsafeResultMap: value) } } }
}
set {
resultMap.updateValue(newValue.flatMap { (value: [Class?]) -> [ResultMap?] in value.map { (value: Class?) -> ResultMap? in value.flatMap { (value: Class) -> ResultMap in value.resultMap } } }, forKey: "classes")
}
}

public struct Class: GraphQLSelectionSet {
public static let possibleTypes = ["ClassType"]

public static let selections: [GraphQLSelection] = [
GraphQLField("__typename", type: .nonNull(.scalar(String.self))),
GraphQLField("details", type: .object(Detail.selections)),
]

public private(set) var resultMap: ResultMap

public init(unsafeResultMap: ResultMap) {
self.resultMap = unsafeResultMap
}

public init(details: Detail? = nil) {
self.init(unsafeResultMap: ["__typename": "ClassType", "details": details.flatMap { (value: Detail) -> ResultMap in value.resultMap }])
}

public var __typename: String {
get {
return resultMap["__typename"]! as! String
}
set {
resultMap.updateValue(newValue, forKey: "__typename")
}
}

public var details: Detail? {
get {
return (resultMap["details"] as? ResultMap).flatMap { Detail(unsafeResultMap: $0) }
}
set {
resultMap.updateValue(newValue?.resultMap, forKey: "details")
}
}

public struct Detail: GraphQLSelectionSet {
public static let possibleTypes = ["ClassDetailType"]

public static let selections: [GraphQLSelection] = [
GraphQLField("__typename", type: .nonNull(.scalar(String.self))),
GraphQLField("name", type: .scalar(String.self)),
]

public private(set) var resultMap: ResultMap

public init(unsafeResultMap: ResultMap) {
self.resultMap = unsafeResultMap
}

public init(name: String? = nil) {
self.init(unsafeResultMap: ["__typename": "ClassDetailType", "name": name])
}

public var __typename: String {
get {
return resultMap["__typename"]! as! String
}
set {
resultMap.updateValue(newValue, forKey: "__typename")
}
}

public var name: String? {
get {
return resultMap["name"] as? String
}
set {
resultMap.updateValue(newValue, forKey: "name")
}
}
}
}
}
}

public final class AllGymsQuery: GraphQLQuery {
public let operationDefinition =
"query AllGyms {\n gyms {\n __typename\n name\n id\n description\n popular\n times {\n __typename\n day\n startTime\n endTime\n }\n }\n}"
Expand Down Expand Up @@ -335,4 +516,86 @@ public final class AllGymsQuery: GraphQLQuery {
}
}
}
}

public final class AllGymNamesQuery: GraphQLQuery {
public let operationDefinition =
"query AllGymNames {\n gyms {\n __typename\n name\n id\n }\n}"

public init() {
}

public struct Data: GraphQLSelectionSet {
public static let possibleTypes = ["Query"]

public static let selections: [GraphQLSelection] = [
GraphQLField("gyms", type: .list(.object(Gym.selections))),
]

public private(set) var resultMap: ResultMap

public init(unsafeResultMap: ResultMap) {
self.resultMap = unsafeResultMap
}

public init(gyms: [Gym?]? = nil) {
self.init(unsafeResultMap: ["__typename": "Query", "gyms": gyms.flatMap { (value: [Gym?]) -> [ResultMap?] in value.map { (value: Gym?) -> ResultMap? in value.flatMap { (value: Gym) -> ResultMap in value.resultMap } } }])
}

public var gyms: [Gym?]? {
get {
return (resultMap["gyms"] as? [ResultMap?]).flatMap { (value: [ResultMap?]) -> [Gym?] in value.map { (value: ResultMap?) -> Gym? in value.flatMap { (value: ResultMap) -> Gym in Gym(unsafeResultMap: value) } } }
}
set {
resultMap.updateValue(newValue.flatMap { (value: [Gym?]) -> [ResultMap?] in value.map { (value: Gym?) -> ResultMap? in value.flatMap { (value: Gym) -> ResultMap in value.resultMap } } }, forKey: "gyms")
}
}

public struct Gym: GraphQLSelectionSet {
public static let possibleTypes = ["GymType"]

public static let selections: [GraphQLSelection] = [
GraphQLField("__typename", type: .nonNull(.scalar(String.self))),
GraphQLField("name", type: .scalar(String.self)),
GraphQLField("id", type: .scalar(GraphQLID.self)),
]

public private(set) var resultMap: ResultMap

public init(unsafeResultMap: ResultMap) {
self.resultMap = unsafeResultMap
}

public init(name: String? = nil, id: GraphQLID? = nil) {
self.init(unsafeResultMap: ["__typename": "GymType", "name": name, "id": id])
}

public var __typename: String {
get {
return resultMap["__typename"]! as! String
}
set {
resultMap.updateValue(newValue, forKey: "__typename")
}
}

public var name: String? {
get {
return resultMap["name"] as? String
}
set {
resultMap.updateValue(newValue, forKey: "name")
}
}

public var id: GraphQLID? {
get {
return resultMap["id"] as? GraphQLID
}
set {
resultMap.updateValue(newValue, forKey: "id")
}
}
}
}
}
16 changes: 8 additions & 8 deletions Fitness/Controllers/ClassListViewController.swift
Expand Up @@ -17,9 +17,9 @@ struct FilterParameters {
var encodedStartTime: Double!
var endTime: String!
var encodedEndTime: Double!
var instructorIds: [Int]!
var classDescIds: [Int]!
var gymIds: [Int]!
var instructorNames: [String]!
var classNames: [String]!
var gymIds: [String]!
}

class ClassListViewController: UITableViewController, UISearchBarDelegate {
Expand All @@ -44,7 +44,7 @@ class ClassListViewController: UITableViewController, UISearchBarDelegate {
dateFormatter.dateFormat = "MM/dd/YYYY"
selectedDate = dateFormatter.string(from: Date())

filterParameters = FilterParameters(shouldFilter: false, startTime: "6:00AM", encodedStartTime: 0, endTime: "10:00PM", encodedEndTime: 960, instructorIds: [], classDescIds: [], gymIds: [])
filterParameters = FilterParameters(shouldFilter: false, startTime: "6:00AM", encodedStartTime: 0, endTime: "10:00PM", encodedEndTime: 960, instructorNames: [], classNames: [], gymIds: [])

tableView = UITableView(frame: .zero, style: .grouped)
tableView.bounces = false
Expand Down Expand Up @@ -88,8 +88,8 @@ class ClassListViewController: UITableViewController, UISearchBarDelegate {
func updateGymClasses() {
if filterParameters.shouldFilter {
AppDelegate.networkManager.getGymClassInstancesSearch(startTime: filterParameters.startTime, endTime: filterParameters.endTime,
instructorIDs: filterParameters.instructorIds, gymIDs: filterParameters.gymIds,
classDescriptionIDs: filterParameters.classDescIds) { (gymClassInstances) in
instructorIDs: filterParameters.instructorNames, gymIDs: filterParameters.gymIds,
classNames: filterParameters.classNames) { (gymClassInstances) in
self.allGymClassInstances = gymClassInstances
self.validGymClassInstances = self.getValidGymClassInstances()

Expand Down Expand Up @@ -232,8 +232,8 @@ class ClassListViewController: UITableViewController, UISearchBarDelegate {
let filterViewController = FilterViewController()
//account for if they .shouldfilter
filterViewController.selectedGyms = filterParameters.gymIds
filterViewController.selectedClasses = filterParameters.classDescIds
filterViewController.selectedInstructors = filterParameters.instructorIds
filterViewController.selectedClasses = filterParameters.classNames
filterViewController.selectedInstructors = filterParameters.instructorNames
filterViewController.startTime = filterParameters.startTime
filterViewController.endTime = filterParameters.endTime

Expand Down

0 comments on commit 2b99c5a

Please sign in to comment.