Files
companion/lib/domain/models/sensor.dart
T
2026-05-07 18:35:58 +02:00

57 lines
1.4 KiB
Dart

import 'position.dart';
enum SensorStatus { online, offline, provisioning }
class Sensor {
const Sensor({
required this.id,
required this.name,
required this.floorId,
required this.position,
required this.status,
this.lastSeen,
});
final String id;
final String name;
final String floorId;
final Position position;
final SensorStatus status;
final DateTime? lastSeen;
Sensor copyWith({
String? name,
Position? position,
SensorStatus? status,
DateTime? lastSeen,
}) =>
Sensor(
id: id,
name: name ?? this.name,
floorId: floorId,
position: position ?? this.position,
status: status ?? this.status,
lastSeen: lastSeen ?? this.lastSeen,
);
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'floor_id': floorId,
'position': position.toJson(),
'status': status.name,
'last_seen': lastSeen?.toIso8601String(),
};
factory Sensor.fromJson(Map<String, dynamic> json) => Sensor(
id: json['id'] as String,
name: json['name'] as String,
floorId: json['floor_id'] as String,
position: Position.fromJson(json['position'] as Map<String, dynamic>),
status: SensorStatus.values.byName(json['status'] as String),
lastSeen: json['last_seen'] == null
? null
: DateTime.parse(json['last_seen'] as String),
);
}