import 'dart:core'; import 'package:latlong2/latlong.dart'; class Measurement { int measurementID; DateTime timeMeasured; Sensor sensor; String bodyOfWater; LatLng center; List <SubDiv> subDiv; List <LatLng> corners; Measurement({ required this.measurementID, required this.timeMeasured, required this.sensor, required this.bodyOfWater, required this.center, required this.subDiv, required this.corners }); factory Measurement.fromJson(Map<String, dynamic> json) { return Measurement( measurementID: json['MeasurementID'], timeMeasured: DateTime.parse(json['TimeMeasured']), sensor: Sensor.fromJson(json['Sensor']), bodyOfWater: json['BodyOfWater'] ?? 'nil', center: LatLng(json['CenterLat'], json['CenterLon']), subDiv: (json['Subdivisions'] as List<dynamic>).map((data) => SubDiv.fromJson(data)).toList(), corners: (json['Corners'] as List<dynamic>).map((corner) => LatLng(corner[0], corner[1])).toList(), ); } } class SubDiv { int subDivID; int groupID; double minThickness; double avgThickness; LatLng center; double accuracy; SubDiv({ required this.subDivID, required this.groupID, required this.minThickness, required this.avgThickness, required this.center, required this.accuracy, }); factory SubDiv.fromJson(Map<String, dynamic> json) { return SubDiv( subDivID: json['SubdivID'], groupID: json['GroupID'], minThickness: json['MinThickness'], avgThickness: json['AvgThickness'], center: LatLng(json['CenLatitude'], json['CenLongitude']), accuracy: json['Accuracy'], ); } } class Sensor { int sensorID; String sensorType; bool active; Sensor({ required this.sensorID, required this.sensorType, required this.active, }); factory Sensor.fromJson(Map<String, dynamic> json) { return Sensor( sensorID: json['SensorID'], sensorType: json['SensorType'] ?? 'nil', active: json['Active'], ); } }