From 25a2455ce17485efe9411d2dd0f727d6873fb5f5 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Sat, 10 Feb 2024 09:12:51 +0100 Subject: [PATCH] Erweiterungen --- lib/content_views/main_page.dart | 37 +- lib/content_views/messages_page.dart | 4 +- lib/content_views/tour_details_page.dart | 6 +- lib/main.dart | 6 +- lib/model/session_status.dart | 35 + lib/model/session_status.g.dart | 1531 ++++++++++++++ lib/model/status.dart | 38 +- lib/model/status.g.dart | 1754 ++++++----------- lib/popups/infos_popup.dart | 4 +- lib/protocoll_messages/sync_jobs_message.dart | 7 +- .../sync_jobs_message.g.dart | 6 +- lib/protocoll_messages/track_message.dart | 19 +- lib/protocoll_messages/track_message.g.dart | 17 +- lib/tools/constants.dart | 3 +- lib/tools/messages/session_info_update.dart | 8 +- lib/tools/messages/status_info_update.dart | 7 + lib/tools/mqtt_core.dart | 33 +- lib/tools/util.dart | 18 + 18 files changed, 2272 insertions(+), 1261 deletions(-) create mode 100644 lib/model/session_status.dart create mode 100644 lib/model/session_status.g.dart create mode 100644 lib/tools/messages/status_info_update.dart diff --git a/lib/content_views/main_page.dart b/lib/content_views/main_page.dart index c754d5b..8e33fbe 100644 --- a/lib/content_views/main_page.dart +++ b/lib/content_views/main_page.dart @@ -10,6 +10,7 @@ import 'package:stadtbote/content_views/utils/content_view_widget.dart'; import 'package:stadtbote/content_views/utils/header_info.dart'; import 'package:stadtbote/model/job.dart'; import 'package:stadtbote/model/message.dart'; +import 'package:stadtbote/model/session_status.dart'; import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/popups/accept_jobs_popup.dart'; import 'package:stadtbote/popups/infos_popup.dart'; @@ -19,6 +20,7 @@ import 'package:stadtbote/tools/messages/job_received_message.dart'; import 'package:stadtbote/tools/messages/message_message.dart'; import 'package:stadtbote/tools/messages/session_info_update.dart'; import 'package:badges/badges.dart' as badges; +import 'package:stadtbote/tools/messages/status_info_update.dart'; import '../main.dart'; import '../tools/constants.dart'; @@ -28,13 +30,7 @@ class MainPage extends ContentViewWidget { final ValueNotifier _zipValueNotifier = ValueNotifier("----"); final ValueNotifier sidValueNotifier = ValueNotifier("----"); - MainPage({super.key}) { - Status? status = MyApp.isarInstance.status.where().findFirstSync(); - if (status != null) { - _zipValueNotifier.value = status.locZip; - sidValueNotifier.value = status.sid; - } - } + MainPage({super.key}); @override State createState() => _MainPageState(); @@ -77,7 +73,7 @@ class MainPage extends ContentViewWidget { rightButtonVisible: true, rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.info_outline, size: 20.0, color: Colors.white)), rightButtonOnPressed: () async { - showInfosPopup(context, await MyApp.isarInstance.status.where().findFirst()); + showInfosPopup(context, await MyApp.isarInstance.sessionStatus.where().findFirst()); }); } } @@ -91,6 +87,8 @@ class _MainPageState extends State { void initState() { super.initState(); + _updateHeader(); + _refreshBadges(); _initMessages(); @@ -240,8 +238,12 @@ class _MainPageState extends State { } _initMessages() { + MessageService().subscribe(Constants.messageTopicSessionStatusInfoUpdate, this, (sessionStatusInfoUpdateMessage) { + widget.sidValueNotifier.value = sessionStatusInfoUpdateMessage.status.sid; + }); + MessageService().subscribe(Constants.messageTopicStatusInfoUpdate, this, (statusInfoUpdateMessage) { - widget.sidValueNotifier.value = statusInfoUpdateMessage.status.sid; + _updateHeader(); }); MessageService().subscribe(Constants.messageTopicJobReceived, this, (JobReceivedMessage jobReceivedMessage) { @@ -258,9 +260,9 @@ class _MainPageState extends State { } void _exitMessages() { - MessageService().unsubscribe(Constants.messageTopicStatusInfoUpdate, this); + MessageService().unsubscribe(Constants.messageTopicSessionStatusInfoUpdate, this); - MessageService().unsubscribe(Constants.messageTopicJobReceived, this); + MessageService().unsubscribe(Constants.messageTopicJobReceived, this); } void _refreshBadges() async { @@ -272,4 +274,17 @@ class _MainPageState extends State { void _jobReceived(Job job) { _refreshBadges(); } + + void _updateHeader() async { + var status = await MyApp.isarInstance.status.where().findFirst(); + var sessionStatus = await MyApp.isarInstance.sessionStatus.where().findFirst(); + + if (status != null) { + widget._zipValueNotifier.value = '${status.pos.zip} (${status.pos.zipReal})'; + } else if (sessionStatus != null) { + widget._zipValueNotifier.value = sessionStatus.sid; + } else { + widget._zipValueNotifier.value = "---"; + } + } } diff --git a/lib/content_views/messages_page.dart b/lib/content_views/messages_page.dart index c2c13c0..1b9b1e7 100644 --- a/lib/content_views/messages_page.dart +++ b/lib/content_views/messages_page.dart @@ -7,7 +7,7 @@ import 'package:stadtbote/content_views/utils/content_view_widget.dart'; import 'package:stadtbote/content_views/utils/header_info.dart'; import 'package:stadtbote/main.dart'; import 'package:stadtbote/model/message.dart' as sbmessage; -import 'package:stadtbote/model/status.dart'; +import 'package:stadtbote/model/session_status.dart'; import 'package:stadtbote/popups/infos_popup.dart'; import 'package:stadtbote/tools/mqtt_core.dart'; import 'package:uuid/uuid.dart'; @@ -59,7 +59,7 @@ class _MessagesPageState extends State { super.initState(); Future.delayed(const Duration(seconds: 0), () async { - var status = await MyApp.isarInstance.status.where().findFirst(); + var status = await MyApp.isarInstance.sessionStatus.where().findFirst(); _sid = status != null ? status.sid : 'Unbekannt'; await _fetchMessages(); diff --git a/lib/content_views/tour_details_page.dart b/lib/content_views/tour_details_page.dart index 79e6bf9..7e138f0 100644 --- a/lib/content_views/tour_details_page.dart +++ b/lib/content_views/tour_details_page.dart @@ -116,7 +116,11 @@ class _TourDetailsPageState extends State { const SizedBox(height: 10), getDefaultButton('Karte', () => { - showMapPopup(context, widget.tour, widget.job.tours) + if (widget.tour.pos != null) { + showMapPopup(context, widget.tour, widget.job.tours) + } else { + showAlertDialog(context, 'Information', 'Es liegt keine Position für diese Station vor') + } }), ], ), diff --git a/lib/main.dart b/lib/main.dart index aa1530f..c601e2d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,10 +5,11 @@ import 'package:geolocator/geolocator.dart'; import 'package:isar/isar.dart'; import 'package:path_provider/path_provider.dart'; import 'package:stadtbote/model/message.dart'; +import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/model/task_info.dart'; import 'package:stadtbote/popups/accept_jobs_popup.dart'; import 'package:stadtbote/tools/colored_safe_area.dart'; -import 'package:stadtbote/model/status.dart'; +import 'package:stadtbote/model/session_status.dart'; import 'package:stadtbote/tools/connection_status.dart'; import 'package:stadtbote/tools/message_service.dart'; import 'package:stadtbote/tools/messages/job_received_message.dart'; @@ -26,6 +27,7 @@ Future main() async { final dir = await getApplicationDocumentsDirectory(); MyApp.isarInstance = await Isar.open([ + SessionStatusSchema, StatusSchema, JobSchema, TaskInfoSchema, @@ -72,7 +74,7 @@ class MyApp extends StatelessWidget { if (result) { LocationSettings locationSettings = const LocationSettings( accuracy: LocationAccuracy.high, - distanceFilter: 50, + distanceFilter: 0, ); Geolocator.getPositionStream(locationSettings: locationSettings).listen((Position? position) { diff --git a/lib/model/session_status.dart b/lib/model/session_status.dart new file mode 100644 index 0000000..00abc11 --- /dev/null +++ b/lib/model/session_status.dart @@ -0,0 +1,35 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'session_status.g.dart'; + +@collection +@JsonSerializable() +class SessionStatus { + final Id id = 0; + + @JsonKey(name: 'cust_id') + late int custId; + @JsonKey(name: 'hq_id') + late int hqId; + @JsonKey(name: 'usr_id') + late int usrId; + @JsonKey(name: 'cr_id') + late int crId; + @JsonKey(name: 'sid') + late String sid; + @JsonKey(name: 'vht_id') + late int vhtId; + @JsonKey(name: 'loc_zip') + late String locZip; + @JsonKey(name: 'server_version') + late String serverVersion; + @JsonKey(name: 'server_instance') + late String serverInstance; + + SessionStatus(); + + factory SessionStatus.fromJson(Map json) => _$SessionStatusFromJson(json); + + Map toJson() => _$SessionStatusToJson(this); +} diff --git a/lib/model/session_status.g.dart b/lib/model/session_status.g.dart new file mode 100644 index 0000000..019243a --- /dev/null +++ b/lib/model/session_status.g.dart @@ -0,0 +1,1531 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'session_status.dart'; + +// ************************************************************************** +// IsarCollectionGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +extension GetSessionStatusCollection on Isar { + IsarCollection get sessionStatus => this.collection(); +} + +const SessionStatusSchema = CollectionSchema( + name: r'SessionStatus', + id: -8915225926978838405, + properties: { + r'crId': PropertySchema( + id: 0, + name: r'crId', + type: IsarType.long, + ), + r'custId': PropertySchema( + id: 1, + name: r'custId', + type: IsarType.long, + ), + r'hqId': PropertySchema( + id: 2, + name: r'hqId', + type: IsarType.long, + ), + r'locZip': PropertySchema( + id: 3, + name: r'locZip', + type: IsarType.string, + ), + r'serverInstance': PropertySchema( + id: 4, + name: r'serverInstance', + type: IsarType.string, + ), + r'serverVersion': PropertySchema( + id: 5, + name: r'serverVersion', + type: IsarType.string, + ), + r'sid': PropertySchema( + id: 6, + name: r'sid', + type: IsarType.string, + ), + r'usrId': PropertySchema( + id: 7, + name: r'usrId', + type: IsarType.long, + ), + r'vhtId': PropertySchema( + id: 8, + name: r'vhtId', + type: IsarType.long, + ) + }, + estimateSize: _sessionStatusEstimateSize, + serialize: _sessionStatusSerialize, + deserialize: _sessionStatusDeserialize, + deserializeProp: _sessionStatusDeserializeProp, + idName: r'id', + indexes: {}, + links: {}, + embeddedSchemas: {}, + getId: _sessionStatusGetId, + getLinks: _sessionStatusGetLinks, + attach: _sessionStatusAttach, + version: '3.1.0+1', +); + +int _sessionStatusEstimateSize( + SessionStatus object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + bytesCount += 3 + object.locZip.length * 3; + bytesCount += 3 + object.serverInstance.length * 3; + bytesCount += 3 + object.serverVersion.length * 3; + bytesCount += 3 + object.sid.length * 3; + return bytesCount; +} + +void _sessionStatusSerialize( + SessionStatus object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeLong(offsets[0], object.crId); + writer.writeLong(offsets[1], object.custId); + writer.writeLong(offsets[2], object.hqId); + writer.writeString(offsets[3], object.locZip); + writer.writeString(offsets[4], object.serverInstance); + writer.writeString(offsets[5], object.serverVersion); + writer.writeString(offsets[6], object.sid); + writer.writeLong(offsets[7], object.usrId); + writer.writeLong(offsets[8], object.vhtId); +} + +SessionStatus _sessionStatusDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = SessionStatus(); + object.crId = reader.readLong(offsets[0]); + object.custId = reader.readLong(offsets[1]); + object.hqId = reader.readLong(offsets[2]); + object.locZip = reader.readString(offsets[3]); + object.serverInstance = reader.readString(offsets[4]); + object.serverVersion = reader.readString(offsets[5]); + object.sid = reader.readString(offsets[6]); + object.usrId = reader.readLong(offsets[7]); + object.vhtId = reader.readLong(offsets[8]); + return object; +} + +P _sessionStatusDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readLong(offset)) as P; + case 1: + return (reader.readLong(offset)) as P; + case 2: + return (reader.readLong(offset)) as P; + case 3: + return (reader.readString(offset)) as P; + case 4: + return (reader.readString(offset)) as P; + case 5: + return (reader.readString(offset)) as P; + case 6: + return (reader.readString(offset)) as P; + case 7: + return (reader.readLong(offset)) as P; + case 8: + return (reader.readLong(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _sessionStatusGetId(SessionStatus object) { + return object.id; +} + +List> _sessionStatusGetLinks(SessionStatus object) { + return []; +} + +void _sessionStatusAttach( + IsarCollection col, Id id, SessionStatus object) {} + +extension SessionStatusQueryWhereSort + on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension SessionStatusQueryWhere + on QueryBuilder { + QueryBuilder idEqualTo( + Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder idNotEqualTo( + Id id) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); + } + + QueryBuilder idGreaterThan( + Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan( + Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder idBetween( + Id lowerId, + Id upperId, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + )); + }); + } +} + +extension SessionStatusQueryFilter + on QueryBuilder { + QueryBuilder crIdEqualTo( + int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'crId', + value: value, + )); + }); + } + + QueryBuilder + crIdGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'crId', + value: value, + )); + }); + } + + QueryBuilder + crIdLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'crId', + value: value, + )); + }); + } + + QueryBuilder crIdBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'crId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder + custIdEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'custId', + value: value, + )); + }); + } + + QueryBuilder + custIdGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'custId', + value: value, + )); + }); + } + + QueryBuilder + custIdLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'custId', + value: value, + )); + }); + } + + QueryBuilder + custIdBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'custId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder hqIdEqualTo( + int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'hqId', + value: value, + )); + }); + } + + QueryBuilder + hqIdGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'hqId', + value: value, + )); + }); + } + + QueryBuilder + hqIdLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'hqId', + value: value, + )); + }); + } + + QueryBuilder hqIdBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'hqId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder idEqualTo( + Id value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder + idGreaterThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + Id lower, + Id upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder + locZipEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'locZip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + locZipGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'locZip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + locZipLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'locZip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + locZipBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'locZip', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + locZipStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'locZip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + locZipEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'locZip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + locZipContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'locZip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + locZipMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'locZip', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + locZipIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'locZip', + value: '', + )); + }); + } + + QueryBuilder + locZipIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'locZip', + value: '', + )); + }); + } + + QueryBuilder + serverInstanceEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'serverInstance', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverInstanceGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'serverInstance', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverInstanceLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'serverInstance', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverInstanceBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'serverInstance', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverInstanceStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'serverInstance', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverInstanceEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'serverInstance', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverInstanceContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'serverInstance', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverInstanceMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'serverInstance', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverInstanceIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'serverInstance', + value: '', + )); + }); + } + + QueryBuilder + serverInstanceIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'serverInstance', + value: '', + )); + }); + } + + QueryBuilder + serverVersionEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'serverVersion', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverVersionGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'serverVersion', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverVersionLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'serverVersion', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverVersionBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'serverVersion', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverVersionStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'serverVersion', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverVersionEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'serverVersion', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverVersionContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'serverVersion', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverVersionMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'serverVersion', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + serverVersionIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'serverVersion', + value: '', + )); + }); + } + + QueryBuilder + serverVersionIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'serverVersion', + value: '', + )); + }); + } + + QueryBuilder sidEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'sid', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + sidGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'sid', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sidLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'sid', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sidBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'sid', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + sidStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'sid', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sidEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'sid', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sidContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'sid', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sidMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'sid', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + sidIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'sid', + value: '', + )); + }); + } + + QueryBuilder + sidIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'sid', + value: '', + )); + }); + } + + QueryBuilder + usrIdEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'usrId', + value: value, + )); + }); + } + + QueryBuilder + usrIdGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'usrId', + value: value, + )); + }); + } + + QueryBuilder + usrIdLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'usrId', + value: value, + )); + }); + } + + QueryBuilder + usrIdBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'usrId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder + vhtIdEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'vhtId', + value: value, + )); + }); + } + + QueryBuilder + vhtIdGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'vhtId', + value: value, + )); + }); + } + + QueryBuilder + vhtIdLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'vhtId', + value: value, + )); + }); + } + + QueryBuilder + vhtIdBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'vhtId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } +} + +extension SessionStatusQueryObject + on QueryBuilder {} + +extension SessionStatusQueryLinks + on QueryBuilder {} + +extension SessionStatusQuerySortBy + on QueryBuilder { + QueryBuilder sortByCrId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'crId', Sort.asc); + }); + } + + QueryBuilder sortByCrIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'crId', Sort.desc); + }); + } + + QueryBuilder sortByCustId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'custId', Sort.asc); + }); + } + + QueryBuilder sortByCustIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'custId', Sort.desc); + }); + } + + QueryBuilder sortByHqId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'hqId', Sort.asc); + }); + } + + QueryBuilder sortByHqIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'hqId', Sort.desc); + }); + } + + QueryBuilder sortByLocZip() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'locZip', Sort.asc); + }); + } + + QueryBuilder sortByLocZipDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'locZip', Sort.desc); + }); + } + + QueryBuilder + sortByServerInstance() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'serverInstance', Sort.asc); + }); + } + + QueryBuilder + sortByServerInstanceDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'serverInstance', Sort.desc); + }); + } + + QueryBuilder + sortByServerVersion() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'serverVersion', Sort.asc); + }); + } + + QueryBuilder + sortByServerVersionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'serverVersion', Sort.desc); + }); + } + + QueryBuilder sortBySid() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'sid', Sort.asc); + }); + } + + QueryBuilder sortBySidDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'sid', Sort.desc); + }); + } + + QueryBuilder sortByUsrId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'usrId', Sort.asc); + }); + } + + QueryBuilder sortByUsrIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'usrId', Sort.desc); + }); + } + + QueryBuilder sortByVhtId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'vhtId', Sort.asc); + }); + } + + QueryBuilder sortByVhtIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'vhtId', Sort.desc); + }); + } +} + +extension SessionStatusQuerySortThenBy + on QueryBuilder { + QueryBuilder thenByCrId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'crId', Sort.asc); + }); + } + + QueryBuilder thenByCrIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'crId', Sort.desc); + }); + } + + QueryBuilder thenByCustId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'custId', Sort.asc); + }); + } + + QueryBuilder thenByCustIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'custId', Sort.desc); + }); + } + + QueryBuilder thenByHqId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'hqId', Sort.asc); + }); + } + + QueryBuilder thenByHqIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'hqId', Sort.desc); + }); + } + + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder thenByLocZip() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'locZip', Sort.asc); + }); + } + + QueryBuilder thenByLocZipDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'locZip', Sort.desc); + }); + } + + QueryBuilder + thenByServerInstance() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'serverInstance', Sort.asc); + }); + } + + QueryBuilder + thenByServerInstanceDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'serverInstance', Sort.desc); + }); + } + + QueryBuilder + thenByServerVersion() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'serverVersion', Sort.asc); + }); + } + + QueryBuilder + thenByServerVersionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'serverVersion', Sort.desc); + }); + } + + QueryBuilder thenBySid() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'sid', Sort.asc); + }); + } + + QueryBuilder thenBySidDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'sid', Sort.desc); + }); + } + + QueryBuilder thenByUsrId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'usrId', Sort.asc); + }); + } + + QueryBuilder thenByUsrIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'usrId', Sort.desc); + }); + } + + QueryBuilder thenByVhtId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'vhtId', Sort.asc); + }); + } + + QueryBuilder thenByVhtIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'vhtId', Sort.desc); + }); + } +} + +extension SessionStatusQueryWhereDistinct + on QueryBuilder { + QueryBuilder distinctByCrId() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'crId'); + }); + } + + QueryBuilder distinctByCustId() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'custId'); + }); + } + + QueryBuilder distinctByHqId() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'hqId'); + }); + } + + QueryBuilder distinctByLocZip( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'locZip', caseSensitive: caseSensitive); + }); + } + + QueryBuilder + distinctByServerInstance({bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'serverInstance', + caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByServerVersion( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'serverVersion', + caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctBySid( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'sid', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByUsrId() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'usrId'); + }); + } + + QueryBuilder distinctByVhtId() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'vhtId'); + }); + } +} + +extension SessionStatusQueryProperty + on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder crIdProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'crId'); + }); + } + + QueryBuilder custIdProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'custId'); + }); + } + + QueryBuilder hqIdProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'hqId'); + }); + } + + QueryBuilder locZipProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'locZip'); + }); + } + + QueryBuilder + serverInstanceProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'serverInstance'); + }); + } + + QueryBuilder + serverVersionProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'serverVersion'); + }); + } + + QueryBuilder sidProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'sid'); + }); + } + + QueryBuilder usrIdProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'usrId'); + }); + } + + QueryBuilder vhtIdProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'vhtId'); + }); + } +} + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +SessionStatus _$SessionStatusFromJson(Map json) => + SessionStatus() + ..custId = json['cust_id'] as int + ..hqId = json['hq_id'] as int + ..usrId = json['usr_id'] as int + ..crId = json['cr_id'] as int + ..sid = json['sid'] as String + ..vhtId = json['vht_id'] as int + ..locZip = json['loc_zip'] as String + ..serverVersion = json['server_version'] as String + ..serverInstance = json['server_instance'] as String; + +Map _$SessionStatusToJson(SessionStatus instance) => + { + 'cust_id': instance.custId, + 'hq_id': instance.hqId, + 'usr_id': instance.usrId, + 'cr_id': instance.crId, + 'sid': instance.sid, + 'vht_id': instance.vhtId, + 'loc_zip': instance.locZip, + 'server_version': instance.serverVersion, + 'server_instance': instance.serverInstance, + }; diff --git a/lib/model/status.dart b/lib/model/status.dart index ac8d29d..6f654e9 100644 --- a/lib/model/status.dart +++ b/lib/model/status.dart @@ -6,26 +6,9 @@ part 'status.g.dart'; @collection @JsonSerializable() class Status { - final Id id = 0; + late Id? id; - @JsonKey(name: 'cust_id') - late int custId; - @JsonKey(name: 'hq_id') - late int hqId; - @JsonKey(name: 'usr_id') - late int usrId; - @JsonKey(name: 'cr_id') - late int crId; - @JsonKey(name: 'sid') - late String sid; - @JsonKey(name: 'vht_id') - late int vhtId; - @JsonKey(name: 'loc_zip') - late String locZip; - @JsonKey(name: 'server_version') - late String serverVersion; - @JsonKey(name: 'server_instance') - late String serverInstance; + late StatusPos pos; Status(); @@ -33,3 +16,20 @@ class Status { Map toJson() => _$StatusToJson(this); } + +@embedded +@JsonSerializable() +class StatusPos { + late String zip; + + late String area; + + @JsonKey(name:'zip_real') + late String zipReal; + + StatusPos(); + + factory StatusPos.fromJson(Map json) => _$StatusPosFromJson(json); + + Map toJson() => _$StatusPosToJson(this); +} diff --git a/lib/model/status.g.dart b/lib/model/status.g.dart index 9348e41..04c9681 100644 --- a/lib/model/status.g.dart +++ b/lib/model/status.g.dart @@ -17,50 +17,11 @@ const StatusSchema = CollectionSchema( name: r'Status', id: -8158262482337811485, properties: { - r'crId': PropertySchema( + r'pos': PropertySchema( id: 0, - name: r'crId', - type: IsarType.long, - ), - r'custId': PropertySchema( - id: 1, - name: r'custId', - type: IsarType.long, - ), - r'hqId': PropertySchema( - id: 2, - name: r'hqId', - type: IsarType.long, - ), - r'locZip': PropertySchema( - id: 3, - name: r'locZip', - type: IsarType.string, - ), - r'serverInstance': PropertySchema( - id: 4, - name: r'serverInstance', - type: IsarType.string, - ), - r'serverVersion': PropertySchema( - id: 5, - name: r'serverVersion', - type: IsarType.string, - ), - r'sid': PropertySchema( - id: 6, - name: r'sid', - type: IsarType.string, - ), - r'usrId': PropertySchema( - id: 7, - name: r'usrId', - type: IsarType.long, - ), - r'vhtId': PropertySchema( - id: 8, - name: r'vhtId', - type: IsarType.long, + name: r'pos', + type: IsarType.object, + target: r'StatusPos', ) }, estimateSize: _statusEstimateSize, @@ -70,7 +31,7 @@ const StatusSchema = CollectionSchema( idName: r'id', indexes: {}, links: {}, - embeddedSchemas: {}, + embeddedSchemas: {r'StatusPos': StatusPosSchema}, getId: _statusGetId, getLinks: _statusGetLinks, attach: _statusAttach, @@ -83,10 +44,9 @@ int _statusEstimateSize( Map> allOffsets, ) { var bytesCount = offsets.last; - bytesCount += 3 + object.locZip.length * 3; - bytesCount += 3 + object.serverInstance.length * 3; - bytesCount += 3 + object.serverVersion.length * 3; - bytesCount += 3 + object.sid.length * 3; + bytesCount += 3 + + StatusPosSchema.estimateSize( + object.pos, allOffsets[StatusPos]!, allOffsets); return bytesCount; } @@ -96,15 +56,12 @@ void _statusSerialize( List offsets, Map> allOffsets, ) { - writer.writeLong(offsets[0], object.crId); - writer.writeLong(offsets[1], object.custId); - writer.writeLong(offsets[2], object.hqId); - writer.writeString(offsets[3], object.locZip); - writer.writeString(offsets[4], object.serverInstance); - writer.writeString(offsets[5], object.serverVersion); - writer.writeString(offsets[6], object.sid); - writer.writeLong(offsets[7], object.usrId); - writer.writeLong(offsets[8], object.vhtId); + writer.writeObject( + offsets[0], + allOffsets, + StatusPosSchema.serialize, + object.pos, + ); } Status _statusDeserialize( @@ -114,15 +71,13 @@ Status _statusDeserialize( Map> allOffsets, ) { final object = Status(); - object.crId = reader.readLong(offsets[0]); - object.custId = reader.readLong(offsets[1]); - object.hqId = reader.readLong(offsets[2]); - object.locZip = reader.readString(offsets[3]); - object.serverInstance = reader.readString(offsets[4]); - object.serverVersion = reader.readString(offsets[5]); - object.sid = reader.readString(offsets[6]); - object.usrId = reader.readLong(offsets[7]); - object.vhtId = reader.readLong(offsets[8]); + object.id = id; + object.pos = reader.readObjectOrNull( + offsets[0], + StatusPosSchema.deserialize, + allOffsets, + ) ?? + StatusPos(); return object; } @@ -134,37 +89,28 @@ P _statusDeserializeProp

( ) { switch (propertyId) { case 0: - return (reader.readLong(offset)) as P; - case 1: - return (reader.readLong(offset)) as P; - case 2: - return (reader.readLong(offset)) as P; - case 3: - return (reader.readString(offset)) as P; - case 4: - return (reader.readString(offset)) as P; - case 5: - return (reader.readString(offset)) as P; - case 6: - return (reader.readString(offset)) as P; - case 7: - return (reader.readLong(offset)) as P; - case 8: - return (reader.readLong(offset)) as P; + return (reader.readObjectOrNull( + offset, + StatusPosSchema.deserialize, + allOffsets, + ) ?? + StatusPos()) as P; default: throw IsarError('Unknown property with id $propertyId'); } } Id _statusGetId(Status object) { - return object.id; + return object.id ?? Isar.autoIncrement; } List> _statusGetLinks(Status object) { return []; } -void _statusAttach(IsarCollection col, Id id, Status object) {} +void _statusAttach(IsarCollection col, Id id, Status object) { + object.id = id; +} extension StatusQueryWhereSort on QueryBuilder { QueryBuilder anyId() { @@ -242,163 +188,23 @@ extension StatusQueryWhere on QueryBuilder { } extension StatusQueryFilter on QueryBuilder { - QueryBuilder crIdEqualTo(int value) { + QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'crId', - value: value, + return query.addFilterCondition(const FilterCondition.isNull( + property: r'id', )); }); } - QueryBuilder crIdGreaterThan( - int value, { - bool include = false, - }) { + QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'crId', - value: value, + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'id', )); }); } - QueryBuilder crIdLessThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'crId', - value: value, - )); - }); - } - - QueryBuilder crIdBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'crId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } - - QueryBuilder custIdEqualTo(int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'custId', - value: value, - )); - }); - } - - QueryBuilder custIdGreaterThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'custId', - value: value, - )); - }); - } - - QueryBuilder custIdLessThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'custId', - value: value, - )); - }); - } - - QueryBuilder custIdBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'custId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } - - QueryBuilder hqIdEqualTo(int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'hqId', - value: value, - )); - }); - } - - QueryBuilder hqIdGreaterThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'hqId', - value: value, - )); - }); - } - - QueryBuilder hqIdLessThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'hqId', - value: value, - )); - }); - } - - QueryBuilder hqIdBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'hqId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } - - QueryBuilder idEqualTo(Id value) { + QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( property: r'id', @@ -408,7 +214,7 @@ extension StatusQueryFilter on QueryBuilder { } QueryBuilder idGreaterThan( - Id value, { + Id? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { @@ -421,7 +227,7 @@ extension StatusQueryFilter on QueryBuilder { } QueryBuilder idLessThan( - Id value, { + Id? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { @@ -434,8 +240,8 @@ extension StatusQueryFilter on QueryBuilder { } QueryBuilder idBetween( - Id lower, - Id upper, { + Id? lower, + Id? upper, { bool includeLower = true, bool includeUpper = true, }) { @@ -449,783 +255,22 @@ extension StatusQueryFilter on QueryBuilder { )); }); } +} - QueryBuilder locZipEqualTo( - String value, { - bool caseSensitive = true, - }) { +extension StatusQueryObject on QueryBuilder { + QueryBuilder pos( + FilterQuery q) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'locZip', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder locZipGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'locZip', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder locZipLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'locZip', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder locZipBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'locZip', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder locZipStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'locZip', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder locZipEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'locZip', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder locZipContains( - String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'locZip', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder locZipMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'locZip', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder locZipIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'locZip', - value: '', - )); - }); - } - - QueryBuilder locZipIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'locZip', - value: '', - )); - }); - } - - QueryBuilder serverInstanceEqualTo( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'serverInstance', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverInstanceGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'serverInstance', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverInstanceLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'serverInstance', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverInstanceBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'serverInstance', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverInstanceStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'serverInstance', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverInstanceEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'serverInstance', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverInstanceContains( - String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'serverInstance', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverInstanceMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'serverInstance', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverInstanceIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'serverInstance', - value: '', - )); - }); - } - - QueryBuilder - serverInstanceIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'serverInstance', - value: '', - )); - }); - } - - QueryBuilder serverVersionEqualTo( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'serverVersion', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverVersionGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'serverVersion', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverVersionLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'serverVersion', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverVersionBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'serverVersion', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverVersionStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'serverVersion', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverVersionEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'serverVersion', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverVersionContains( - String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'serverVersion', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverVersionMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'serverVersion', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder serverVersionIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'serverVersion', - value: '', - )); - }); - } - - QueryBuilder - serverVersionIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'serverVersion', - value: '', - )); - }); - } - - QueryBuilder sidEqualTo( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sid', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder sidGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'sid', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder sidLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'sid', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder sidBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'sid', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder sidStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'sid', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder sidEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'sid', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder sidContains(String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'sid', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder sidMatches(String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'sid', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder sidIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sid', - value: '', - )); - }); - } - - QueryBuilder sidIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'sid', - value: '', - )); - }); - } - - QueryBuilder usrIdEqualTo(int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'usrId', - value: value, - )); - }); - } - - QueryBuilder usrIdGreaterThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'usrId', - value: value, - )); - }); - } - - QueryBuilder usrIdLessThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'usrId', - value: value, - )); - }); - } - - QueryBuilder usrIdBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'usrId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } - - QueryBuilder vhtIdEqualTo(int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'vhtId', - value: value, - )); - }); - } - - QueryBuilder vhtIdGreaterThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'vhtId', - value: value, - )); - }); - } - - QueryBuilder vhtIdLessThan( - int value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'vhtId', - value: value, - )); - }); - } - - QueryBuilder vhtIdBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'vhtId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.object(q, r'pos'); }); } } -extension StatusQueryObject on QueryBuilder {} - extension StatusQueryLinks on QueryBuilder {} -extension StatusQuerySortBy on QueryBuilder { - QueryBuilder sortByCrId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'crId', Sort.asc); - }); - } - - QueryBuilder sortByCrIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'crId', Sort.desc); - }); - } - - QueryBuilder sortByCustId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'custId', Sort.asc); - }); - } - - QueryBuilder sortByCustIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'custId', Sort.desc); - }); - } - - QueryBuilder sortByHqId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'hqId', Sort.asc); - }); - } - - QueryBuilder sortByHqIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'hqId', Sort.desc); - }); - } - - QueryBuilder sortByLocZip() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'locZip', Sort.asc); - }); - } - - QueryBuilder sortByLocZipDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'locZip', Sort.desc); - }); - } - - QueryBuilder sortByServerInstance() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'serverInstance', Sort.asc); - }); - } - - QueryBuilder sortByServerInstanceDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'serverInstance', Sort.desc); - }); - } - - QueryBuilder sortByServerVersion() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'serverVersion', Sort.asc); - }); - } - - QueryBuilder sortByServerVersionDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'serverVersion', Sort.desc); - }); - } - - QueryBuilder sortBySid() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'sid', Sort.asc); - }); - } - - QueryBuilder sortBySidDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'sid', Sort.desc); - }); - } - - QueryBuilder sortByUsrId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'usrId', Sort.asc); - }); - } - - QueryBuilder sortByUsrIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'usrId', Sort.desc); - }); - } - - QueryBuilder sortByVhtId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'vhtId', Sort.asc); - }); - } - - QueryBuilder sortByVhtIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'vhtId', Sort.desc); - }); - } -} +extension StatusQuerySortBy on QueryBuilder {} extension StatusQuerySortThenBy on QueryBuilder { - QueryBuilder thenByCrId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'crId', Sort.asc); - }); - } - - QueryBuilder thenByCrIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'crId', Sort.desc); - }); - } - - QueryBuilder thenByCustId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'custId', Sort.asc); - }); - } - - QueryBuilder thenByCustIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'custId', Sort.desc); - }); - } - - QueryBuilder thenByHqId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'hqId', Sort.asc); - }); - } - - QueryBuilder thenByHqIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'hqId', Sort.desc); - }); - } - QueryBuilder thenById() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'id', Sort.asc); @@ -1237,141 +282,9 @@ extension StatusQuerySortThenBy on QueryBuilder { return query.addSortBy(r'id', Sort.desc); }); } - - QueryBuilder thenByLocZip() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'locZip', Sort.asc); - }); - } - - QueryBuilder thenByLocZipDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'locZip', Sort.desc); - }); - } - - QueryBuilder thenByServerInstance() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'serverInstance', Sort.asc); - }); - } - - QueryBuilder thenByServerInstanceDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'serverInstance', Sort.desc); - }); - } - - QueryBuilder thenByServerVersion() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'serverVersion', Sort.asc); - }); - } - - QueryBuilder thenByServerVersionDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'serverVersion', Sort.desc); - }); - } - - QueryBuilder thenBySid() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'sid', Sort.asc); - }); - } - - QueryBuilder thenBySidDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'sid', Sort.desc); - }); - } - - QueryBuilder thenByUsrId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'usrId', Sort.asc); - }); - } - - QueryBuilder thenByUsrIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'usrId', Sort.desc); - }); - } - - QueryBuilder thenByVhtId() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'vhtId', Sort.asc); - }); - } - - QueryBuilder thenByVhtIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'vhtId', Sort.desc); - }); - } } -extension StatusQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByCrId() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'crId'); - }); - } - - QueryBuilder distinctByCustId() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'custId'); - }); - } - - QueryBuilder distinctByHqId() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'hqId'); - }); - } - - QueryBuilder distinctByLocZip( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'locZip', caseSensitive: caseSensitive); - }); - } - - QueryBuilder distinctByServerInstance( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'serverInstance', - caseSensitive: caseSensitive); - }); - } - - QueryBuilder distinctByServerVersion( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'serverVersion', - caseSensitive: caseSensitive); - }); - } - - QueryBuilder distinctBySid( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'sid', caseSensitive: caseSensitive); - }); - } - - QueryBuilder distinctByUsrId() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'usrId'); - }); - } - - QueryBuilder distinctByVhtId() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'vhtId'); - }); - } -} +extension StatusQueryWhereDistinct on QueryBuilder {} extension StatusQueryProperty on QueryBuilder { QueryBuilder idProperty() { @@ -1380,84 +293,517 @@ extension StatusQueryProperty on QueryBuilder { }); } - QueryBuilder crIdProperty() { + QueryBuilder posProperty() { return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'crId'); - }); - } - - QueryBuilder custIdProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'custId'); - }); - } - - QueryBuilder hqIdProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'hqId'); - }); - } - - QueryBuilder locZipProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'locZip'); - }); - } - - QueryBuilder serverInstanceProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'serverInstance'); - }); - } - - QueryBuilder serverVersionProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'serverVersion'); - }); - } - - QueryBuilder sidProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'sid'); - }); - } - - QueryBuilder usrIdProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'usrId'); - }); - } - - QueryBuilder vhtIdProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'vhtId'); + return query.addPropertyName(r'pos'); }); } } +// ************************************************************************** +// IsarEmbeddedGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const StatusPosSchema = Schema( + name: r'StatusPos', + id: 5472875660639986729, + properties: { + r'area': PropertySchema( + id: 0, + name: r'area', + type: IsarType.string, + ), + r'zip': PropertySchema( + id: 1, + name: r'zip', + type: IsarType.string, + ), + r'zipReal': PropertySchema( + id: 2, + name: r'zipReal', + type: IsarType.string, + ) + }, + estimateSize: _statusPosEstimateSize, + serialize: _statusPosSerialize, + deserialize: _statusPosDeserialize, + deserializeProp: _statusPosDeserializeProp, +); + +int _statusPosEstimateSize( + StatusPos object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + bytesCount += 3 + object.area.length * 3; + bytesCount += 3 + object.zip.length * 3; + bytesCount += 3 + object.zipReal.length * 3; + return bytesCount; +} + +void _statusPosSerialize( + StatusPos object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeString(offsets[0], object.area); + writer.writeString(offsets[1], object.zip); + writer.writeString(offsets[2], object.zipReal); +} + +StatusPos _statusPosDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = StatusPos(); + object.area = reader.readString(offsets[0]); + object.zip = reader.readString(offsets[1]); + object.zipReal = reader.readString(offsets[2]); + return object; +} + +P _statusPosDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readString(offset)) as P; + case 1: + return (reader.readString(offset)) as P; + case 2: + return (reader.readString(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension StatusPosQueryFilter + on QueryBuilder { + QueryBuilder areaEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'area', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'area', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'area', + value: '', + )); + }); + } + + QueryBuilder areaIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'area', + value: '', + )); + }); + } + + QueryBuilder zipEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'zip', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'zip', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: '', + )); + }); + } + + QueryBuilder zipIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'zip', + value: '', + )); + }); + } + + QueryBuilder zipRealEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'zipReal', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'zipReal', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zipReal', + value: '', + )); + }); + } + + QueryBuilder + zipRealIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'zipReal', + value: '', + )); + }); + } +} + +extension StatusPosQueryObject + on QueryBuilder {} + // ************************************************************************** // JsonSerializableGenerator // ************************************************************************** Status _$StatusFromJson(Map json) => Status() - ..custId = json['cust_id'] as int - ..hqId = json['hq_id'] as int - ..usrId = json['usr_id'] as int - ..crId = json['cr_id'] as int - ..sid = json['sid'] as String - ..vhtId = json['vht_id'] as int - ..locZip = json['loc_zip'] as String - ..serverVersion = json['server_version'] as String - ..serverInstance = json['server_instance'] as String; + ..id = json['id'] as int? + ..pos = StatusPos.fromJson(json['pos'] as Map); Map _$StatusToJson(Status instance) => { - 'cust_id': instance.custId, - 'hq_id': instance.hqId, - 'usr_id': instance.usrId, - 'cr_id': instance.crId, - 'sid': instance.sid, - 'vht_id': instance.vhtId, - 'loc_zip': instance.locZip, - 'server_version': instance.serverVersion, - 'server_instance': instance.serverInstance, + 'id': instance.id, + 'pos': instance.pos, + }; + +StatusPos _$StatusPosFromJson(Map json) => StatusPos() + ..zip = json['zip'] as String + ..area = json['area'] as String + ..zipReal = json['zip_real'] as String; + +Map _$StatusPosToJson(StatusPos instance) => { + 'zip': instance.zip, + 'area': instance.area, + 'zip_real': instance.zipReal, }; diff --git a/lib/popups/infos_popup.dart b/lib/popups/infos_popup.dart index bf125b5..e5f3ea6 100644 --- a/lib/popups/infos_popup.dart +++ b/lib/popups/infos_popup.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; import 'package:kumi_popup_window/kumi_popup_window.dart'; import 'package:stadtbote/main.dart'; -import 'package:stadtbote/model/status.dart'; +import 'package:stadtbote/model/session_status.dart'; import 'package:stadtbote/tools/mqtt_core.dart'; import 'package:stadtbote/tools/util.dart'; -void showInfosPopup(BuildContext context, Status? status) { +void showInfosPopup(BuildContext context, SessionStatus? status) { var text = "Versionsnummer: a203\n"; text += "Verbindungsstatus: ${MqttCore.instance.connectionState == ConnectionStateEnum.connected ? "Verbunden" : "NICHT verbunden"}\n"; text += "GPS-Status: ${MyApp.currentPosition != null ? "Position gefunden" : "Position NICHT gefunden"}\n"; diff --git a/lib/protocoll_messages/sync_jobs_message.dart b/lib/protocoll_messages/sync_jobs_message.dart index 5fd2dc6..c7dbd77 100644 --- a/lib/protocoll_messages/sync_jobs_message.dart +++ b/lib/protocoll_messages/sync_jobs_message.dart @@ -4,6 +4,9 @@ part 'sync_jobs_message.g.dart'; @JsonSerializable() class SyncJobsMessage { + @JsonKey(name: 'utc_unix_time') + late int utcUnixTime; + late SyncJobMessageSync sync; SyncJobsMessage(); @@ -15,8 +18,6 @@ class SyncJobsMessage { @JsonSerializable() class SyncJobMessageSync { - late int utcUnixTime; - late List jobs; SyncJobMessageSync(); @@ -30,7 +31,7 @@ class SyncJobMessageSync { class SyncJobMessageJob { late int id; - late int ver; + late String ver; late int state; diff --git a/lib/protocoll_messages/sync_jobs_message.g.dart b/lib/protocoll_messages/sync_jobs_message.g.dart index a47fec7..5a7c6f8 100644 --- a/lib/protocoll_messages/sync_jobs_message.g.dart +++ b/lib/protocoll_messages/sync_jobs_message.g.dart @@ -8,31 +8,31 @@ part of 'sync_jobs_message.dart'; SyncJobsMessage _$SyncJobsMessageFromJson(Map json) => SyncJobsMessage() + ..utcUnixTime = json['utc_unix_time'] as int ..sync = SyncJobMessageSync.fromJson(json['sync'] as Map); Map _$SyncJobsMessageToJson(SyncJobsMessage instance) => { + 'utc_unix_time': instance.utcUnixTime, 'sync': instance.sync, }; SyncJobMessageSync _$SyncJobMessageSyncFromJson(Map json) => SyncJobMessageSync() - ..utcUnixTime = json['utcUnixTime'] as int ..jobs = (json['jobs'] as List) .map((e) => SyncJobMessageJob.fromJson(e as Map)) .toList(); Map _$SyncJobMessageSyncToJson(SyncJobMessageSync instance) => { - 'utcUnixTime': instance.utcUnixTime, 'jobs': instance.jobs, }; SyncJobMessageJob _$SyncJobMessageJobFromJson(Map json) => SyncJobMessageJob() ..id = json['id'] as int - ..ver = json['ver'] as int + ..ver = json['ver'] as String ..state = json['state'] as int; Map _$SyncJobMessageJobToJson(SyncJobMessageJob instance) => diff --git a/lib/protocoll_messages/track_message.dart b/lib/protocoll_messages/track_message.dart index 14d1860..fba20d6 100644 --- a/lib/protocoll_messages/track_message.dart +++ b/lib/protocoll_messages/track_message.dart @@ -5,7 +5,7 @@ part 'track_message.g.dart'; @JsonSerializable() class TrackMessage { - late FinTaskPos pos; + late TrackPosition pos; TrackMessage(); @@ -14,3 +14,20 @@ class TrackMessage { Map toJson() => _$TrackMessageToJson(this); } +@JsonSerializable() +class TrackPosition { + late String time; + + late double lat; + + late double long; + + late int acc; + + TrackPosition(); + + factory TrackPosition.fromJson(Map json) => _$TrackPositionFromJson(json); + + Map toJson() => _$TrackPositionToJson(this); +} + diff --git a/lib/protocoll_messages/track_message.g.dart b/lib/protocoll_messages/track_message.g.dart index 231c185..643695e 100644 --- a/lib/protocoll_messages/track_message.g.dart +++ b/lib/protocoll_messages/track_message.g.dart @@ -7,9 +7,24 @@ part of 'track_message.dart'; // ************************************************************************** TrackMessage _$TrackMessageFromJson(Map json) => TrackMessage() - ..pos = FinTaskPos.fromJson(json['pos'] as Map); + ..pos = TrackPosition.fromJson(json['pos'] as Map); Map _$TrackMessageToJson(TrackMessage instance) => { 'pos': instance.pos, }; + +TrackPosition _$TrackPositionFromJson(Map json) => + TrackPosition() + ..time = json['time'] as String + ..lat = (json['lat'] as num).toDouble() + ..long = (json['long'] as num).toDouble() + ..acc = json['acc'] as int; + +Map _$TrackPositionToJson(TrackPosition instance) => + { + 'time': instance.time, + 'lat': instance.lat, + 'long': instance.long, + 'acc': instance.acc, + }; diff --git a/lib/tools/constants.dart b/lib/tools/constants.dart index dd7b171..946e4d3 100644 --- a/lib/tools/constants.dart +++ b/lib/tools/constants.dart @@ -6,7 +6,8 @@ class Constants { static const String messageTopicConnectionStatusChanged = "connection_status_changed"; static const String messageTopicSessionInfoUpdate = "status_info_updated"; - static const String messageTopicStatusInfoUpdate = "session_info_updated"; + static const String messageTopicSessionStatusInfoUpdate = "session_status_info_updated"; + static const String messageTopicStatusInfoUpdate = "status_info_updated"; static const String messageTopicJobReceived = "job_received"; static const String messageTopicJobDeleted = "job_deleted"; static const String messageTopicMessageReceived = "message_received"; diff --git a/lib/tools/messages/session_info_update.dart b/lib/tools/messages/session_info_update.dart index e705cba..2208732 100644 --- a/lib/tools/messages/session_info_update.dart +++ b/lib/tools/messages/session_info_update.dart @@ -1,8 +1,8 @@ -import 'package:stadtbote/model/status.dart'; +import 'package:stadtbote/model/session_status.dart'; -class StatusInfoUpdate { - StatusInfoUpdate({required this.status}); +class SessionStatusInfoUpdate { + SessionStatusInfoUpdate({required this.status}); - final Status status; + final SessionStatus status; } \ No newline at end of file diff --git a/lib/tools/messages/status_info_update.dart b/lib/tools/messages/status_info_update.dart new file mode 100644 index 0000000..938caad --- /dev/null +++ b/lib/tools/messages/status_info_update.dart @@ -0,0 +1,7 @@ +import 'package:stadtbote/model/status.dart'; + +class StatusInfoUpdate { + StatusInfoUpdate({required this.status}); + + final Status status; +} \ No newline at end of file diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index 2c619c8..18a6410 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -6,6 +6,7 @@ import 'package:isar/isar.dart'; import 'package:mqtt_client/mqtt_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart'; import 'package:stadtbote/model/job_tour.dart'; +import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_request.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart'; import 'package:stadtbote/protocoll_messages/device_object.dart'; @@ -23,13 +24,14 @@ import 'package:stadtbote/tools/messages/job_deleted_message.dart'; import 'package:stadtbote/tools/messages/job_received_message.dart'; import 'package:stadtbote/tools/messages/message_message.dart'; import 'package:stadtbote/tools/messages/session_info_update.dart'; +import 'package:stadtbote/tools/messages/status_info_update.dart'; // ignore: depend_on_referenced_packages import 'package:typed_data/typed_buffers.dart'; import 'package:http/http.dart' as http; import 'package:uuid/uuid.dart'; import '../main.dart'; -import '../model/status.dart'; +import '../model/session_status.dart'; import 'constants.dart'; import 'util.dart'; @@ -164,6 +166,10 @@ class MqttCore { _sessionMessageReceived(payloadData); break; + case 'status': + _statusMessageReceived(payloadData); + break; + case 'ranks': _rankingMessageReceived(payloadData); break; @@ -207,15 +213,27 @@ class MqttCore { await _sendSyncMessage(); - var statusMessage = Status.fromJson(payloadData['status']); + var sessionStatusMessage = SessionStatus.fromJson(payloadData['status']); await MyApp.isarInstance.writeTxn(() async { + await MyApp.isarInstance.sessionStatus.clear(); + await MyApp.isarInstance.sessionStatus.put(sessionStatusMessage); + }); + + MessageService().publish(Constants.messageTopicSessionStatusInfoUpdate, arguments: SessionStatusInfoUpdate(status: sessionStatusMessage)); + + _startTrackTimer(); + } + + void _statusMessageReceived(payloadData) async { + var statusMessage = Status.fromJson(payloadData); + + await MyApp.isarInstance.writeTxn(() async { + await MyApp.isarInstance.status.clear(); await MyApp.isarInstance.status.put(statusMessage); }); MessageService().publish(Constants.messageTopicStatusInfoUpdate, arguments: StatusInfoUpdate(status: statusMessage)); - - _startTrackTimer(); } void _rankingMessageReceived(payloadData) async { @@ -372,14 +390,14 @@ class MqttCore { var jobs = await MyApp.isarInstance.jobs.filter().stateGreaterThan(-1).findAll(); var answer = SyncJobsMessage(); + answer.utcUnixTime = DateTime.now().toUtc().millisecondsSinceEpoch ~/ 1000; answer.sync = SyncJobMessageSync(); answer.sync.jobs = []; - answer.sync.utcUnixTime = DateTime.now().toUtc().millisecondsSinceEpoch ~/ 1000; for (var job in jobs) { SyncJobMessageJob syncJob = SyncJobMessageJob(); syncJob.state = job.state; syncJob.id = job.id; - syncJob.ver = job.ver; + syncJob.ver = job.ver.toString(); answer.sync.jobs.add(syncJob); } @@ -391,7 +409,8 @@ class MqttCore { var position = MyApp.currentPosition; if (position != null) { var trackMessage = TrackMessage(); - trackMessage.pos = FinTaskPos(); + trackMessage.pos = TrackPosition(); + trackMessage.pos.time = position.timestamp.toIso8601String(); trackMessage.pos.lat = position.latitude; trackMessage.pos.long = position.longitude; trackMessage.pos.acc = position.accuracy.toInt(); diff --git a/lib/tools/util.dart b/lib/tools/util.dart index b25f09c..181532b 100644 --- a/lib/tools/util.dart +++ b/lib/tools/util.dart @@ -320,3 +320,21 @@ String mapTourMode(String mode) { return text; } + +Future showAlertDialog(BuildContext context, String title, String message) async { + await showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text(title), + content: Text(message), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: const Text('OK'), + ), + ], + ); + } + ); +} \ No newline at end of file