Files
maps-saas/packages/tactical_app/lib/models/friendly_unit.dart
T

51 lines
1.2 KiB
Dart

import 'package:intaleq_maps/intaleq_maps.dart';
enum UnitRole {
commander,
infantry,
vehicle,
medic
}
class FriendlyUnit {
final String deviceId;
final String callsign;
final LatLng position;
final double heading;
final UnitRole role;
final DateTime lastSeen;
FriendlyUnit({
required this.deviceId,
required this.callsign,
required this.position,
required this.heading,
required this.role,
required this.lastSeen,
});
Map<String, dynamic> toJson() => {
'deviceId': deviceId,
'callsign': callsign,
'lat': position.latitude,
'lng': position.longitude,
'heading': heading,
'role': role.name,
'timestamp': lastSeen.millisecondsSinceEpoch,
};
factory FriendlyUnit.fromJson(Map<String, dynamic> json) {
return FriendlyUnit(
deviceId: json['deviceId'],
callsign: json['callsign'],
position: LatLng(json['lat'], json['lng']),
heading: (json['heading'] as num).toDouble(),
role: UnitRole.values.firstWhere(
(e) => e.name == json['role'],
orElse: () => UnitRole.infantry,
),
lastSeen: DateTime.fromMillisecondsSinceEpoch(json['timestamp']),
);
}
}