diff --git a/lib/content_views/assigned_jobs_page.dart b/lib/content_views/assigned_jobs_page.dart index 192affa..d251c1f 100644 --- a/lib/content_views/assigned_jobs_page.dart +++ b/lib/content_views/assigned_jobs_page.dart @@ -7,6 +7,7 @@ import 'package:stadtbote/content_views/utils/header_info.dart'; import 'package:intl/intl.dart'; import 'package:badges/badges.dart' as badges; import 'package:stadtbote/protocoll_messages/accept_job_message.dart'; +import 'package:stadtbote/protocoll_messages/fin_task_message.dart'; import 'package:stadtbote/tools/mqtt_core.dart'; import '../main.dart'; @@ -184,7 +185,7 @@ class _AssignedJobsPageState extends State { message.reaction.item = item; message.reaction.track = Track(); message.reaction.track.time = DateTime.now().toUtc().toIso8601String(); - message.reaction.track.pos = Pos(); + message.reaction.track.pos = FinTaskPos(); message.reaction.track.pos.lat = 0; message.reaction.track.pos.long = 0; message.reaction.track.pos.acc = 1; diff --git a/lib/content_views/task_list_page.dart b/lib/content_views/task_list_page.dart index 62a365f..6b962b0 100644 --- a/lib/content_views/task_list_page.dart +++ b/lib/content_views/task_list_page.dart @@ -16,7 +16,9 @@ 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/accept_job_message.dart'; import 'package:stadtbote/protocoll_messages/fin_task_message.dart'; +import 'package:stadtbote/protocoll_messages/fin_tour_message.dart'; import 'package:stadtbote/protocoll_messages/track_station_message.dart'; import 'package:stadtbote/tools/constants.dart'; import 'package:stadtbote/tools/mqtt_core.dart'; @@ -343,12 +345,14 @@ class _TaskListPageState extends State { SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft]); Future.delayed(const Duration(seconds: 1), () async { - _popup = showSignaturePopup(context, taskInfo, () => { - _popup.dismiss(context), + _popup = showSignaturePopup(context, taskInfo, () { + _popup.dismiss(context); - taskInfo.completed = true, + taskInfo.completed = true; - SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + + _sendFinTourMessage(); }); }); } @@ -380,34 +384,6 @@ class _TaskListPageState extends State { 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) { @@ -417,16 +393,71 @@ var location = App.CurrentLocation; var position = MyApp.currentPosition; if (position != null) { - trackStationMessage.pos = Pos(); + trackStationMessage.pos = FinTaskPos(); trackStationMessage.pos!.lat = position.latitude; trackStationMessage.pos!.long = position.latitude; } - var json = jsonEncode(trackStationMessage.toJson()); - MqttCore.instance.publishPayloadMessage("", trackStationMessage.toJson()); } + /* + "fin_tour": { + "tr_id": 211, + "com": "changed com#", + "track": { + "time": "2021-02-18T12:35:51Z", + "pos": + { + "lat": 53.595121, + "long": 9.907433, + "acc": 35 + } + }, + "tasks": [ + { + "s_id": 1, + "time": "2021-02-18T12:32:10Z", + "pos": + { + "lat": 53.595124, + "long": 9.907435 + } + }, + } + } +} + */ + _sendFinTourMessage() { + var finTourMessage = FinTourMessage(); + finTourMessage.finTour = FinTour(); + finTourMessage.finTour.trId = widget.tour.id; + finTourMessage.finTour.com = "Mir doch egal!"; + + var position = MyApp.currentPosition; + if (position != null) { + finTourMessage.finTour.track = Track(); + finTourMessage.finTour.track.time = DateTime.now().toIso8601String(); + finTourMessage.finTour.track.pos = FinTaskPos(); + finTourMessage.finTour.track.pos.lat = position.latitude; + finTourMessage.finTour.track.pos.long = position.longitude; + } + + finTourMessage.finTour.tasks = []; + for(var taskInfo in _taskList) { + var finTourTask = FinTourTask(); + finTourTask.sId = taskInfo.task.sId; + finTourTask.time = DateTime.now().toIso8601String(); + finTourTask.pos = FinTaskPos(); + finTourTask.pos.lat = 0; + finTourTask.pos.long = 0; + + finTourMessage.finTour.tasks.add(finTourTask); + } + + MqttCore.instance.publishPayloadMessage("job", finTourMessage.toJson()); + } + /*private JObject CreateFinTourMessage() { var payloadObject = new JObject(); diff --git a/lib/popups/accept_jobs_popup.dart b/lib/popups/accept_jobs_popup.dart index 7d440f6..5520f1a 100644 --- a/lib/popups/accept_jobs_popup.dart +++ b/lib/popups/accept_jobs_popup.dart @@ -6,6 +6,7 @@ import 'package:kumi_popup_window/kumi_popup_window.dart'; import 'package:stadtbote/main.dart'; import 'package:stadtbote/protocoll_messages/accept_job_message.dart'; import 'package:stadtbote/model/job.dart'; +import 'package:stadtbote/protocoll_messages/fin_task_message.dart'; import 'package:stadtbote/tools/constants.dart'; import 'package:stadtbote/tools/mqtt_core.dart'; import 'package:stadtbote/tools/util.dart'; @@ -173,7 +174,7 @@ _sendAnswer(Job job, int item) { message.reaction.item = item; message.reaction.track = Track(); message.reaction.track.time = DateTime.now().toUtc().toIso8601String(); - message.reaction.track.pos = Pos(); + message.reaction.track.pos = FinTaskPos(); message.reaction.track.pos.lat = currentPosition != null ? currentPosition.latitude : 0.0; message.reaction.track.pos.long = currentPosition != null ? currentPosition.longitude : 0.0; message.reaction.track.pos.acc = currentPosition != null ? currentPosition.accuracy : 0.0; diff --git a/lib/protocoll_messages/accept_job_message.dart b/lib/protocoll_messages/accept_job_message.dart index 0451105..36fab25 100644 --- a/lib/protocoll_messages/accept_job_message.dart +++ b/lib/protocoll_messages/accept_job_message.dart @@ -1,4 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; +import 'package:stadtbote/protocoll_messages/fin_task_message.dart'; part 'accept_job_message.g.dart'; @@ -30,7 +31,7 @@ class Reaction { @JsonSerializable() @JsonSerializable()class Track { late String time; - late Pos pos; + late FinTaskPos pos; Track(); @@ -38,17 +39,3 @@ class Reaction { Map toJson() => _$TrackToJson(this); } - -@JsonSerializable() -class Pos { - late double lat; - late double long; - late double acc; - - Pos(); - - factory Pos.fromJson(Map json) => _$PosFromJson(json); - - Map toJson() => _$PosToJson(this); -} - diff --git a/lib/protocoll_messages/accept_job_message.g.dart b/lib/protocoll_messages/accept_job_message.g.dart index 2c0e79e..4687734 100644 --- a/lib/protocoll_messages/accept_job_message.g.dart +++ b/lib/protocoll_messages/accept_job_message.g.dart @@ -30,20 +30,9 @@ Map _$ReactionToJson(Reaction instance) => { Track _$TrackFromJson(Map json) => Track() ..time = json['time'] as String - ..pos = Pos.fromJson(json['pos'] as Map); + ..pos = FinTaskPos.fromJson(json['pos'] as Map); Map _$TrackToJson(Track instance) => { 'time': instance.time, 'pos': instance.pos, }; - -Pos _$PosFromJson(Map json) => Pos() - ..lat = (json['lat'] as num).toDouble() - ..long = (json['long'] as num).toDouble() - ..acc = (json['acc'] as num).toDouble(); - -Map _$PosToJson(Pos instance) => { - 'lat': instance.lat, - 'long': instance.long, - 'acc': instance.acc, - }; diff --git a/lib/protocoll_messages/fin_task_message.dart b/lib/protocoll_messages/fin_task_message.dart index c1ee7a0..70b38df 100644 --- a/lib/protocoll_messages/fin_task_message.dart +++ b/lib/protocoll_messages/fin_task_message.dart @@ -51,6 +51,8 @@ class FinTaskPos { late double long; + late double acc; + FinTaskPos(); factory FinTaskPos.fromJson(Map json) => _$FinTaskPosFromJson(json); diff --git a/lib/protocoll_messages/fin_task_message.g.dart b/lib/protocoll_messages/fin_task_message.g.dart index 9bb0395..a939979 100644 --- a/lib/protocoll_messages/fin_task_message.g.dart +++ b/lib/protocoll_messages/fin_task_message.g.dart @@ -39,10 +39,12 @@ Map _$TaskToJson(Task instance) => { FinTaskPos _$FinTaskPosFromJson(Map json) => FinTaskPos() ..lat = (json['lat'] as num).toDouble() - ..long = (json['long'] as num).toDouble(); + ..long = (json['long'] as num).toDouble() + ..acc = (json['acc'] as num).toDouble(); Map _$FinTaskPosToJson(FinTaskPos instance) => { 'lat': instance.lat, 'long': instance.long, + 'acc': instance.acc, }; diff --git a/lib/protocoll_messages/fin_tour_message.dart b/lib/protocoll_messages/fin_tour_message.dart new file mode 100644 index 0000000..c8846eb --- /dev/null +++ b/lib/protocoll_messages/fin_tour_message.dart @@ -0,0 +1,52 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:stadtbote/protocoll_messages/accept_job_message.dart'; +import 'package:stadtbote/protocoll_messages/fin_task_message.dart'; +import 'package:stadtbote/tools/util.dart'; + +part 'fin_tour_message.g.dart'; + +@JsonSerializable() +class FinTourMessage { + late FinTour finTour; + + FinTourMessage(); + + factory FinTourMessage.fromJson(Map json) => _$FinTourMessageFromJson(json); + + Map toJson() => _$FinTourMessageToJson(this); +} + +@JsonSerializable() +class FinTour { + @JsonKey(name: 'tr_id') + late int trId; + + late String com; + + late Track track; + + late List tasks; + + FinTour(); + + factory FinTour.fromJson(Map json) => _$FinTourFromJson(json); + + Map toJson() => _$FinTourToJson(this); +} + +@JsonSerializable() +class FinTourTask { + @JsonKey(name: 's_id') + late int sId; + + late String time; + + late FinTaskPos pos; + + FinTourTask(); + + factory FinTourTask.fromJson(Map json) => _$FinTourTaskFromJson(json); + + Map toJson() => _$FinTourTaskToJson(this); +} diff --git a/lib/protocoll_messages/fin_tour_message.g.dart b/lib/protocoll_messages/fin_tour_message.g.dart new file mode 100644 index 0000000..50edc6a --- /dev/null +++ b/lib/protocoll_messages/fin_tour_message.g.dart @@ -0,0 +1,43 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'fin_tour_message.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FinTourMessage _$FinTourMessageFromJson(Map json) => + FinTourMessage() + ..finTour = FinTour.fromJson(json['finTour'] as Map); + +Map _$FinTourMessageToJson(FinTourMessage instance) => + { + 'finTour': instance.finTour, + }; + +FinTour _$FinTourFromJson(Map json) => FinTour() + ..trId = json['tr_id'] as int + ..com = json['com'] as String + ..track = Track.fromJson(json['track'] as Map) + ..tasks = (json['tasks'] as List) + .map((e) => FinTourTask.fromJson(e as Map)) + .toList(); + +Map _$FinTourToJson(FinTour instance) => { + 'tr_id': instance.trId, + 'com': instance.com, + 'track': instance.track, + 'tasks': instance.tasks, + }; + +FinTourTask _$FinTourTaskFromJson(Map json) => FinTourTask() + ..sId = json['s_id'] as int + ..time = json['time'] as String + ..pos = FinTaskPos.fromJson(json['pos'] as Map); + +Map _$FinTourTaskToJson(FinTourTask instance) => + { + 's_id': instance.sId, + 'time': instance.time, + 'pos': instance.pos, + }; diff --git a/lib/protocoll_messages/finish_tour_message.dart b/lib/protocoll_messages/finish_tour_message.dart deleted file mode 100644 index 607e82c..0000000 --- a/lib/protocoll_messages/finish_tour_message.dart +++ /dev/null @@ -1,34 +0,0 @@ -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 deleted file mode 100644 index b21afb7..0000000 --- a/lib/protocoll_messages/finish_tour_message.g.dart +++ /dev/null @@ -1,20 +0,0 @@ -// 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 index 6e6985f..7deec2a 100644 --- a/lib/protocoll_messages/track_station_message.dart +++ b/lib/protocoll_messages/track_station_message.dart @@ -1,5 +1,6 @@ import 'package:isar/isar.dart'; import 'package:json_annotation/json_annotation.dart'; +import 'package:stadtbote/protocoll_messages/fin_task_message.dart'; import 'package:stadtbote/tools/util.dart'; part 'track_station_message.g.dart'; @@ -11,7 +12,7 @@ class TrackStationMessage { late String time; - late Pos? pos; + late FinTaskPos? pos; TrackStationMessage(); @@ -19,16 +20,3 @@ class TrackStationMessage { 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 index 7ba5b02..c681d5b 100644 --- a/lib/protocoll_messages/track_station_message.g.dart +++ b/lib/protocoll_messages/track_station_message.g.dart @@ -12,7 +12,7 @@ TrackStationMessage _$TrackStationMessageFromJson(Map json) => ..time = json['time'] as String ..pos = json['pos'] == null ? null - : Pos.fromJson(json['pos'] as Map); + : FinTaskPos.fromJson(json['pos'] as Map); Map _$TrackStationMessageToJson( TrackStationMessage instance) => @@ -21,12 +21,3 @@ Map _$TrackStationMessageToJson( '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, - };