From d622c975c0a6656e0c6199ae37bef5b228d40d43 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Sat, 3 Feb 2024 14:41:14 +0100 Subject: [PATCH] Erweiterungen --- lib/content_views/task_list_page.dart | 116 ++++++++++++++++++ lib/protocoll_messages/fin_task_message.dart | 59 +++++++++ .../fin_task_message.g.dart | 48 ++++++++ .../finish_tour_message.dart | 34 +++++ .../finish_tour_message.g.dart | 20 +++ .../track_station_message.dart | 34 +++++ .../track_station_message.g.dart | 32 +++++ lib/tools/mqtt_core.dart | 2 +- lib/tools/util.dart | 2 +- 9 files changed, 345 insertions(+), 2 deletions(-) create mode 100644 lib/protocoll_messages/fin_task_message.dart create mode 100644 lib/protocoll_messages/fin_task_message.g.dart create mode 100644 lib/protocoll_messages/finish_tour_message.dart create mode 100644 lib/protocoll_messages/finish_tour_message.g.dart create mode 100644 lib/protocoll_messages/track_station_message.dart create mode 100644 lib/protocoll_messages/track_station_message.g.dart diff --git a/lib/content_views/task_list_page.dart b/lib/content_views/task_list_page.dart index 21124d8..62a365f 100644 --- a/lib/content_views/task_list_page.dart +++ b/lib/content_views/task_list_page.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; @@ -14,7 +16,10 @@ import 'package:stadtbote/popups/tasks_popups/scan_barcodes_popup.dart'; import 'package:stadtbote/popups/tasks_popups/signature_popup.dart'; import 'package:stadtbote/popups/tasks_popups/station_notice_popup.dart'; import 'package:stadtbote/popups/tasks_popups/take_photos_popup.dart'; +import 'package:stadtbote/protocoll_messages/fin_task_message.dart'; +import 'package:stadtbote/protocoll_messages/track_station_message.dart'; import 'package:stadtbote/tools/constants.dart'; +import 'package:stadtbote/tools/mqtt_core.dart'; import '../main.dart'; import '../model/task_info.dart'; @@ -244,6 +249,8 @@ class _TaskListPageState extends State { taskInfo.additionalText = dateFormat.format(DateTime.now()); taskInfo.completed = true; + _sendArrivedMessage(taskInfo); + setState(() {}); } @@ -355,4 +362,113 @@ class _TaskListPageState extends State { return true; } + + _sendArrivedMessage(TaskInfo taskInfo) { + var finTaskMessage = FinTaskMessage(); + finTaskMessage.finTask = FinTask(); + finTaskMessage.finTask.trId = widget.tour.id; + finTaskMessage.finTask.task = Task(); + finTaskMessage.finTask.task.sId = taskInfo.task.sId; + finTaskMessage.finTask.task.time = DateTime.now().toIso8601String(); + + var position = MyApp.currentPosition; + if (position != null) { + finTaskMessage.finTask.task.pos = FinTaskPos(); + finTaskMessage.finTask.task.pos!.lat = position.latitude; + finTaskMessage.finTask.task.pos!.long = position.longitude; + } + + MqttCore.instance.publishPayloadMessage("job", finTaskMessage.toJson()); + } +/* +var location = App.CurrentLocation; + + var root = new JObject(); + + var finTask = new JObject(); + root.Add(new JProperty("finTask", finTask)); + + finTask.Add(new JProperty("tr_id", _jobTour.Id)); + + var taskObject = new JObject(); + finTask.Add(new JProperty("task", taskObject)); + + taskObject.Add(new JProperty("s_id", task.SId)); + taskObject.Add(new JProperty("time", DateTime.Now.ToString("o"))); + + if (location != null) + { + var posObject = new JObject + { + new JProperty("lat", location.Latitude), + new JProperty("long", location.Longitude) + }; + taskObject.Add(new JProperty("pos", posObject)); + } + + App.Core.SendJsonMessageAsync("job", root); + */ + + _sendTrackStationMessage(TaskInfo taskInfo) + { + var trackStationMessage = TrackStationMessage(); + trackStationMessage.sid = taskInfo.task.sId; + trackStationMessage.time = DateTime.now().toIso8601String(); + + var position = MyApp.currentPosition; + if (position != null) { + trackStationMessage.pos = Pos(); + trackStationMessage.pos!.lat = position.latitude; + trackStationMessage.pos!.long = position.latitude; + } + + var json = jsonEncode(trackStationMessage.toJson()); + + MqttCore.instance.publishPayloadMessage("", trackStationMessage.toJson()); + } + + /*private JObject CreateFinTourMessage() + { + var payloadObject = new JObject(); + + var finTourObject = new JObject(); + payloadObject.Add(new JProperty("fin_tour", finTourObject)); + + finTourObject.Add(new JProperty("tr_id", _jobTour.Id)); + finTourObject.Add(new JProperty("track", CreateTrackObject())); + + var tasksArray = new JArray(); + finTourObject.Add(new JProperty("tasks", tasksArray)); + + foreach (var task in _jobTour.Tasks) + { + if (task.Answer != null && task.Answer.Length > 0) + { + var answerObject = (JObject)JsonConvert.DeserializeObject(task.Answer); + + tasksArray.Add(answerObject); + } + } + + return payloadObject; + }*/ + + /*Map CreateTrackObject() + { + var location = App.CurrentLocation; + + var trackObject = new JObject { new JProperty("time", DateTime.Now.ToString("o")) }; + + if (location != null) + { + var posObject = new JObject(); + trackObject.Add(new JProperty("pos", posObject)); + + posObject.Add(new JProperty("lat", location.Latitude)); + posObject.Add(new JProperty("long", location.Longitude)); + posObject.Add(new JProperty("acc", location.Accuracy)); + } + + return trackObject; + }*/ } diff --git a/lib/protocoll_messages/fin_task_message.dart b/lib/protocoll_messages/fin_task_message.dart new file mode 100644 index 0000000..c1ee7a0 --- /dev/null +++ b/lib/protocoll_messages/fin_task_message.dart @@ -0,0 +1,59 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:stadtbote/tools/util.dart'; + +part 'fin_task_message.g.dart'; + +@JsonSerializable() +class FinTaskMessage { + late FinTask finTask; + + FinTaskMessage(); + + factory FinTaskMessage.fromJson(Map json) => _$FinTaskMessageFromJson(json); + + Map toJson() => _$FinTaskMessageToJson(this); +} + +@JsonSerializable() +class FinTask { + @JsonKey(name: 'tr_id') + late int trId; + + late Task task; + + FinTask(); + + factory FinTask.fromJson(Map json) => _$FinTaskFromJson(json); + + Map toJson() => _$FinTaskToJson(this); +} + +@JsonSerializable() +class Task { + @JsonKey(name: 's_id') + late int sId; + + late String time; + + late FinTaskPos? pos; + + Task(); + + factory Task.fromJson(Map json) => _$TaskFromJson(json); + + Map toJson() => _$TaskToJson(this); +} + +@JsonSerializable() +class FinTaskPos { + late double lat; + + late double long; + + FinTaskPos(); + + factory FinTaskPos.fromJson(Map json) => _$FinTaskPosFromJson(json); + + Map toJson() => _$FinTaskPosToJson(this); +} diff --git a/lib/protocoll_messages/fin_task_message.g.dart b/lib/protocoll_messages/fin_task_message.g.dart new file mode 100644 index 0000000..9bb0395 --- /dev/null +++ b/lib/protocoll_messages/fin_task_message.g.dart @@ -0,0 +1,48 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'fin_task_message.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FinTaskMessage _$FinTaskMessageFromJson(Map json) => + FinTaskMessage() + ..finTask = FinTask.fromJson(json['finTask'] as Map); + +Map _$FinTaskMessageToJson(FinTaskMessage instance) => + { + 'finTask': instance.finTask, + }; + +FinTask _$FinTaskFromJson(Map json) => FinTask() + ..trId = json['tr_id'] as int + ..task = Task.fromJson(json['task'] as Map); + +Map _$FinTaskToJson(FinTask instance) => { + 'tr_id': instance.trId, + 'task': instance.task, + }; + +Task _$TaskFromJson(Map json) => Task() + ..sId = json['s_id'] as int + ..time = json['time'] as String + ..pos = json['pos'] == null + ? null + : FinTaskPos.fromJson(json['pos'] as Map); + +Map _$TaskToJson(Task instance) => { + 's_id': instance.sId, + 'time': instance.time, + 'pos': instance.pos, + }; + +FinTaskPos _$FinTaskPosFromJson(Map json) => FinTaskPos() + ..lat = (json['lat'] as num).toDouble() + ..long = (json['long'] as num).toDouble(); + +Map _$FinTaskPosToJson(FinTaskPos instance) => + { + 'lat': instance.lat, + 'long': instance.long, + }; diff --git a/lib/protocoll_messages/finish_tour_message.dart b/lib/protocoll_messages/finish_tour_message.dart new file mode 100644 index 0000000..607e82c --- /dev/null +++ b/lib/protocoll_messages/finish_tour_message.dart @@ -0,0 +1,34 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:stadtbote/tools/util.dart'; + +part 'finish_tour_message.g.dart'; + +@JsonSerializable() +class FinishTourMessage { + Id get isarId => Util.fastHash(messageId); + + late String recv; + + late bool store; + + late String messageId; + + FinishTourMessage(); + + factory FinishTourMessage.fromJson(Map json) => _$FinishTourMessageFromJson(json); + + Map toJson() => _$FinishTourMessageToJson(this); +} + +/*@JsonSerializable() +class Pos { + @JsonKey(name:'start_session') + late String startSession; + + Payload(); + + factory Payload.fromJson(Map json) => _$PayloadFromJson(json); + + Map toJson() => _$PayloadToJson(this); +}*/ diff --git a/lib/protocoll_messages/finish_tour_message.g.dart b/lib/protocoll_messages/finish_tour_message.g.dart new file mode 100644 index 0000000..b21afb7 --- /dev/null +++ b/lib/protocoll_messages/finish_tour_message.g.dart @@ -0,0 +1,20 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'finish_tour_message.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FinishTourMessage _$FinishTourMessageFromJson(Map json) => + FinishTourMessage() + ..recv = json['recv'] as String + ..store = json['store'] as bool + ..messageId = json['messageId'] as String; + +Map _$FinishTourMessageToJson(FinishTourMessage instance) => + { + 'recv': instance.recv, + 'store': instance.store, + 'messageId': instance.messageId, + }; diff --git a/lib/protocoll_messages/track_station_message.dart b/lib/protocoll_messages/track_station_message.dart new file mode 100644 index 0000000..6e6985f --- /dev/null +++ b/lib/protocoll_messages/track_station_message.dart @@ -0,0 +1,34 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:stadtbote/tools/util.dart'; + +part 'track_station_message.g.dart'; + +@JsonSerializable() +class TrackStationMessage { + @JsonKey(name: 's_id') + late int sid; + + late String time; + + late Pos? pos; + + TrackStationMessage(); + + factory TrackStationMessage.fromJson(Map json) => _$TrackStationMessageFromJson(json); + + Map toJson() => _$TrackStationMessageToJson(this); +} + +@JsonSerializable() +class Pos { + late double lat; + + late double long; + + Pos(); + + factory Pos.fromJson(Map json) => _$PosFromJson(json); + + Map toJson() => _$PosToJson(this); +} diff --git a/lib/protocoll_messages/track_station_message.g.dart b/lib/protocoll_messages/track_station_message.g.dart new file mode 100644 index 0000000..7ba5b02 --- /dev/null +++ b/lib/protocoll_messages/track_station_message.g.dart @@ -0,0 +1,32 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'track_station_message.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +TrackStationMessage _$TrackStationMessageFromJson(Map json) => + TrackStationMessage() + ..sid = json['s_id'] as int + ..time = json['time'] as String + ..pos = json['pos'] == null + ? null + : Pos.fromJson(json['pos'] as Map); + +Map _$TrackStationMessageToJson( + TrackStationMessage instance) => + { + 's_id': instance.sid, + 'time': instance.time, + 'pos': instance.pos, + }; + +Pos _$PosFromJson(Map json) => Pos() + ..lat = (json['lat'] as num).toDouble() + ..long = (json['long'] as num).toDouble(); + +Map _$PosToJson(Pos instance) => { + 'lat': instance.lat, + 'long': instance.long, + }; diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index 706a656..46502e6 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -168,7 +168,7 @@ class MqttCore { break; case 'job_del': - _jobDeleteReceived(payloadData); + //_jobDeleteReceived(payloadData); break; case 'sync_request': diff --git a/lib/tools/util.dart b/lib/tools/util.dart index 9efe947..9a584fc 100644 --- a/lib/tools/util.dart +++ b/lib/tools/util.dart @@ -72,7 +72,7 @@ class Util { static logInfo(String message) { if (kDebugMode) { - print('Message: $message'); + print(message); } }