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:
Nico
2025-05-12 18:18:36 +02:00
parent a5769a7dc0
commit ecafe2df02
7 changed files with 518 additions and 607 deletions

View File

@@ -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);

View File

@@ -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']]);
} }

View File

@@ -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']]);
} }

View File

@@ -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,
);
} }
} }
}, },

View File

@@ -360,6 +360,7 @@ class _ExcursionMainState extends State<ExcursionMain> {
context, context,
getFieldsText(), getFieldsText(),
false, false,
DatabasesEnum.excursion
); );
} }
} }

View File

@@ -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);
}, },

View File

@@ -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 {
// Get the ID of the newly added or updated place IDb? placeDB;
int newPlaceId = await placeDB.addMainEntry(entryData);
if (sent == true) { if (dbType == DatabasesEnum.place) {
placeDB.updateSent(newPlaceId); // Update 'Sent' using the correct ID placeDB = PlaceDBHelper();
} else if (dbType == DatabasesEnum.excursion) {
placeDB = ExcursionDBHelper();
}
int entryId;
// Get the ID of the newly added or updated place
if (entryData["ID"] == "") {
entryData.remove("ID");
entryId = await placeDB!.addMainEntry(entryData);
} else {
entryId = await placeDB!.updateMainEntry(entryData);
}
if (sent == true) {
placeDB.updateSent(entryId); // Update 'Sent' using the correct ID
} }
if (isTemplate) {
await placeDB.deleteTemplateById(entryData["CID"]!); await placeDB.deleteTemplateById(entryData["CID"]!);
} }
} }
}