Files
stadtbote-app/lib/model/job.dart
T
2025-10-23 11:48:22 +02:00

75 lines
1.9 KiB
Dart

import 'dart:convert';
import 'package:objectbox/objectbox.dart';
import 'package:stadtbote/model/job_tour.dart';
@Entity()
class Job {
@Id()
int id = 0;
// External ID from server
@Unique()
late int externalId;
late String ver;
late int state;
String? crFilter;
late int ordertime;
late int offsWarn;
late bool global;
late int vhtId;
late String rem;
late int delayOrderTime;
// Store tours as JSON string for ObjectBox
String toursJson = '[]';
@Transient()
List<JobTour> get tours {
final List<dynamic> decoded = jsonDecode(toursJson);
return decoded.map((e) => JobTour.fromJson(e as Map<String, dynamic>)).toList();
}
set tours(List<JobTour> value) {
toursJson = jsonEncode(value.map((e) => e.toJson()).toList());
}
Job();
factory Job.fromJson(Map<String, dynamic> json) {
final job = Job();
job.id = 0; // Let ObjectBox assign the ID
job.externalId = json['id'] as int; // Store external ID separately
job.ver = json['ver'] as String;
job.state = json['state'] as int;
job.crFilter = json['cr_filter'] as String?;
job.ordertime = json['ordertime'] as int;
job.offsWarn = json['offs_warn'] as int;
job.global = json['global'] as bool;
job.vhtId = json['vht_id'] as int;
job.rem = json['rem'] as String;
job.delayOrderTime = json['delayOrderTime'] as int;
job.tours = (json['tours'] as List<dynamic>)
.map((e) => JobTour.fromJson(e as Map<String, dynamic>))
.toList();
return job;
}
Map<String, dynamic> toJson() {
return {
'id': externalId, // Use external ID for JSON
'ver': ver,
'state': state,
'cr_filter': crFilter,
'ordertime': ordertime,
'offs_warn': offsWarn,
'global': global,
'vht_id': vhtId,
'rem': rem,
'delayOrderTime': delayOrderTime,
'tours': tours.map((e) => e.toJson()).toList(),
};
}
}