You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PatientApp-KKUMC/ios/Runner/Helper/GeoZoneModel.swift

68 lines
2.1 KiB
Swift

//
// GeoZoneModel.swift
// Runner
//
// Created by ZiKambrani on 13/12/2020.
//
import UIKit
import CoreLocation
class GeoZoneModel{
var geofenceId:Int = -1
var description:String = ""
var descriptionN:String?
var latitude:String?
var longitude:String?
var radius:Int?
var type:Int?
var projectID:Int?
var imageURL:String?
var isCity:String?
func identifier() -> String{
return "\(geofenceId)_hmg"
}
func message() -> String{
return description
}
func toRegion(locationManager:CLLocationManager) -> CLCircularRegion?{
if let rad = radius, let lat = latitude?.removeSpace(), let long = longitude?.removeSpace(),
let radius_d = Double("\(rad)"), let lat_d = Double(lat), let long_d = Double(long){
let coordinate = CLLocationCoordinate2D(latitude: lat_d, longitude: long_d)
let validatedRadius = min(radius_d, locationManager.maximumRegionMonitoringDistance)
let region = CLCircularRegion(center: coordinate, radius: validatedRadius, identifier: identifier())
region.notifyOnExit = true
region.notifyOnEntry = true
return region
}
return nil
}
class func from(json:[String:Any]) -> GeoZoneModel{
let model = GeoZoneModel()
model.geofenceId = json["GEOF_ID"] as? Int ?? 0
model.radius = json["Radius"] as? Int
model.projectID = json["ProjectID"] as? Int
model.type = json["Type"] as? Int
model.description = json["Description"] as? String ?? ""
model.descriptionN = json["DescriptionN"] as? String
model.latitude = json["Latitude"] as? String
model.longitude = json["Longitude"] as? String
model.imageURL = json["ImageURL"] as? String
model.isCity = json["IsCity"] as? String
return model
}
class func list(from jsonString:String) -> [GeoZoneModel]{
let value = dictionaryArray(from: jsonString)
let geoZones = value.map { GeoZoneModel.from(json: $0) }
return geoZones
}
}