Created
August 20, 2016 13:53
-
-
Save mitulmanish/f88b417121ba7ddc36506ee54a7c6af0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// Event.swift | |
// OnTheHouse | |
// | |
// Created by Mitul Manish on 16/08/2016. | |
// Copyright © 2016 Mitul Manish. All rights reserved. | |
// | |
import Foundation | |
let dateFormatter: NSDateFormatter = NSDateFormatter() | |
func timeStringFromUnixTime(unixTime: Double) -> String { | |
let date = NSDate(timeIntervalSince1970: unixTime) | |
// Returns date formatted as 12 hour time. | |
dateFormatter.dateFormat = "hh:mm a" | |
return dateFormatter.stringFromDate(date) | |
} | |
func dayStringFromTime(unixTime: Double) -> String { | |
let date = NSDate(timeIntervalSince1970: unixTime) | |
dateFormatter.locale = NSLocale(localeIdentifier: NSLocale.currentLocale().localeIdentifier) | |
dateFormatter.dateFormat = "EEEE" | |
return dateFormatter.stringFromDate(date) | |
} | |
class Event { | |
let id: Int? | |
let type: String? | |
let name: String? | |
let rating: Int? | |
let imageUrl: NSURL? | |
let description: String? | |
let priceFrom: Double? | |
let priceTo: Double? | |
let fullPriceString: String? | |
let ourPriceString: String? | |
let ourPriceHeading: String? | |
let membershipLevels: String? | |
let soldOut: Bool? | |
let comingSoon: Bool? | |
let isCompetition: Bool? | |
var competition: Competition? | |
let showData: ShowData? | |
var thumbNailImage: UIImage? { | |
get { | |
let data = NSData(contentsOfURL: self.imageUrl!) | |
return UIImage(data: data!) | |
} | |
} | |
init(data: [String: AnyObject]) { | |
if let id = data["id"] as? String { | |
self.id = Int(id) | |
} else { | |
self.id = 0 | |
} | |
if let type = data["type"] as? String { | |
self.type = type | |
} else { | |
self.type = "" | |
} | |
if let name = data["name"] as? String { | |
self.name = name | |
} else { | |
self.name = "" | |
} | |
if let rating = data["rating"] as? String { | |
self.rating = Int(rating) | |
} else { | |
self.rating = 0 | |
} | |
if let description = data["description"] as? String { | |
self.description = description | |
} else { | |
self.description = "" | |
} | |
if let imageUrl = data["image_url"] as? String { | |
self.imageUrl = NSURL(string: imageUrl)! | |
} else { | |
self.imageUrl = NSURL() | |
} | |
if let priceFrom = data["price_from"] as? Double { | |
self.priceFrom = priceFrom | |
} else { | |
self.priceFrom = 0.0 | |
} | |
if let priceTo = data["price_to"] as? Double { | |
self.priceTo = priceTo | |
} else { | |
self.priceTo = 0.0 | |
} | |
if let fullPriceString = data["full_price_string"] as? String { | |
self.fullPriceString = fullPriceString | |
} else { | |
self.fullPriceString = "" | |
} | |
if let ourPriceHeading = data["our_price_heading"] as? String { | |
self.ourPriceHeading = ourPriceHeading | |
} else { | |
self.ourPriceHeading = "" | |
} | |
if let ourPriceString = data["our_price_string"] as? String { | |
self.ourPriceString = ourPriceString | |
} else { | |
self.ourPriceString = "" | |
} | |
if let membershipLevels = data["membership_levels"] as? String { | |
self.membershipLevels = membershipLevels | |
} else { | |
self.membershipLevels = "" | |
} | |
if let soldOut = data["sold_out"] as? Int { | |
self.soldOut = soldOut == 1 ? true : false | |
} else { | |
self.soldOut = false | |
} | |
if let comingSoon = data["coming_soon"] as? Int { | |
self.comingSoon = comingSoon == 1 ? true : false | |
} else { | |
self.comingSoon = false | |
} | |
if let isCompetition = data["is_competition"] as? Int { | |
self.isCompetition = isCompetition == 1 ? true : false | |
if isCompetition == 1 { | |
if let eventCompetition = data["competition"] as? [String: AnyObject] { | |
self.competition = Competition(data: eventCompetition) | |
} | |
} | |
} else { | |
self.isCompetition = false | |
} | |
if let showData = data["show_data"] as? [[String: AnyObject]] { | |
self.showData = ShowData(showDataCollection: showData) | |
} else { | |
self.showData = nil | |
} | |
} | |
} | |
class ShowData { | |
var venue: Venue? | |
var shows: [Show] = [] | |
init(showDataCollection: [[String: AnyObject]]) { | |
for showData in showDataCollection { | |
self.venue = Venue(data: (showData["venue"] as? [String: AnyObject])!) | |
let showArray = showData["shows"] as? [[String: AnyObject]] | |
for show in showArray! { | |
let currentShow = Show(data: show) | |
self.shows.append(currentShow) | |
} | |
} | |
} | |
} | |
class Venue { | |
let venueID: Int? | |
let supplierId: Int? | |
let venueName: String? | |
let addressLineOne: String? | |
let addressLineTwo: String? | |
let city: String? | |
let stateID: Int? | |
let zip: Int? | |
let countryID: Int? | |
let state: String? | |
let country: String? | |
init(data: [String: AnyObject]) { | |
if let venueID = data["id"] as? String { | |
self.venueID = Int(venueID) | |
} else { | |
self.venueID = 0 | |
} | |
if let supplierID = data["supplier_id"] as? String { | |
print(supplierID) | |
self.supplierId = Int(supplierID) | |
} else { | |
self.supplierId = 0 | |
} | |
if let venueName = data["name"] as? String { | |
self.venueName = venueName | |
} else { | |
self.venueName = "" | |
} | |
if let addressLineOne = data["address1"] as? String { | |
self.addressLineOne = addressLineOne | |
} else { | |
self.addressLineOne = "" | |
} | |
if let addressLineTwo = data["address2"] as? String { | |
self.addressLineTwo = addressLineTwo | |
} else { | |
self.addressLineTwo = "" | |
} | |
if let city = data["city"] as? String { | |
self.city = city | |
} else { | |
self.city = "" | |
} | |
if let zoneID = data["zone_id"] as? String { | |
self.stateID = Int(zoneID) | |
} else { | |
self.stateID = 0 | |
} | |
if let zip = data["zip"] as? String { | |
self.zip = Int(zip) | |
} else { | |
self.zip = 0 | |
} | |
if let countryID = data["country_id"] as? String { | |
self.countryID = Int(countryID) | |
} else { | |
self.countryID = 0 | |
} | |
if let state = data["zone_name"] as? String { | |
self.state = state | |
} else { | |
self.state = "" | |
} | |
if let country = data["country_name"] as? String { | |
self.country = country | |
} else { | |
self.country = "" | |
} | |
} | |
} | |
class Show { | |
let showID: Int? | |
let eventID: Int? | |
let venueID: Int? | |
let pickUpVenueID: Int? | |
let cutOffDate: NSDate? | |
let totalTickets: Int? | |
let reservedTickets: Int? | |
let timeZoneID: Int? | |
let price: Double? | |
let maximumTicketsPerMember: Int? | |
let isAdminFee: Bool? | |
let memberShipLevelID: Int? | |
let memberCanChoose: Bool? | |
let dateHide: Bool? | |
let timeHide: Bool? | |
let shipping: Bool? | |
let shippingPrice: Double? | |
let soldOut: Bool? | |
let formattedDateTime: String? | |
let allowedQuantity: [Int]? | |
let rawShowDateOne: Double? | |
let rawShowDateTwo: Double? | |
var showDateOne: NSDate? { | |
get { | |
return(NSDate(timeIntervalSince1970: self.rawShowDateOne!)) | |
} | |
set { | |
self.showDateOne = NSDate(timeIntervalSince1970: self.rawShowDateOne!) | |
} | |
} | |
var showDateTwo: NSDate? { | |
get { | |
return(NSDate(timeIntervalSince1970: self.rawShowDateTwo!)) | |
} | |
set { | |
self.showDateTwo = NSDate(timeIntervalSince1970: self.rawShowDateTwo!) | |
} | |
} | |
var humanReadableShowDateOne: String { | |
get { | |
return timeStringFromUnixTime(self.rawShowDateOne!) | |
} | |
} | |
var humanReadableShowDateTwo: String { | |
get { | |
return timeStringFromUnixTime(self.rawShowDateTwo!) | |
} | |
} | |
init(data: [String: AnyObject]) { | |
if let showID = data["id"] as? String { | |
self.showID = Int(showID) | |
} else { | |
self.showID = 0 | |
} | |
if let eventID = data["event_id"] as? String { | |
self.eventID = Int(eventID) | |
} else { | |
self.eventID = 0 | |
} | |
if let venueID = data["venue_id"] as? String { | |
self.venueID = Int(venueID) | |
} else { | |
self.venueID = 0 | |
} | |
if let pickUpVenueID = data["pickup_venue_id"] as? String { | |
self.pickUpVenueID = Int(pickUpVenueID) | |
} else { | |
self.pickUpVenueID = 0 | |
} | |
if let showDateOne = data["show_date"] as? String { | |
self.rawShowDateOne = Double(showDateOne) | |
} else { | |
self.rawShowDateOne = 0.0 | |
} | |
if let showDateTwo = data["show_date2"] as? String { | |
self.rawShowDateTwo = Double(showDateTwo) | |
} else { | |
self.rawShowDateTwo = 0.0 | |
} | |
if let cutOffDate = data["cutoff_date"] as? String { | |
self.cutOffDate = NSDate(timeIntervalSince1970: Double(cutOffDate)!) | |
} else { | |
self.cutOffDate = NSDate() | |
} | |
if let totalTickets = data["total_tickets"] as? String { | |
self.totalTickets = Int(totalTickets) | |
} else { | |
self.totalTickets = 0 | |
} | |
if let reservedTickets = data["tickets_reserved"] as? String { | |
self.reservedTickets = Int(reservedTickets) | |
} else { | |
self.reservedTickets = 0 | |
} | |
if let timeZoneID = data["timezone_id"] as? String { | |
self.timeZoneID = Int(timeZoneID) | |
} else { | |
self.timeZoneID = 0 | |
} | |
if let price = data["price"] as? String { | |
self.price = Double(price) | |
} else { | |
self.price = 0.0 | |
} | |
if let maximumTicketsPerMember = data["max_tickets_per_member"] as? String { | |
self.maximumTicketsPerMember = Int(maximumTicketsPerMember) | |
} else { | |
self.maximumTicketsPerMember = 0 | |
} | |
if let isAdminFee = data["is_admin_fee"] as? String { | |
self.isAdminFee = Int(isAdminFee) == 1 ? true : false | |
} else { | |
self.isAdminFee = false | |
} | |
if let memberShipLevelID = data["membership_level_id"] as? String { | |
self.memberShipLevelID = Int(memberShipLevelID) | |
} else { | |
self.memberShipLevelID = 0 | |
} | |
if let memberCanChoose = data["member_can_choose"] as? String { | |
self.memberCanChoose = Int(memberCanChoose) == 1 ? true : false | |
} else { | |
self.memberCanChoose = false | |
} | |
if let dateHide = data["date_hide"] as? String { | |
self.dateHide = Int(dateHide) == 1 ? true : false | |
} else { | |
self.dateHide = false | |
} | |
if let timeHide = data["time_hide"] as? String { | |
self.timeHide = Int(timeHide) == 1 ? true : false | |
} else { | |
self.timeHide = false | |
} | |
if let shipping = data["shipping"] as? String { | |
self.shipping = Int(shipping) == 1 ? true : false | |
} else { | |
self.shipping = false | |
} | |
if let shippingPrice = data["shipping_price"] as? String { | |
self.shippingPrice = Double(shippingPrice) | |
} else { | |
self.shippingPrice = 0.0 | |
} | |
if let soldOut = data["sold_out"] as? Bool { | |
self.soldOut = soldOut | |
} else { | |
self.soldOut = false | |
} | |
if let formattedDateTime = data["date_formatted"] as? String { | |
self.formattedDateTime = formattedDateTime | |
} else { | |
self.formattedDateTime = "" | |
} | |
if let allowedQuantity = data["quantities"] as? [Int] { | |
self.allowedQuantity = allowedQuantity | |
} else { | |
self.allowedQuantity = [] | |
} | |
} | |
} | |
class Competition { | |
let status: String? | |
let question: String? | |
let startDate: NSDate? | |
let endDate: NSDate? | |
let dateFromRaw: Double? | |
let dateToRaw: Double? | |
var humanReadableDayFrom: String { | |
get { | |
return dayStringFromTime(dateFromRaw!) | |
} | |
} | |
var humanReadableDayTo: String { | |
get { | |
return dayStringFromTime(dateToRaw!) | |
} | |
} | |
var humanReadableTimeFrom: String { | |
get { | |
return timeStringFromUnixTime(dateFromRaw!) | |
} | |
} | |
var humanReadableTimeTo: String { | |
get { | |
return timeStringFromUnixTime(dateToRaw!) | |
} | |
} | |
init(data: [String: AnyObject]) { | |
if let status = data["status"] as? String { | |
self.status = status | |
} else { | |
self.status = nil | |
} | |
if let dateFrom = data["date_from"] as? String { | |
self.dateFromRaw = Double(dateFrom) | |
if let date = dateFromRaw { | |
self.startDate = NSDate(timeIntervalSince1970: date) | |
} else { | |
self.startDate = nil | |
} | |
} else { | |
self.dateFromRaw = 0.0 | |
self.startDate = nil | |
} | |
if let dateTo = data["date_to"] as? String { | |
self.dateToRaw = Double(dateTo) | |
if let date = self.dateToRaw { | |
self.endDate = NSDate(timeIntervalSince1970: date) | |
} else { | |
self.endDate = nil | |
} | |
} else { | |
self.dateToRaw = 0.0 | |
self.endDate = nil | |
} | |
if let question = data["question"] as? String { | |
self.question = question | |
} else { | |
self.question = "" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment