Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Zone.swift
- // Plati
- //
- // Created by Domagoj Kopić on 31/03/2017.
- // Copyright © 2017 Domagoj Kopić. All rights reserved.
- //
- import Foundation
- import Firebase
- import SwiftyJSON
- let baseUnitCol = "baseUnit"
- let colorCol = "color"
- let maxParkingCol = "maxParkingTime"
- let nameCol = "name"
- let parkingTime1Col = "parkingTime1"
- let parkingTime2Col = "parkingTime2"
- let parkingTime3Col = "parkingTime3"
- let priceCol = "price"
- let smsCol = "smsCode"
- let streetsCol = "streets"
- let areaCol = "area"
- class Zone {
- var baseUnit: Int?
- var color: String?
- var maxParkingTime: Int?
- var name: String?
- var parkingTime1: String?
- var parkingTime2: String?
- var parkingTime3: String?
- var price: Double?
- var smsCode: String?
- var streets: String?
- var areaList: [Area]
- init(snapshot: FIRDataSnapshot) {
- let value = snapshot.value as! [String: AnyObject]
- if let u = value[baseUnitCol] as? Int {
- baseUnit = u
- }
- if let c = value[colorCol] as? String {
- color = c
- }
- if let m = value[maxParkingCol] as? Int {
- maxParkingTime = m
- }
- if let n = value[nameCol] as? String {
- name = n
- }
- if let p = value[priceCol] as? Double {
- price = p
- }
- if let s = value[smsCol] as? String {
- smsCode = s
- }
- if let s = value[streetsCol] as? String {
- streets = s
- }
- areaList = [Area]()
- if snapshot.hasChild(areaCol) {
- let areaListSnapshot = snapshot.childSnapshot(forPath: areaCol)
- for item in areaListSnapshot.children {
- areaList.append(Area(snapshot: item as! FIRDataSnapshot))
- }
- }
- if snapshot.hasChild("details") {
- let detailsSnapshot = snapshot.childSnapshot(forPath: "details")
- let formatter = DateFormatter()
- formatter.dateFormat = "d.M."
- for item in detailsSnapshot.children {
- let snapshot = item as! FIRDataSnapshot
- let value = snapshot.value as! [String: AnyObject]
- let start = value["dateStart"] as! String
- let end = value["dateEnd"] as! String
- var dateStart = formatter.date(from: start)
- var dateEnd = formatter.date(from: end)
- let calendar = Calendar.current
- var startComponents = DateComponents()
- let date = Date()
- startComponents.year = date.getYear()
- startComponents.day = dateStart!.getDayOfMonth()
- startComponents.month = dateStart!.getMonth()
- dateStart = calendar.date(from: startComponents)
- var endComponents = DateComponents()
- endComponents.year = date.getYear()
- endComponents.day = dateEnd!.getDayOfMonth()
- endComponents.month = dateEnd!.getMonth()
- dateEnd = calendar.date(from: endComponents)
- if dateStart! > dateEnd! {
- let temp = dateStart
- dateStart = dateEnd
- dateEnd = temp
- endComponents.year = date.getYear() - 1
- dateStart = calendar.date(from: endComponents)
- }
- if date >= dateStart! && date <= dateEnd! {
- setParkingTime(value)
- }
- }
- }
- else {
- setParkingTime(value)
- }
- }
- func setParkingTime(_ value: [String: Any]) {
- parkingTime1 = value[parkingTime1Col] as? String
- parkingTime2 = value[parkingTime2Col] as? String
- parkingTime3 = value[parkingTime3Col] as? String
- }
- init(dict: [String: Any]) {
- baseUnit = dict[baseUnitCol] as? Int
- color = dict[colorCol] as? String
- maxParkingTime = dict[maxParkingCol] as? Int
- name = dict[nameCol] as? String
- parkingTime1 = dict[parkingTime1Col] as? String
- parkingTime2 = dict[parkingTime2Col] as? String
- parkingTime3 = dict[parkingTime3Col] as? String
- price = dict[priceCol] as? Double
- smsCode = dict[smsCol] as? String
- streets = dict[streetsCol] as? String
- areaList = [Area]()
- }
- func toDict() -> [String: Any]! {
- var dict = [String: Any]()
- dict[baseUnitCol] = baseUnit
- dict[colorCol] = color
- dict[maxParkingCol] = maxParkingTime
- dict[nameCol] = name
- dict[parkingTime1Col] = parkingTime1
- dict[parkingTime2Col] = parkingTime2
- dict[parkingTime3Col] = parkingTime3
- dict[priceCol] = price
- dict[smsCol] = smsCode
- dict[streetsCol] = streets
- return dict
- }
- func toJsonString() -> String {
- let json = JSON(toDict())
- return json.rawString()!
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement