added sent and id column again for add_cam_main
id checks if entry already exists. sent says if the entry is already sent to the db
This commit is contained in:
@@ -9,7 +9,7 @@ abstract interface class IDb {
|
|||||||
|
|
||||||
Future<int> addMainEntry(Map<String, String> excursion);
|
Future<int> addMainEntry(Map<String, String> excursion);
|
||||||
|
|
||||||
Future<void> updateMainEntry(Map<String, String> excursion);
|
Future<int> updateMainEntry(Map<String, String> excursion);
|
||||||
|
|
||||||
Future<void> updateSent(int id);
|
Future<void> updateSent(int id);
|
||||||
|
|
||||||
|
|||||||
@@ -65,10 +65,10 @@ class ExcursionDBHelper implements IDb{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> updateMainEntry(Map<String, String> excursion) async {
|
Future<int> updateMainEntry(Map<String, String> excursion) async {
|
||||||
var excursionDBClient = await dB;
|
var excursionDBClient = await dB;
|
||||||
|
|
||||||
await excursionDBClient
|
return await excursionDBClient
|
||||||
.update('excursion', excursion, where: "ID = ?", whereArgs: [excursion['ID']]);
|
.update('excursion', excursion, where: "ID = ?", whereArgs: [excursion['ID']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,10 +64,10 @@ class PlaceDBHelper implements IDb{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> updateMainEntry(Map<String, String> place) async {
|
Future<int> updateMainEntry(Map<String, String> place) async {
|
||||||
var placeDBClient = await dB;
|
var placeDBClient = await dB;
|
||||||
|
|
||||||
await placeDBClient
|
return await placeDBClient
|
||||||
.update('place', place, where: "ID = ?", whereArgs: [place['ID']]);
|
.update('place', place, where: "ID = ?", whereArgs: [place['ID']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,12 +27,13 @@ class AddCamMain extends StatefulWidget {
|
|||||||
final bool isSent;
|
final bool isSent;
|
||||||
final Map<String, dynamic>? existingData;
|
final Map<String, dynamic>? existingData;
|
||||||
|
|
||||||
const AddCamMain(
|
const AddCamMain({
|
||||||
{super.key,
|
super.key,
|
||||||
this.isTemplate = false,
|
this.isTemplate = false,
|
||||||
this.existingData,
|
this.existingData,
|
||||||
this.isFinished = false,
|
this.isFinished = false,
|
||||||
this.isSent = false});
|
this.isSent = false,
|
||||||
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AddCamMain> createState() => _AddCamMainState();
|
State<AddCamMain> createState() => _AddCamMainState();
|
||||||
@@ -42,7 +43,6 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
// var declaration
|
// var declaration
|
||||||
int currentStep = 0;
|
int currentStep = 0;
|
||||||
|
|
||||||
|
|
||||||
String selectedStatus = 'aktiv';
|
String selectedStatus = 'aktiv';
|
||||||
String selectedFotoFilm = 'Foto';
|
String selectedFotoFilm = 'Foto';
|
||||||
String selectedMEZ = 'Sommerzeit';
|
String selectedMEZ = 'Sommerzeit';
|
||||||
@@ -58,7 +58,8 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
speed: 0.0,
|
speed: 0.0,
|
||||||
speedAccuracy: 0.0,
|
speedAccuracy: 0.0,
|
||||||
altitudeAccuracy: 0.0,
|
altitudeAccuracy: 0.0,
|
||||||
headingAccuracy: 0.0);
|
headingAccuracy: 0.0,
|
||||||
|
);
|
||||||
|
|
||||||
DateTime? abbauDat;
|
DateTime? abbauDat;
|
||||||
DateTime datum = DateTime.now();
|
DateTime datum = DateTime.now();
|
||||||
@@ -66,146 +67,51 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
DateTime? protoAm = DateTime.now();
|
DateTime? protoAm = DateTime.now();
|
||||||
|
|
||||||
Map<String, Map<String, dynamic>> rmap = {
|
Map<String, Map<String, dynamic>> rmap = {
|
||||||
|
"ID": {"controller": TextEditingController(), "required": false},
|
||||||
// Step 1
|
// Step 1
|
||||||
"Standort": {
|
"Standort": {"controller": TextEditingController(), "required": true},
|
||||||
"controller": TextEditingController(),
|
"Status": {"controller": TextEditingController(), "required": true},
|
||||||
"required": true,
|
"Betreuung": {"controller": TextEditingController(), "required": false},
|
||||||
},
|
"CID": {"controller": TextEditingController(), "required": true},
|
||||||
"Status": {
|
"FFTyp": {"controller": TextEditingController(), "required": true},
|
||||||
"controller": TextEditingController(),
|
"MEZ": {"controller": TextEditingController(), "required": true},
|
||||||
"required": true,
|
"KSchloNr": {"controller": TextEditingController(), "required": false},
|
||||||
},
|
"Rudel": {"controller": TextEditingController(), "required": true},
|
||||||
"Betreuung": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"CID": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
"FFTyp": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
"MEZ": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
"KSchloNr": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"Rudel": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
|
|
||||||
// Step 2
|
// Step 2
|
||||||
"DECLNG": {
|
"DECLNG": {"controller": TextEditingController(), "required": false},
|
||||||
"controller": TextEditingController(),
|
"DECLAT": {"controller": TextEditingController(), "required": false},
|
||||||
"required": false,
|
"BLand": {"controller": TextEditingController(), "required": true},
|
||||||
},
|
"Lkr": {"controller": TextEditingController(), "required": true},
|
||||||
"DECLAT": {
|
"BeiOrt": {"controller": TextEditingController(), "required": true},
|
||||||
"controller": TextEditingController(),
|
"OrtInfo": {"controller": TextEditingController(), "required": false},
|
||||||
"required": false,
|
"Platzung": {"controller": TextEditingController(), "required": true},
|
||||||
},
|
|
||||||
"BLand": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
"Lkr": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
"BeiOrt": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
"OrtInfo": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"Platzung": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
|
|
||||||
// Step 3
|
// Step 3
|
||||||
"Datum": {
|
"Datum": {"controller": TextEditingController(), "required": false},
|
||||||
"controller": TextEditingController(),
|
"KontDat": {"controller": TextEditingController(), "required": false},
|
||||||
"required": false,
|
"KTage1": {"controller": TextEditingController(), "required": true},
|
||||||
},
|
"KTage2": {"controller": TextEditingController(), "required": true},
|
||||||
"KontDat": {
|
"AbbauDat": {"controller": TextEditingController(), "required": false},
|
||||||
"controller": TextEditingController(),
|
"Auftrag": {"controller": TextEditingController(), "required": false},
|
||||||
"required": false,
|
"KontAbsp": {"controller": TextEditingController(), "required": false},
|
||||||
},
|
"SonstBem": {"controller": TextEditingController(), "required": false},
|
||||||
"KTage1": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
"KTage2": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": true,
|
|
||||||
},
|
|
||||||
"AbbauDat": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"Auftrag": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"KontAbsp": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"SonstBem": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
|
|
||||||
// Step 4
|
// Step 4
|
||||||
"Adresse1": {
|
"Adresse1": {"controller": TextEditingController(), "required": true},
|
||||||
"controller": TextEditingController(),
|
"Adresse2": {"controller": TextEditingController(), "required": false},
|
||||||
"required": true,
|
"Adresse3": {"controller": TextEditingController(), "required": false},
|
||||||
},
|
"FKontakt1": {"controller": TextEditingController(), "required": false},
|
||||||
"Adresse2": {
|
"FKontakt2": {"controller": TextEditingController(), "required": false},
|
||||||
"controller": TextEditingController(),
|
"FKontakt3": {"controller": TextEditingController(), "required": false},
|
||||||
"required": false,
|
"IntKomm": {"controller": TextEditingController(), "required": false},
|
||||||
},
|
|
||||||
"Adresse3": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"FKontakt1": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"FKontakt2": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"FKontakt3": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
"IntKomm": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
|
|
||||||
// Gone?
|
// Gone?
|
||||||
"ProtoAm": {
|
"ProtoAm": {"controller": TextEditingController(), "required": false},
|
||||||
"controller": TextEditingController(),
|
"FotoFilm": {"controller": TextEditingController(), "required": false},
|
||||||
"required": false,
|
"Sent": {"controller": TextEditingController(), "required": false},
|
||||||
},
|
|
||||||
"FotoFilm": {
|
|
||||||
"controller": TextEditingController(),
|
|
||||||
"required": false,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Map<String, String> getFieldsText() {
|
Map<String, String> getFieldsText() {
|
||||||
Map<String, String> puff = {};
|
Map<String, String> puff = {};
|
||||||
|
|
||||||
@@ -216,7 +122,6 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
return puff;
|
return puff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
// updates the currentPosition var after the _determine position has finished. Means user view updates with his live location
|
// updates the currentPosition var after the _determine position has finished. Means user view updates with his live location
|
||||||
@@ -226,12 +131,16 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
if (error is LocationDisabledException) {
|
if (error is LocationDisabledException) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
SnackBarHelper.showSnackBarMessage(
|
SnackBarHelper.showSnackBarMessage(
|
||||||
context, AppLocalizations.of(context)!.locationDisabled);
|
context,
|
||||||
|
AppLocalizations.of(context)!.locationDisabled,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} else if (error is LocationForbiddenException) {
|
} else if (error is LocationForbiddenException) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
SnackBarHelper.showSnackBarMessage(
|
SnackBarHelper.showSnackBarMessage(
|
||||||
context, AppLocalizations.of(context)!.locationForbidden);
|
context,
|
||||||
|
AppLocalizations.of(context)!.locationForbidden,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return currentPosition;
|
return currentPosition;
|
||||||
@@ -241,13 +150,8 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
rmap["Status"]!["controller"]!.text = selectedStatus;
|
rmap["Status"]!["controller"]!.text = selectedStatus;
|
||||||
|
|
||||||
// If a template is edited this fills in the existing values
|
// If a template is edited this fills in the existing values
|
||||||
var firstRun = true;
|
|
||||||
if (widget.existingData?.isNotEmpty ?? false) {
|
if (widget.existingData?.isNotEmpty ?? false) {
|
||||||
for (var key in widget.existingData!.keys) {
|
for (var key in widget.existingData!.keys) {
|
||||||
if (firstRun) {
|
|
||||||
firstRun = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
rmap[key]!["controller"]!.text =
|
rmap[key]!["controller"]!.text =
|
||||||
widget.existingData?[key].toString() ?? "";
|
widget.existingData?[key].toString() ?? "";
|
||||||
}
|
}
|
||||||
@@ -286,21 +190,17 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 5),
|
||||||
height: 5,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomLeft,
|
alignment: Alignment.bottomLeft,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(AppLocalizations.of(context)!.status),
|
Text(AppLocalizations.of(context)!.status),
|
||||||
const Text(
|
const Text('*', style: TextStyle(color: Colors.red)),
|
||||||
'*',
|
|
||||||
style: TextStyle(color: Colors.red),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
)),
|
),
|
||||||
|
),
|
||||||
Status(
|
Status(
|
||||||
initialStatus: selectedStatus,
|
initialStatus: selectedStatus,
|
||||||
onStatusChanged: (status) {
|
onStatusChanged: (status) {
|
||||||
@@ -317,9 +217,7 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
required: false,
|
required: false,
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 20),
|
||||||
height: 20,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
VarTextField(
|
VarTextField(
|
||||||
textController: rmap["CID"]!["controller"],
|
textController: rmap["CID"]!["controller"],
|
||||||
@@ -336,21 +234,17 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
required: true,
|
required: true,
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 15),
|
||||||
height: 15,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomLeft,
|
alignment: Alignment.bottomLeft,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(AppLocalizations.of(context)!.zeiteinstellung),
|
Text(AppLocalizations.of(context)!.zeiteinstellung),
|
||||||
const Text(
|
const Text('*', style: TextStyle(color: Colors.red)),
|
||||||
'*',
|
|
||||||
style: TextStyle(color: Colors.red),
|
|
||||||
)
|
|
||||||
],
|
],
|
||||||
)),
|
),
|
||||||
|
),
|
||||||
MEZ(
|
MEZ(
|
||||||
initialMEZ: selectedMEZ,
|
initialMEZ: selectedMEZ,
|
||||||
onMEZChanged: (mez) {
|
onMEZChanged: (mez) {
|
||||||
@@ -360,9 +254,7 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 15),
|
||||||
height: 15,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
VarTextField(
|
VarTextField(
|
||||||
textController: rmap["KSchloNr"]!["controller"],
|
textController: rmap["KSchloNr"]!["controller"],
|
||||||
@@ -371,9 +263,7 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
required: false,
|
required: false,
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 5),
|
||||||
height: 5,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
VarTextField(
|
VarTextField(
|
||||||
textController: rmap["Rudel"]!["controller"],
|
textController: rmap["Rudel"]!["controller"],
|
||||||
@@ -382,11 +272,10 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
required: true,
|
required: true,
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 15),
|
||||||
height: 15,
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
)),
|
),
|
||||||
|
),
|
||||||
|
|
||||||
// Second step
|
// Second step
|
||||||
Step(
|
Step(
|
||||||
@@ -401,14 +290,12 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
Text(currentPosition.longitude.toString()),
|
Text(currentPosition.longitude.toString()),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(width: 15),
|
||||||
width: 15,
|
|
||||||
),
|
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
final result = await Navigator.of(context)
|
final result = await Navigator.of(context).push<LatLng>(
|
||||||
.push<LatLng>(
|
MaterialPageRoute(
|
||||||
MaterialPageRoute(builder: (context) {
|
builder: (context) {
|
||||||
return Karte(
|
return Karte(
|
||||||
ortInfoC: rmap["OrtInfo"]!["controller"],
|
ortInfoC: rmap["OrtInfo"]!["controller"],
|
||||||
beiOrtC: rmap["BeiOrt"]!["controller"],
|
beiOrtC: rmap["BeiOrt"]!["controller"],
|
||||||
@@ -416,7 +303,9 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
decLatC: rmap["DECLAT"]!["controller"],
|
decLatC: rmap["DECLAT"]!["controller"],
|
||||||
decLngC: rmap["DECLNG"]!["controller"],
|
decLngC: rmap["DECLNG"]!["controller"],
|
||||||
);
|
);
|
||||||
}));
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
setState(() {
|
setState(() {
|
||||||
currentPosition = Position(
|
currentPosition = Position(
|
||||||
@@ -434,7 +323,8 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: Text(AppLocalizations.of(context)!.openMap)),
|
child: Text(AppLocalizations.of(context)!.openMap),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
// --------------------
|
// --------------------
|
||||||
@@ -470,21 +360,17 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
required: false,
|
required: false,
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 15),
|
||||||
height: 15,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomLeft,
|
alignment: Alignment.bottomLeft,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(AppLocalizations.of(context)!.platzung),
|
Text(AppLocalizations.of(context)!.platzung),
|
||||||
const Text(
|
const Text('*', style: TextStyle(color: Colors.red)),
|
||||||
'*',
|
|
||||||
style: TextStyle(color: Colors.red),
|
|
||||||
)
|
|
||||||
],
|
],
|
||||||
)),
|
),
|
||||||
|
),
|
||||||
Platzung(
|
Platzung(
|
||||||
initialPlatzung: selectedPlatzung,
|
initialPlatzung: selectedPlatzung,
|
||||||
onPlatzungChanged: (platzung) {
|
onPlatzungChanged: (platzung) {
|
||||||
@@ -495,7 +381,8 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)),
|
),
|
||||||
|
),
|
||||||
// Third step
|
// Third step
|
||||||
Step(
|
Step(
|
||||||
title: Text(AppLocalizations.of(context)!.thirdstep),
|
title: Text(AppLocalizations.of(context)!.thirdstep),
|
||||||
@@ -521,29 +408,21 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 20),
|
||||||
height: 20,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomLeft,
|
alignment: Alignment.bottomLeft,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(AppLocalizations.of(context)!.ktage),
|
Text(AppLocalizations.of(context)!.ktage),
|
||||||
const Text(
|
const Text('*', style: TextStyle(color: Colors.red)),
|
||||||
'*',
|
|
||||||
style: TextStyle(color: Colors.red),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(child: Text(AppLocalizations.of(context)!.ktage1)),
|
||||||
child: Text(AppLocalizations.of(context)!.ktage1)),
|
const SizedBox(width: 15),
|
||||||
const SizedBox(
|
|
||||||
width: 15,
|
|
||||||
),
|
|
||||||
Expanded(
|
Expanded(
|
||||||
flex: 4,
|
flex: 4,
|
||||||
child: VarTextField(
|
child: VarTextField(
|
||||||
@@ -553,16 +432,14 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
dbName: "KTage1",
|
dbName: "KTage1",
|
||||||
required: true,
|
required: true,
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
))
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(child: Text(AppLocalizations.of(context)!.ktage2)),
|
||||||
child: Text(AppLocalizations.of(context)!.ktage2)),
|
const SizedBox(width: 15),
|
||||||
const SizedBox(
|
|
||||||
width: 15,
|
|
||||||
),
|
|
||||||
Expanded(
|
Expanded(
|
||||||
flex: 4,
|
flex: 4,
|
||||||
child: VarTextField(
|
child: VarTextField(
|
||||||
@@ -572,12 +449,11 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
dbName: "KTage2",
|
dbName: "KTage2",
|
||||||
required: true,
|
required: true,
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
))
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 20),
|
||||||
height: 20,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
@@ -591,9 +467,7 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 20),
|
||||||
height: 20,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
VarTextField(
|
VarTextField(
|
||||||
textController: rmap["Auftrag"]!["controller"]!,
|
textController: rmap["Auftrag"]!["controller"]!,
|
||||||
@@ -613,13 +487,14 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
// --------------------
|
// --------------------
|
||||||
VarTextField(
|
VarTextField(
|
||||||
textController: rmap["SonstBem"]!["controller"]!,
|
textController: rmap["SonstBem"]!["controller"]!,
|
||||||
localization:
|
localization: AppLocalizations.of(context)!.sonstbemerkungen,
|
||||||
AppLocalizations.of(context)!.sonstbemerkungen,
|
|
||||||
dbName: "SonstBem",
|
dbName: "SonstBem",
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
required: false),
|
required: false,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
)),
|
),
|
||||||
|
),
|
||||||
// Fourth step
|
// Fourth step
|
||||||
Step(
|
Step(
|
||||||
title: Text(AppLocalizations.of(context)!.fourthstep),
|
title: Text(AppLocalizations.of(context)!.fourthstep),
|
||||||
@@ -649,9 +524,7 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
required: false,
|
required: false,
|
||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(height: 15),
|
||||||
height: 15,
|
|
||||||
),
|
|
||||||
// --------------------
|
// --------------------
|
||||||
VarTextField(
|
VarTextField(
|
||||||
textController: rmap["FKontakt1"]!["controller"]!,
|
textController: rmap["FKontakt1"]!["controller"]!,
|
||||||
@@ -685,7 +558,8 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
dbDesignation: DatabasesEnum.place,
|
dbDesignation: DatabasesEnum.place,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
))
|
),
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
// Here the site is built with the steps from above
|
// Here the site is built with the steps from above
|
||||||
@@ -693,8 +567,11 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
appBar: AppBar(title: Text(AppLocalizations.of(context)!.addplace)),
|
appBar: AppBar(title: Text(AppLocalizations.of(context)!.addplace)),
|
||||||
body: PageTransitionSwitcher(
|
body: PageTransitionSwitcher(
|
||||||
duration: const Duration(milliseconds: 800),
|
duration: const Duration(milliseconds: 800),
|
||||||
transitionBuilder: (Widget child, Animation<double> animation,
|
transitionBuilder: (
|
||||||
Animation<double> secondaryAnimation) {
|
Widget child,
|
||||||
|
Animation<double> animation,
|
||||||
|
Animation<double> secondaryAnimation,
|
||||||
|
) {
|
||||||
return SharedAxisTransition(
|
return SharedAxisTransition(
|
||||||
animation: animation,
|
animation: animation,
|
||||||
secondaryAnimation: secondaryAnimation,
|
secondaryAnimation: secondaryAnimation,
|
||||||
@@ -719,7 +596,10 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
|
|
||||||
if (!isLastStep) {
|
if (!isLastStep) {
|
||||||
saveTemplate(
|
saveTemplate(
|
||||||
getFieldsText(), DatabasesEnum.place, widget.isTemplate);
|
getFieldsText(),
|
||||||
|
DatabasesEnum.place,
|
||||||
|
widget.isTemplate,
|
||||||
|
);
|
||||||
setState(() {
|
setState(() {
|
||||||
currentStep += 1;
|
currentStep += 1;
|
||||||
});
|
});
|
||||||
@@ -728,19 +608,31 @@ class _AddCamMainState extends State<AddCamMain> {
|
|||||||
|
|
||||||
if (widget.isSent) {
|
if (widget.isSent) {
|
||||||
Navigator.pushNamedAndRemoveUntil(
|
Navigator.pushNamedAndRemoveUntil(
|
||||||
context, '/home', (route) => false);
|
context,
|
||||||
|
'/home',
|
||||||
|
(route) => false,
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool empty = CheckRequired.checkRequired(rmap);
|
bool empty = CheckRequired.checkRequired(rmap);
|
||||||
|
// TODO for debugging always true
|
||||||
|
empty = false;
|
||||||
|
|
||||||
if (empty == true) {
|
if (empty == true) {
|
||||||
AddEntriesDialogHelper.showTemplateDialog(context, getFieldsText(),
|
AddEntriesDialogHelper.showTemplateDialog(
|
||||||
widget.existingData?.isNotEmpty ?? false);
|
context,
|
||||||
|
getFieldsText(),
|
||||||
|
widget.existingData?.isNotEmpty ?? false,
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
} else if (empty == false) {
|
} else if (empty == false) {
|
||||||
await AddEntriesDialogHelper.showSaveOptionsDialog(
|
await AddEntriesDialogHelper.showSaveOptionsDialog(
|
||||||
context, getFieldsText(), widget.isTemplate);
|
context,
|
||||||
|
getFieldsText(),
|
||||||
|
widget.isTemplate,
|
||||||
|
DatabasesEnum.place,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -360,6 +360,7 @@ class _ExcursionMainState extends State<ExcursionMain> {
|
|||||||
context,
|
context,
|
||||||
getFieldsText(),
|
getFieldsText(),
|
||||||
false,
|
false,
|
||||||
|
DatabasesEnum.excursion
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:fforte/screens/sharedMethods/save_main_entry.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:fforte/l10n/app_localizations.dart';
|
import 'package:fforte/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class DialogHelper {
|
class AddEntriesDialogHelper {
|
||||||
// Function to show the dialog where the user has to choose if he want to safe his values as a template
|
// Function to show the dialog where the user has to choose if he want to safe his values as a template
|
||||||
static Future<void> showTemplateDialog(BuildContext context,
|
static Future<void> showTemplateDialog(BuildContext context,
|
||||||
Map<String, String> saveData, bool update) async {
|
Map<String, String> saveData, bool update) async {
|
||||||
@@ -36,7 +36,7 @@ class DialogHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Future<dynamic> showServerErrorDialog(
|
static Future<dynamic> showServerErrorDialog(
|
||||||
BuildContext context, Map<String, String> saveData, bool isTemplate) {
|
BuildContext context, Map<String, String> saveData, bool isTemplate, DatabasesEnum dbType) {
|
||||||
bool isLoading = false;
|
bool isLoading = false;
|
||||||
|
|
||||||
return showDialog(
|
return showDialog(
|
||||||
@@ -62,12 +62,12 @@ class DialogHelper {
|
|||||||
|
|
||||||
if (errorCode != 201 && context.mounted) {
|
if (errorCode != 201 && context.mounted) {
|
||||||
showServerErrorDialog(
|
showServerErrorDialog(
|
||||||
context, saveData, isTemplate);
|
context, saveData, isTemplate, dbType);
|
||||||
} else {
|
} else {
|
||||||
if (context.mounted) Navigator.pop(context);
|
if (context.mounted) Navigator.pop(context);
|
||||||
// saveData(true);
|
// saveData(true);
|
||||||
SaveMainEntryMethod.saveEntry(
|
SaveMainEntryMethod.saveEntry(
|
||||||
entryData: saveData, isTemplate: isTemplate);
|
entryData: saveData, isTemplate: isTemplate, dbType: dbType);
|
||||||
if (context.mounted) showSuccessDialog(context);
|
if (context.mounted) showSuccessDialog(context);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -86,7 +86,7 @@ class DialogHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Future<void> showSaveOptionsDialog(BuildContext context,
|
static Future<void> showSaveOptionsDialog(BuildContext context,
|
||||||
Map<String, String> saveData, bool isTemplate) async {
|
Map<String, String> saveData, bool isTemplate, DatabasesEnum dbType) async {
|
||||||
bool isLoading = false;
|
bool isLoading = false;
|
||||||
|
|
||||||
return showDialog(
|
return showDialog(
|
||||||
@@ -126,15 +126,16 @@ class DialogHelper {
|
|||||||
|
|
||||||
if (errorCode != 201 || !context.mounted) {
|
if (errorCode != 201 || !context.mounted) {
|
||||||
SaveMainEntryMethod.saveEntry(
|
SaveMainEntryMethod.saveEntry(
|
||||||
entryData: saveData, isTemplate: isTemplate);
|
entryData: saveData, isTemplate: isTemplate, dbType: dbType);
|
||||||
if (context.mounted) {
|
if (context.mounted) {
|
||||||
DialogHelper.showServerErrorDialog(
|
AddEntriesDialogHelper.showServerErrorDialog(
|
||||||
context, saveData, isTemplate);
|
context, saveData, isTemplate, dbType);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
SaveMainEntryMethod.saveEntry(
|
SaveMainEntryMethod.saveEntry(
|
||||||
entryData: saveData,
|
entryData: saveData,
|
||||||
isTemplate: isTemplate,
|
isTemplate: isTemplate,
|
||||||
|
dbType: dbType,
|
||||||
sent: true);
|
sent: true);
|
||||||
showSuccessDialog(context);
|
showSuccessDialog(context);
|
||||||
}
|
}
|
||||||
@@ -148,7 +149,7 @@ class DialogHelper {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
SaveMainEntryMethod.saveEntry(
|
SaveMainEntryMethod.saveEntry(
|
||||||
entryData: saveData, isTemplate: isTemplate);
|
entryData: saveData, isTemplate: isTemplate, dbType: dbType);
|
||||||
SaveFileMethod.saveFile(
|
SaveFileMethod.saveFile(
|
||||||
saveData,
|
saveData,
|
||||||
AppLocalizations.of(context)!.savefilefailed,
|
AppLocalizations.of(context)!.savefilefailed,
|
||||||
@@ -165,7 +166,7 @@ class DialogHelper {
|
|||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
SaveMainEntryMethod.saveEntry(
|
SaveMainEntryMethod.saveEntry(
|
||||||
entryData: saveData, isTemplate: isTemplate);
|
entryData: saveData, isTemplate: isTemplate, dbType: dbType);
|
||||||
Navigator.pushNamedAndRemoveUntil(
|
Navigator.pushNamedAndRemoveUntil(
|
||||||
context, '/home', (route) => false);
|
context, '/home', (route) => false);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,21 +1,38 @@
|
|||||||
|
import 'package:fforte/enums/databases.dart';
|
||||||
|
import 'package:fforte/interfaces/i_db.dart';
|
||||||
|
import 'package:fforte/methods/excursion_db_helper.dart';
|
||||||
import 'package:fforte/methods/place_db_helper.dart';
|
import 'package:fforte/methods/place_db_helper.dart';
|
||||||
|
|
||||||
class SaveMainEntryMethod {
|
class SaveMainEntryMethod {
|
||||||
static void saveEntry(
|
static void saveEntry({
|
||||||
{required Map<String, String> entryData,
|
required Map<String, String> entryData,
|
||||||
required bool isTemplate,
|
required bool isTemplate,
|
||||||
bool sent = false}) async {
|
required DatabasesEnum dbType,
|
||||||
var placeDB = PlaceDBHelper();
|
bool sent = false,
|
||||||
|
}) async {
|
||||||
|
|
||||||
|
IDb? placeDB;
|
||||||
|
|
||||||
|
if (dbType == DatabasesEnum.place) {
|
||||||
|
placeDB = PlaceDBHelper();
|
||||||
|
} else if (dbType == DatabasesEnum.excursion) {
|
||||||
|
placeDB = ExcursionDBHelper();
|
||||||
|
}
|
||||||
|
|
||||||
|
int entryId;
|
||||||
|
|
||||||
// Get the ID of the newly added or updated place
|
// Get the ID of the newly added or updated place
|
||||||
int newPlaceId = await placeDB.addMainEntry(entryData);
|
if (entryData["ID"] == "") {
|
||||||
|
entryData.remove("ID");
|
||||||
|
entryId = await placeDB!.addMainEntry(entryData);
|
||||||
|
} else {
|
||||||
|
entryId = await placeDB!.updateMainEntry(entryData);
|
||||||
|
}
|
||||||
|
|
||||||
if (sent == true) {
|
if (sent == true) {
|
||||||
placeDB.updateSent(newPlaceId); // Update 'Sent' using the correct ID
|
placeDB.updateSent(entryId); // Update 'Sent' using the correct ID
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isTemplate) {
|
|
||||||
await placeDB.deleteTemplateById(entryData["CID"]!);
|
await placeDB.deleteTemplateById(entryData["CID"]!);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user