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 get tours { final List decoded = jsonDecode(toursJson); return decoded.map((e) => JobTour.fromJson(e as Map)).toList(); } set tours(List value) { toursJson = jsonEncode(value.map((e) => e.toJson()).toList()); } Job(); factory Job.fromJson(Map 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) .map((e) => JobTour.fromJson(e as Map)) .toList(); return job; } Map 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(), }; } }