From 9e6e1d47f3cf43e3285b74a42a3c058109c10098 Mon Sep 17 00:00:00 2001
From: Maximilian Betz <Maximilian.Betz@awi.de>
Date: Tue, 15 Mar 2022 12:18:15 +0100
Subject: [PATCH] updated date time format to sensor format

---
 README.md           | 24 +++++++++++++-----------
 lib/addevent.dart   | 24 +++++++++++++++---------
 lib/datamodel.dart  | 26 +++++++++++++-------------
 lib/viewevents.dart | 14 +++++++-------
 4 files changed, 48 insertions(+), 40 deletions(-)

diff --git a/README.md b/README.md
index fec890d..5429024 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,6 @@ A cross plattform project for android and ios to log events offline everywhere a
 - How to store not uploaded events locally?  Dumping jsons to a file?, ObjectBox,  SharedPreferences, 
 
 
-
 ## Local Base Data Concept
 - The configuration.dart age widget is used to get the online available information for available
   devices and event creation. 
@@ -22,37 +21,40 @@ A cross plattform project for android and ios to log events offline everywhere a
 - This "base data" is required to provide the dropdown menu options on the addevent.dart page.
 - This "base data" needs to be stored persistently, so that it is available also offline!
 
-## Add Event Widget
+## Add Event Page
 - Usw Switch for automatic GNSS and Time update. 
 - Show "now" time button only if GNSS is disabled. This button shall fill the timestamp with the current utc time.
 
-## View Events Widget 
+## View & Sync Page
 - Events added on the addevent.dart page have to be stored locally persistently. They can be displayed in the view
   events widget. Each event has a flag which shows if the event is already exported to sensor.
   Shall exported events be displayed here? Slide switch to also show exported events?
 - Functionality to export events locally for backup in the field! 
 
- 
+
 ## Configuration Page
-- Dropdown "Collection" to select a collection
-- Textfield to show current locally selected and offline available collection  
+- Switch to select if Mission or Collection based.
+- Dropdown "Collection" to select a collection / mission
 - Button "get Collection devices from Sensor"
 - Button "store Collection devices locally"
 - Select a Mission from the new Sensor-Mission-Management to get a set of devices.
-- Also input  username und passwort on this page.  "Test login on store even if  not required here"
+- Username und passwort. "Test login on store even if  not required here"
 
 
 ## GNSS
-- Checkbox on add event page which activates GNSS locationing. A field shall signal "no fix" or presision in meter. 
-The fields lat, long, elevation are updated automatically if checkbox is checked. 
+- Switch on add event page which activates GNSS locationing. A field shall signal "no fix" or presision in meter. 
+The fields lat, long, elevation and timestamp are updated automatically if checkbox is checked. 
 
 
 
 # Input validation 
-
 a-z , A-Z , _ , 0-9 , ,(Comma) , ( , ) , + , - , . , : 
- 
 -90 => Latitude <= +90
 -180 => Longitude <= +180
  Elevation: any numer
  
+ 
+ 
+## TODOs
+- FlutterSecureStorage   for user password?
+ 
diff --git a/lib/addevent.dart b/lib/addevent.dart
index a79a847..9f8b64c 100644
--- a/lib/addevent.dart
+++ b/lib/addevent.dart
@@ -189,8 +189,9 @@ class _AddEventPageState extends State<AddEvent>  {
       eventsStore.currentEvent.elevation = alt;
 
       var date = DateTime.now().toUtc();
-      eventsStore.currentEvent.startDate = '$date';
-      eventsStore.currentEvent.endDate = '$date';
+      var isoDate = date.toIso8601String();
+      eventsStore.currentEvent.startDate = isoDate;
+      eventsStore.currentEvent.endDate = isoDate;
 
       if(accuracy == 0.0){
         gnssStatusText = "No-Fix";
@@ -315,9 +316,10 @@ class _AddEventPageState extends State<AddEvent>  {
                                 showTitleActions: true,
                                 onConfirm: (date) {
                                   //Only one field for start and end date.
-                                  eventsStore.currentEvent.startDate = '$date';
-                                  eventsStore.currentEvent.endDate = '$date';
-                                  debugPrint('Date set to : $date');
+                                  var isoDate = date.toIso8601String();
+                                  eventsStore.currentEvent.startDate = isoDate;
+                                  eventsStore.currentEvent.endDate = isoDate;
+                                  debugPrint('Date set to : $isoDate');
                                   setState(() {});
                                 },
                                 currentTime: DateTime.now().toUtc(),
@@ -328,8 +330,9 @@ class _AddEventPageState extends State<AddEvent>  {
                         ElevatedButton(
                           onPressed: () {
                             var date = DateTime.now().toUtc();
-                            eventsStore.currentEvent.startDate = '$date';
-                            eventsStore.currentEvent.endDate = '$date';
+                            var isoDate = date.toIso8601String();
+                            eventsStore.currentEvent.startDate = isoDate;
+                            eventsStore.currentEvent.endDate = isoDate;
                             debugPrint('Date set to : ' +
                                 eventsStore.currentEvent.endDate.toString());
                             setState(() {});
@@ -468,8 +471,11 @@ class _AddEventPageState extends State<AddEvent>  {
 
                       //Update time for next event
                       var date = DateTime.now().toUtc();
-                      eventsStore.currentEvent.startDate = '$date';
-                      eventsStore.currentEvent.endDate = '$date';
+                      var isoDate = date.toIso8601String();
+                      eventsStore.currentEvent.startDate = isoDate;
+                      eventsStore.currentEvent.endDate = isoDate;
+
+                      debugPrint(date.toIso8601String());
                     }
                     setState(() {});
                   },
diff --git a/lib/datamodel.dart b/lib/datamodel.dart
index 2ab5425..8c8da8f 100644
--- a/lib/datamodel.dart
+++ b/lib/datamodel.dart
@@ -88,19 +88,19 @@ class Event{
   }
 
   Map<String, dynamic> toSensorJson() => {
-    'itemID':id,
-    'inheritToAllChildren':'false',
-    'inheritToChildren':[],
-    'event':{
-      'startDate':startDate,
-      'endDate':endDate,
-      'label':label,
-      'description':description,
-      'eventType':type,
-      'latitude':latitude,
-      'longitude':longitude,
-      'elevationInMeter':elevation,
-      'id':0
+    "\"itemID\"":"\"$id\"",
+    "\"inheritToAllChildren\"":"\"false\"",
+    "\"inheritToChildren\"":[],
+    "\"event\"":{
+      "\"startDate\"":"\"$startDate\"",
+      "\"endDate\"":"\"$endDate\"",
+      "\"label\"":"\"$label\"",
+      "\"description\"":"\"$description\"",
+      "\"eventType\"":"\"$type\"",
+      "\"latitude\"":"\"$latitude\"",
+      "\"longitude\"":"\"$longitude\"",
+      "\"elevationInMeter\"":"\"$elevation\"",
+      "\"id\"":"\"0\""
     }
   };
 
diff --git a/lib/viewevents.dart b/lib/viewevents.dart
index 39f3d01..5e25506 100644
--- a/lib/viewevents.dart
+++ b/lib/viewevents.dart
@@ -22,7 +22,12 @@ Future<bool> syncEvents() async {
       url = base_url + event.id.toString() + '?createVersion=false';
       debugPrint('XXX ' + Uri.parse(url).toString());
       final response = await http.put(Uri.parse(url),
-        headers: { "Accept" : "application/json"},
+
+
+        headers: {
+          "Content-Type": "application/json",
+          "Cookie": "x-auth-token=72d9d4d20a33f87edca7e1ba01ce8db8"
+        },
         body: event.toSensorJson().toString(),
         encoding: Encoding.getByName("utf-8"),
       );
@@ -39,13 +44,8 @@ Future<bool> syncEvents() async {
         debugPrint('Header: ' + response.headers.toString());
         debugPrint('Body: ' + response.body.toString());
         debugPrint('StatusCode: ' + response.statusCode.toString());
-        throw Exception('Failed to login');
+        throw Exception('Failed to put.');
       }
-
-
-
-
-
     }
   }
 
-- 
GitLab