58 lines
2.0 KiB
Swift
58 lines
2.0 KiB
Swift
//
|
|
// EQNReteSmartphone.swift
|
|
// Earthquake Network
|
|
//
|
|
// Created by Busi Andrea on 08/12/2020.
|
|
// Copyright © 2020 Earthquake Network. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
|
|
@objc
|
|
class EQNReteSmartphone: NSObject {
|
|
@objc let counterLastDayAlerts: Int
|
|
@objc let counterTotalAlerts: Int
|
|
@objc let counterSmartphones: Int
|
|
@objc let manualGreen: Int
|
|
@objc let manualYellow: Int
|
|
@objc let manualRed: Int
|
|
@objc let lastSubscriptionDiff: Int
|
|
@objc let subscriptionsDiscounted: Bool
|
|
|
|
// MARK: - Init
|
|
|
|
@objc init(info: [[String: Any]]) {
|
|
// merge array in a single dictionary
|
|
let allValues = info.reduce([:]) { (result, dictionary) -> [String: Any] in
|
|
return result.merging(dictionary, uniquingKeysWith: { (_, new) in new })
|
|
}
|
|
|
|
self.counterLastDayAlerts = Self.getValue(from: allValues, for: "eq")
|
|
self.counterTotalAlerts = Self.getValue(from: allValues, for: "eq_p")
|
|
self.counterSmartphones = Self.getValue(from: allValues, for: "green")
|
|
self.manualGreen = Self.getValue(from: allValues, for: "g_man")
|
|
self.manualYellow = Self.getValue(from: allValues, for: "y_man")
|
|
self.manualRed = Self.getValue(from: allValues, for: "r_man")
|
|
self.lastSubscriptionDiff = Self.getValue(from: allValues, for: "diff")
|
|
let subscriptionsDiscounted = Self.getValue(from: allValues, for: "st")
|
|
self.subscriptionsDiscounted = subscriptionsDiscounted == 1
|
|
|
|
super.init()
|
|
}
|
|
|
|
// MARK: - Private
|
|
|
|
/// This method helps to extract an int value from the received values (where data are both strings and integers).
|
|
/// If convertion is not possible, it will return zero.
|
|
private static func getValue(from values: [String: Any], for key: String) -> Int {
|
|
if let intValue = values[key] as? Int {
|
|
return intValue
|
|
}
|
|
if let stringValue = values[key] as? String, let intValue = Int(stringValue) {
|
|
return intValue
|
|
}
|
|
return 0
|
|
}
|
|
}
|