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