Files
BrandManager/lib/models/device.dart
2026-01-19 10:20:45 +01:00

130 lines
3.3 KiB
Dart

class Device {
final int id;
final String? callsign;
final String? name;
final String? city;
final String? state;
final String? country;
final String? surname;
final String? linkname;
final String? hardware;
final String? firmware;
final String? tx;
final String? rx;
final int? colorcode;
final int? status;
final int? lastKnownMaster;
final double? lat;
final double? lng;
final String? website;
final int? pep;
final int? agl;
final String? description;
final String? createdAt;
final String? updatedAt;
final String? lastSeen;
final List<String>? permissions;
Device({
required this.id,
this.callsign,
this.name,
this.city,
this.state,
this.country,
this.surname,
this.linkname,
this.hardware,
this.firmware,
this.tx,
this.rx,
this.colorcode,
this.status,
this.lastKnownMaster,
this.lat,
this.lng,
this.website,
this.pep,
this.agl,
this.description,
this.createdAt,
this.updatedAt,
this.lastSeen,
this.permissions,
});
factory Device.fromJson(Map<String, dynamic> json) {
return Device(
id: json['id'] as int,
callsign: json['callsign'] as String?,
name: json['name'] as String?,
city: json['city'] as String?,
state: json['state'] as String?,
country: json['country'] as String?,
surname: json['surname'] as String?,
linkname: json['linkname'] as String?,
hardware: json['hardware'] as String?,
firmware: json['firmware'] as String?,
tx: json['tx'] as String?,
rx: json['rx'] as String?,
colorcode: json['colorcode'] as int?,
status: json['status'] as int?,
lastKnownMaster: json['last_known_master'] as int?,
lat: json['lat'] as double?,
lng: json['lng'] as double?,
website: json['website'] as String?,
pep: json['pep'] as int?,
agl: json['agl'] as int?,
description: json['description'] as String?,
createdAt: json['created_at'] as String?,
updatedAt: json['updated_at'] as String?,
lastSeen: json['last_seen'] as String?,
permissions: (json['permissions'] as List<dynamic>?)
?.map((e) => e as String)
.toList(),
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'callsign': callsign,
'name': name,
'city': city,
'state': state,
'country': country,
'surname': surname,
'linkname': linkname,
'hardware': hardware,
'firmware': firmware,
'tx': tx,
'rx': rx,
'colorcode': colorcode,
'status': status,
'last_known_master': lastKnownMaster,
'lat': lat,
'lng': lng,
'website': website,
'pep': pep,
'agl': agl,
'description': description,
'created_at': createdAt,
'updated_at': updatedAt,
'last_seen': lastSeen,
'permissions': permissions,
};
}
String get displayLocation {
final parts = <String>[];
if (city != null && city!.isNotEmpty) parts.add(city!);
if (state != null && state!.isNotEmpty) parts.add(state!);
if (country != null && country!.isNotEmpty) parts.add(country!);
return parts.isEmpty ? 'Unknown Location' : parts.join(', ');
}
String get displayName {
return name ?? callsign ?? 'Unknown Device';
}
}