Erweiterungen
This commit is contained in:
1 parent
b7d45efecc
commit
d622c975c0
9 files changed
+345
-2
No files matched your search
@@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:intl/intl.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/signature_popup.dart';
|
||||||
import 'package:stadtbote/popups/tasks_popups/station_notice_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/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/constants.dart';
|
||||||
|
import 'package:stadtbote/tools/mqtt_core.dart';
|
||||||
|
|
||||||
import '../main.dart';
|
import '../main.dart';
|
||||||
import '../model/task_info.dart';
|
import '../model/task_info.dart';
|
||||||
@@ -244,6 +249,8 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
taskInfo.additionalText = dateFormat.format(DateTime.now());
|
taskInfo.additionalText = dateFormat.format(DateTime.now());
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
|
_sendArrivedMessage(taskInfo);
|
||||||
|
|
||||||
setState(() {});
|
setState(() {});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,4 +362,113 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
|
|
||||||
return true;
|
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<String, dynamic> 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;
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
@@ -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<String, dynamic> json) => _$FinTaskMessageFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$FinTaskMessageToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class FinTask {
|
||||||
|
@JsonKey(name: 'tr_id')
|
||||||
|
late int trId;
|
||||||
|
|
||||||
|
late Task task;
|
||||||
|
|
||||||
|
FinTask();
|
||||||
|
|
||||||
|
factory FinTask.fromJson(Map<String, dynamic> json) => _$FinTaskFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$FinTaskToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class Task {
|
||||||
|
@JsonKey(name: 's_id')
|
||||||
|
late int sId;
|
||||||
|
|
||||||
|
late String time;
|
||||||
|
|
||||||
|
late FinTaskPos? pos;
|
||||||
|
|
||||||
|
Task();
|
||||||
|
|
||||||
|
factory Task.fromJson(Map<String, dynamic> json) => _$TaskFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$TaskToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class FinTaskPos {
|
||||||
|
late double lat;
|
||||||
|
|
||||||
|
late double long;
|
||||||
|
|
||||||
|
FinTaskPos();
|
||||||
|
|
||||||
|
factory FinTaskPos.fromJson(Map<String, dynamic> json) => _$FinTaskPosFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$FinTaskPosToJson(this);
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'fin_task_message.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
FinTaskMessage _$FinTaskMessageFromJson(Map<String, dynamic> json) =>
|
||||||
|
FinTaskMessage()
|
||||||
|
..finTask = FinTask.fromJson(json['finTask'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$FinTaskMessageToJson(FinTaskMessage instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'finTask': instance.finTask,
|
||||||
|
};
|
||||||
|
|
||||||
|
FinTask _$FinTaskFromJson(Map<String, dynamic> json) => FinTask()
|
||||||
|
..trId = json['tr_id'] as int
|
||||||
|
..task = Task.fromJson(json['task'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$FinTaskToJson(FinTask instance) => <String, dynamic>{
|
||||||
|
'tr_id': instance.trId,
|
||||||
|
'task': instance.task,
|
||||||
|
};
|
||||||
|
|
||||||
|
Task _$TaskFromJson(Map<String, dynamic> json) => Task()
|
||||||
|
..sId = json['s_id'] as int
|
||||||
|
..time = json['time'] as String
|
||||||
|
..pos = json['pos'] == null
|
||||||
|
? null
|
||||||
|
: FinTaskPos.fromJson(json['pos'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$TaskToJson(Task instance) => <String, dynamic>{
|
||||||
|
's_id': instance.sId,
|
||||||
|
'time': instance.time,
|
||||||
|
'pos': instance.pos,
|
||||||
|
};
|
||||||
|
|
||||||
|
FinTaskPos _$FinTaskPosFromJson(Map<String, dynamic> json) => FinTaskPos()
|
||||||
|
..lat = (json['lat'] as num).toDouble()
|
||||||
|
..long = (json['long'] as num).toDouble();
|
||||||
|
|
||||||
|
Map<String, dynamic> _$FinTaskPosToJson(FinTaskPos instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'lat': instance.lat,
|
||||||
|
'long': instance.long,
|
||||||
|
};
|
||||||
@@ -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<String, dynamic> json) => _$FinishTourMessageFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$FinishTourMessageToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@JsonSerializable()
|
||||||
|
class Pos {
|
||||||
|
@JsonKey(name:'start_session')
|
||||||
|
late String startSession;
|
||||||
|
|
||||||
|
Payload();
|
||||||
|
|
||||||
|
factory Payload.fromJson(Map<String, dynamic> json) => _$PayloadFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$PayloadToJson(this);
|
||||||
|
}*/
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'finish_tour_message.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
FinishTourMessage _$FinishTourMessageFromJson(Map<String, dynamic> json) =>
|
||||||
|
FinishTourMessage()
|
||||||
|
..recv = json['recv'] as String
|
||||||
|
..store = json['store'] as bool
|
||||||
|
..messageId = json['messageId'] as String;
|
||||||
|
|
||||||
|
Map<String, dynamic> _$FinishTourMessageToJson(FinishTourMessage instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'recv': instance.recv,
|
||||||
|
'store': instance.store,
|
||||||
|
'messageId': instance.messageId,
|
||||||
|
};
|
||||||
@@ -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<String, dynamic> json) => _$TrackStationMessageFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$TrackStationMessageToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class Pos {
|
||||||
|
late double lat;
|
||||||
|
|
||||||
|
late double long;
|
||||||
|
|
||||||
|
Pos();
|
||||||
|
|
||||||
|
factory Pos.fromJson(Map<String, dynamic> json) => _$PosFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$PosToJson(this);
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'track_station_message.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
TrackStationMessage _$TrackStationMessageFromJson(Map<String, dynamic> json) =>
|
||||||
|
TrackStationMessage()
|
||||||
|
..sid = json['s_id'] as int
|
||||||
|
..time = json['time'] as String
|
||||||
|
..pos = json['pos'] == null
|
||||||
|
? null
|
||||||
|
: Pos.fromJson(json['pos'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$TrackStationMessageToJson(
|
||||||
|
TrackStationMessage instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
's_id': instance.sid,
|
||||||
|
'time': instance.time,
|
||||||
|
'pos': instance.pos,
|
||||||
|
};
|
||||||
|
|
||||||
|
Pos _$PosFromJson(Map<String, dynamic> json) => Pos()
|
||||||
|
..lat = (json['lat'] as num).toDouble()
|
||||||
|
..long = (json['long'] as num).toDouble();
|
||||||
|
|
||||||
|
Map<String, dynamic> _$PosToJson(Pos instance) => <String, dynamic>{
|
||||||
|
'lat': instance.lat,
|
||||||
|
'long': instance.long,
|
||||||
|
};
|
||||||
@@ -168,7 +168,7 @@ class MqttCore {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'job_del':
|
case 'job_del':
|
||||||
_jobDeleteReceived(payloadData);
|
//_jobDeleteReceived(payloadData);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'sync_request':
|
case 'sync_request':
|
||||||
|
|||||||
+1
-1
@@ -72,7 +72,7 @@ class Util {
|
|||||||
|
|
||||||
static logInfo(String message) {
|
static logInfo(String message) {
|
||||||
if (kDebugMode) {
|
if (kDebugMode) {
|
||||||
print('Message: $message');
|
print(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user