diff --git a/lib/interfaces/i_db.dart b/lib/interfaces/i_db.dart index 385b37e..1dff8d1 100644 --- a/lib/interfaces/i_db.dart +++ b/lib/interfaces/i_db.dart @@ -9,7 +9,7 @@ abstract interface class IDb { Future addMainEntry(Map excursion); - Future updateMainEntry(Map excursion); + Future updateMainEntry(Map excursion); Future updateSent(int id); diff --git a/lib/methods/excursion_db_helper.dart b/lib/methods/excursion_db_helper.dart index e04ccf3..33ad395 100644 --- a/lib/methods/excursion_db_helper.dart +++ b/lib/methods/excursion_db_helper.dart @@ -65,10 +65,10 @@ class ExcursionDBHelper implements IDb{ } @override - Future updateMainEntry(Map excursion) async { + Future updateMainEntry(Map excursion) async { var excursionDBClient = await dB; - await excursionDBClient + return await excursionDBClient .update('excursion', excursion, where: "ID = ?", whereArgs: [excursion['ID']]); } diff --git a/lib/methods/place_db_helper.dart b/lib/methods/place_db_helper.dart index 198a7a3..c14d5dd 100644 --- a/lib/methods/place_db_helper.dart +++ b/lib/methods/place_db_helper.dart @@ -64,10 +64,10 @@ class PlaceDBHelper implements IDb{ } @override - Future updateMainEntry(Map place) async { + Future updateMainEntry(Map place) async { var placeDBClient = await dB; - await placeDBClient + return await placeDBClient .update('place', place, where: "ID = ?", whereArgs: [place['ID']]); } diff --git a/lib/screens/addCam/add_cam_main.dart b/lib/screens/addCam/add_cam_main.dart index 00a36c5..955166a 100644 --- a/lib/screens/addCam/add_cam_main.dart +++ b/lib/screens/addCam/add_cam_main.dart @@ -27,12 +27,13 @@ class AddCamMain extends StatefulWidget { final bool isSent; final Map? existingData; - const AddCamMain( - {super.key, - this.isTemplate = false, - this.existingData, - this.isFinished = false, - this.isSent = false}); + const AddCamMain({ + super.key, + this.isTemplate = false, + this.existingData, + this.isFinished = false, + this.isSent = false, + }); @override State createState() => _AddCamMainState(); @@ -42,23 +43,23 @@ class _AddCamMainState extends State { // var declaration int currentStep = 0; - String selectedStatus = 'aktiv'; String selectedFotoFilm = 'Foto'; String selectedMEZ = 'Sommerzeit'; String selectedPlatzung = ''; Position currentPosition = Position( - longitude: 10.0, - latitude: 51.0, - timestamp: DateTime.now(), - accuracy: 0.0, - altitude: 0.0, - heading: 0.0, - speed: 0.0, - speedAccuracy: 0.0, - altitudeAccuracy: 0.0, - headingAccuracy: 0.0); + longitude: 10.0, + latitude: 51.0, + timestamp: DateTime.now(), + accuracy: 0.0, + altitude: 0.0, + heading: 0.0, + speed: 0.0, + speedAccuracy: 0.0, + altitudeAccuracy: 0.0, + headingAccuracy: 0.0, + ); DateTime? abbauDat; DateTime datum = DateTime.now(); @@ -66,146 +67,51 @@ class _AddCamMainState extends State { DateTime? protoAm = DateTime.now(); Map> 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 getFieldsText() { Map puff = {}; @@ -216,38 +122,36 @@ class _AddCamMainState extends State { return puff; } - @override void initState() { // updates the currentPosition var after the _determine position has finished. Means user view updates with his live location GeolocatorService.deteterminePosition() .then((result) => currentPosition = result) .catchError((error) { - if (error is LocationDisabledException) { - if (mounted) { - SnackBarHelper.showSnackBarMessage( - context, AppLocalizations.of(context)!.locationDisabled); - } - } else if (error is LocationForbiddenException) { - if (mounted) { - SnackBarHelper.showSnackBarMessage( - context, AppLocalizations.of(context)!.locationForbidden); - } - } - return currentPosition; - }); + if (error is LocationDisabledException) { + if (mounted) { + SnackBarHelper.showSnackBarMessage( + context, + AppLocalizations.of(context)!.locationDisabled, + ); + } + } else if (error is LocationForbiddenException) { + if (mounted) { + SnackBarHelper.showSnackBarMessage( + context, + AppLocalizations.of(context)!.locationForbidden, + ); + } + } + return currentPosition; + }); // select initial werte rmap["MEZ"]!["controller"]!.text = selectedMEZ; 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() ?? ""; } @@ -270,431 +174,404 @@ class _AddCamMainState extends State { Widget build(BuildContext context) { // List with the steps. The steps itself will be "shown" later List getSteps() => [ - // First step - Step( - title: Text(AppLocalizations.of(context)!.firststep), - content: Column( + // First step + Step( + title: Text(AppLocalizations.of(context)!.firststep), + content: Column( + children: [ + Align( + alignment: Alignment.bottomLeft, + child: VarTextField( + required: true, + dbName: "Standort", + textController: rmap["Standort"]!["controller"]!, + // textController: betreuungC, + localization: AppLocalizations.of(context)!.altstort, + dbDesignation: DatabasesEnum.place, + ), + ), + const SizedBox(height: 5), + // -------------------- + Align( + alignment: Alignment.bottomLeft, + child: Row( children: [ - Align( - alignment: Alignment.bottomLeft, - child: VarTextField( - required: true, - dbName: "Standort", - textController: rmap["Standort"]!["controller"]!, - // textController: betreuungC, - localization: AppLocalizations.of(context)!.altstort, - dbDesignation: DatabasesEnum.place, - ), - ), - const SizedBox( - height: 5, - ), - // -------------------- - Align( - alignment: Alignment.bottomLeft, - child: Row( - children: [ - Text(AppLocalizations.of(context)!.status), - const Text( - '*', - style: TextStyle(color: Colors.red), - ), - ], - )), - Status( - initialStatus: selectedStatus, - onStatusChanged: (status) { - setState(() { - rmap["Status"]!["controller"]!.text = status; - }); - }, - ), - // -------------------- - VarTextField( - textController: rmap["Betreuung"]!["controller"]!, - localization: AppLocalizations.of(context)!.betreuung, - dbName: "Betreuung", - required: false, - dbDesignation: DatabasesEnum.place, - ), - const SizedBox( - height: 20, - ), - // -------------------- - VarTextField( - textController: rmap["CID"]!["controller"], - localization: AppLocalizations.of(context)!.camLink, - dbName: "CID", - required: true, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["FFTyp"]!["controller"], - localization: AppLocalizations.of(context)!.fftyp, - dbName: "FFTyp", - required: true, - dbDesignation: DatabasesEnum.place, - ), - const SizedBox( - height: 15, - ), - // -------------------- - Align( - alignment: Alignment.bottomLeft, - child: Row( - children: [ - Text(AppLocalizations.of(context)!.zeiteinstellung), - const Text( - '*', - style: TextStyle(color: Colors.red), - ) - ], - )), - MEZ( - initialMEZ: selectedMEZ, - onMEZChanged: (mez) { - setState(() { - selectedMEZ = mez; - rmap["MEZ"]!["controller"]!.text = mez; - }); - }, - ), - const SizedBox( - height: 15, - ), - // -------------------- - VarTextField( - textController: rmap["KSchloNr"]!["controller"], - localization: AppLocalizations.of(context)!.kschlonr, - dbName: "KSchloNr", - required: false, - dbDesignation: DatabasesEnum.place, - ), - const SizedBox( - height: 5, - ), - // -------------------- - VarTextField( - textController: rmap["Rudel"]!["controller"], - localization: AppLocalizations.of(context)!.rudel, - dbName: "Rudel", - required: true, - dbDesignation: DatabasesEnum.place, - ), - const SizedBox( - height: 15, - ), + Text(AppLocalizations.of(context)!.status), + const Text('*', style: TextStyle(color: Colors.red)), ], - )), + ), + ), + Status( + initialStatus: selectedStatus, + onStatusChanged: (status) { + setState(() { + rmap["Status"]!["controller"]!.text = status; + }); + }, + ), + // -------------------- + VarTextField( + textController: rmap["Betreuung"]!["controller"]!, + localization: AppLocalizations.of(context)!.betreuung, + dbName: "Betreuung", + required: false, + dbDesignation: DatabasesEnum.place, + ), + const SizedBox(height: 20), + // -------------------- + VarTextField( + textController: rmap["CID"]!["controller"], + localization: AppLocalizations.of(context)!.camLink, + dbName: "CID", + required: true, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["FFTyp"]!["controller"], + localization: AppLocalizations.of(context)!.fftyp, + dbName: "FFTyp", + required: true, + dbDesignation: DatabasesEnum.place, + ), + const SizedBox(height: 15), + // -------------------- + Align( + alignment: Alignment.bottomLeft, + child: Row( + children: [ + Text(AppLocalizations.of(context)!.zeiteinstellung), + const Text('*', style: TextStyle(color: Colors.red)), + ], + ), + ), + MEZ( + initialMEZ: selectedMEZ, + onMEZChanged: (mez) { + setState(() { + selectedMEZ = mez; + rmap["MEZ"]!["controller"]!.text = mez; + }); + }, + ), + const SizedBox(height: 15), + // -------------------- + VarTextField( + textController: rmap["KSchloNr"]!["controller"], + localization: AppLocalizations.of(context)!.kschlonr, + dbName: "KSchloNr", + required: false, + dbDesignation: DatabasesEnum.place, + ), + const SizedBox(height: 5), + // -------------------- + VarTextField( + textController: rmap["Rudel"]!["controller"], + localization: AppLocalizations.of(context)!.rudel, + dbName: "Rudel", + required: true, + dbDesignation: DatabasesEnum.place, + ), + const SizedBox(height: 15), + ], + ), + ), - // Second step - Step( - title: Text(AppLocalizations.of(context)!.secondstep), - content: Column( - children: [ - Row( - children: [ - Column( - children: [ - Text(currentPosition.latitude.toString()), - Text(currentPosition.longitude.toString()), - ], - ), - const SizedBox( - width: 15, - ), - ElevatedButton( - onPressed: () async { - final result = await Navigator.of(context) - .push( - MaterialPageRoute(builder: (context) { - return Karte( - ortInfoC: rmap["OrtInfo"]!["controller"], - beiOrtC: rmap["BeiOrt"]!["controller"], - currentPosition: currentPosition, - decLatC: rmap["DECLAT"]!["controller"], - decLngC: rmap["DECLNG"]!["controller"], - ); - })); - if (result != null) { - setState(() { - currentPosition = Position( - latitude: result.latitude, - longitude: result.longitude, - timestamp: DateTime.now(), - accuracy: 0.0, - altitude: 0.0, - altitudeAccuracy: 0.0, - heading: 0.0, - headingAccuracy: 0.0, - speed: 0.0, - speedAccuracy: 0.0, - ); - }); - } - }, - child: Text(AppLocalizations.of(context)!.openMap)), - ], - ), - // -------------------- - VarTextField( - textController: rmap["BLand"]!["controller"]!, - localization: AppLocalizations.of(context)!.bland, - dbName: "BLand", - required: true, - dbDesignation: DatabasesEnum.place, - defaultValue: "bLand", - ), - // -------------------- - VarTextField( - textController: rmap["Lkr"]!["controller"]!, - localization: AppLocalizations.of(context)!.lkr, - dbName: "Lkr", - required: true, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["BeiOrt"]!["controller"]!, - localization: AppLocalizations.of(context)!.beiort, - dbName: "BeiOrt", - required: true, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["OrtInfo"]!["controller"]!, - localization: AppLocalizations.of(context)!.ortinfo, - dbName: "OrtInfo", - required: false, - dbDesignation: DatabasesEnum.place, - ), - const SizedBox( - height: 15, - ), - // -------------------- - Align( - alignment: Alignment.bottomLeft, - child: Row( - children: [ - Text(AppLocalizations.of(context)!.platzung), - const Text( - '*', - style: TextStyle(color: Colors.red), - ) - ], - )), - Platzung( - initialPlatzung: selectedPlatzung, - onPlatzungChanged: (platzung) { - setState(() { - selectedPlatzung = platzung; - rmap["Platzung"]!["controller"]!.text = platzung; - }); - }, - ), - ], - )), - // Third step - Step( - title: Text(AppLocalizations.of(context)!.thirdstep), - content: Column( - children: [ - Datum( - initDatum: datum, - onDateChanged: (value) { - datum = value; - rmap["Datum"]!["controller"]!.text = - value.toString().split(" ").first; - }, - name: AppLocalizations.of(context)!.pickDate, - ), - // -------------------- - KontDat( - initKontDat: kontDat, - onDateChanged: (value) { - setState(() { - kontDat = value; - rmap["KontDat"]!["controller"]!.text = - value.toString().split(" ").first; - }); - }, - ), - const SizedBox( - height: 20, - ), - // -------------------- - Align( - alignment: Alignment.bottomLeft, - child: Row( - children: [ - Text(AppLocalizations.of(context)!.ktage), - const Text( - '*', - style: TextStyle(color: Colors.red), - ), - ], - ), - ), - Row( - children: [ - Expanded( - child: Text(AppLocalizations.of(context)!.ktage1)), - const SizedBox( - width: 15, - ), - Expanded( - flex: 4, - child: VarTextField( - otherDefault: "24", - textController: rmap["KTage1"]!["controller"]!, - localization: AppLocalizations.of(context)!.ktage1, - dbName: "KTage1", - required: true, - dbDesignation: DatabasesEnum.place, - )) - ], - ), - Row( - children: [ - Expanded( - child: Text(AppLocalizations.of(context)!.ktage2)), - const SizedBox( - width: 15, - ), - Expanded( - flex: 4, - child: VarTextField( - otherDefault: "48", - textController: rmap["KTage2"]!["controller"]!, - localization: AppLocalizations.of(context)!.ktage2, - dbName: "KTage2", - required: true, - dbDesignation: DatabasesEnum.place, - )) - ], - ), - const SizedBox( - height: 20, - ), - // -------------------- - Row( - children: [ - AbbauDat( - initAbbauDat: abbauDat, - onDateChanged: (value) { - abbauDat = value; - rmap["AbbauDat"]!["controller"]!.text = - value.toString().split(" ").first; + // Second step + Step( + title: Text(AppLocalizations.of(context)!.secondstep), + content: Column( + children: [ + Row( + children: [ + Column( + children: [ + Text(currentPosition.latitude.toString()), + Text(currentPosition.longitude.toString()), + ], + ), + const SizedBox(width: 15), + ElevatedButton( + onPressed: () async { + final result = await Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return Karte( + ortInfoC: rmap["OrtInfo"]!["controller"], + beiOrtC: rmap["BeiOrt"]!["controller"], + currentPosition: currentPosition, + decLatC: rmap["DECLAT"]!["controller"], + decLngC: rmap["DECLNG"]!["controller"], + ); }, ), - ], - ), - const SizedBox( - height: 20, - ), - // -------------------- - VarTextField( - textController: rmap["Auftrag"]!["controller"]!, - localization: AppLocalizations.of(context)!.auftrag, - dbName: "Auftrag", - required: false, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["KontAbsp"]!["controller"]!, - localization: AppLocalizations.of(context)!.kontabsp, - dbName: "KontAbsp", - required: false, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["SonstBem"]!["controller"]!, - localization: - AppLocalizations.of(context)!.sonstbemerkungen, - dbName: "SonstBem", - dbDesignation: DatabasesEnum.place, - required: false), - ], - )), - // Fourth step - Step( - title: Text(AppLocalizations.of(context)!.fourthstep), - content: Column( + ); + if (result != null) { + setState(() { + currentPosition = Position( + latitude: result.latitude, + longitude: result.longitude, + timestamp: DateTime.now(), + accuracy: 0.0, + altitude: 0.0, + altitudeAccuracy: 0.0, + heading: 0.0, + headingAccuracy: 0.0, + speed: 0.0, + speedAccuracy: 0.0, + ); + }); + } + }, + child: Text(AppLocalizations.of(context)!.openMap), + ), + ], + ), + // -------------------- + VarTextField( + textController: rmap["BLand"]!["controller"]!, + localization: AppLocalizations.of(context)!.bland, + dbName: "BLand", + required: true, + dbDesignation: DatabasesEnum.place, + defaultValue: "bLand", + ), + // -------------------- + VarTextField( + textController: rmap["Lkr"]!["controller"]!, + localization: AppLocalizations.of(context)!.lkr, + dbName: "Lkr", + required: true, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["BeiOrt"]!["controller"]!, + localization: AppLocalizations.of(context)!.beiort, + dbName: "BeiOrt", + required: true, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["OrtInfo"]!["controller"]!, + localization: AppLocalizations.of(context)!.ortinfo, + dbName: "OrtInfo", + required: false, + dbDesignation: DatabasesEnum.place, + ), + const SizedBox(height: 15), + // -------------------- + Align( + alignment: Alignment.bottomLeft, + child: Row( children: [ - VarTextField( - textController: rmap["Adresse1"]!["controller"]!, - localization: AppLocalizations.of(context)!.adresse1, - dbName: "Adresse1", - dbDesignation: DatabasesEnum.place, - required: true, - defaultValue: "addresse1", - ), - // -------------------- - VarTextField( - textController: rmap["Adresse2"]!["controller"]!, - localization: AppLocalizations.of(context)!.adresse2, - dbName: "Adresse2", - required: false, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["Adresse3"]!["controller"]!, - localization: AppLocalizations.of(context)!.adresse3, - dbName: "Adresse3", - required: false, - dbDesignation: DatabasesEnum.place, - ), - const SizedBox( - height: 15, - ), - // -------------------- - VarTextField( - textController: rmap["FKontakt1"]!["controller"]!, - localization: AppLocalizations.of(context)!.fkontakt1, - dbName: "FKontakt1", - required: false, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["FKontakt2"]!["controller"]!, - localization: AppLocalizations.of(context)!.fkontakt2, - dbName: "FKontakt2", - required: false, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["FKontakt3"]!["controller"]!, - localization: AppLocalizations.of(context)!.fkontakt3, - dbName: "FKontakt3", - required: false, - dbDesignation: DatabasesEnum.place, - ), - // -------------------- - VarTextField( - textController: rmap["IntKomm"]!["controller"]!, - localization: AppLocalizations.of(context)!.intkomm, - dbName: "IntKomm", - required: false, - dbDesignation: DatabasesEnum.place, - ), + Text(AppLocalizations.of(context)!.platzung), + const Text('*', style: TextStyle(color: Colors.red)), ], - )) - ]; + ), + ), + Platzung( + initialPlatzung: selectedPlatzung, + onPlatzungChanged: (platzung) { + setState(() { + selectedPlatzung = platzung; + rmap["Platzung"]!["controller"]!.text = platzung; + }); + }, + ), + ], + ), + ), + // Third step + Step( + title: Text(AppLocalizations.of(context)!.thirdstep), + content: Column( + children: [ + Datum( + initDatum: datum, + onDateChanged: (value) { + datum = value; + rmap["Datum"]!["controller"]!.text = + value.toString().split(" ").first; + }, + name: AppLocalizations.of(context)!.pickDate, + ), + // -------------------- + KontDat( + initKontDat: kontDat, + onDateChanged: (value) { + setState(() { + kontDat = value; + rmap["KontDat"]!["controller"]!.text = + value.toString().split(" ").first; + }); + }, + ), + const SizedBox(height: 20), + // -------------------- + Align( + alignment: Alignment.bottomLeft, + child: Row( + children: [ + Text(AppLocalizations.of(context)!.ktage), + const Text('*', style: TextStyle(color: Colors.red)), + ], + ), + ), + Row( + children: [ + Expanded(child: Text(AppLocalizations.of(context)!.ktage1)), + const SizedBox(width: 15), + Expanded( + flex: 4, + child: VarTextField( + otherDefault: "24", + textController: rmap["KTage1"]!["controller"]!, + localization: AppLocalizations.of(context)!.ktage1, + dbName: "KTage1", + required: true, + dbDesignation: DatabasesEnum.place, + ), + ), + ], + ), + Row( + children: [ + Expanded(child: Text(AppLocalizations.of(context)!.ktage2)), + const SizedBox(width: 15), + Expanded( + flex: 4, + child: VarTextField( + otherDefault: "48", + textController: rmap["KTage2"]!["controller"]!, + localization: AppLocalizations.of(context)!.ktage2, + dbName: "KTage2", + required: true, + dbDesignation: DatabasesEnum.place, + ), + ), + ], + ), + const SizedBox(height: 20), + // -------------------- + Row( + children: [ + AbbauDat( + initAbbauDat: abbauDat, + onDateChanged: (value) { + abbauDat = value; + rmap["AbbauDat"]!["controller"]!.text = + value.toString().split(" ").first; + }, + ), + ], + ), + const SizedBox(height: 20), + // -------------------- + VarTextField( + textController: rmap["Auftrag"]!["controller"]!, + localization: AppLocalizations.of(context)!.auftrag, + dbName: "Auftrag", + required: false, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["KontAbsp"]!["controller"]!, + localization: AppLocalizations.of(context)!.kontabsp, + dbName: "KontAbsp", + required: false, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["SonstBem"]!["controller"]!, + localization: AppLocalizations.of(context)!.sonstbemerkungen, + dbName: "SonstBem", + dbDesignation: DatabasesEnum.place, + required: false, + ), + ], + ), + ), + // Fourth step + Step( + title: Text(AppLocalizations.of(context)!.fourthstep), + content: Column( + children: [ + VarTextField( + textController: rmap["Adresse1"]!["controller"]!, + localization: AppLocalizations.of(context)!.adresse1, + dbName: "Adresse1", + dbDesignation: DatabasesEnum.place, + required: true, + defaultValue: "addresse1", + ), + // -------------------- + VarTextField( + textController: rmap["Adresse2"]!["controller"]!, + localization: AppLocalizations.of(context)!.adresse2, + dbName: "Adresse2", + required: false, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["Adresse3"]!["controller"]!, + localization: AppLocalizations.of(context)!.adresse3, + dbName: "Adresse3", + required: false, + dbDesignation: DatabasesEnum.place, + ), + const SizedBox(height: 15), + // -------------------- + VarTextField( + textController: rmap["FKontakt1"]!["controller"]!, + localization: AppLocalizations.of(context)!.fkontakt1, + dbName: "FKontakt1", + required: false, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["FKontakt2"]!["controller"]!, + localization: AppLocalizations.of(context)!.fkontakt2, + dbName: "FKontakt2", + required: false, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["FKontakt3"]!["controller"]!, + localization: AppLocalizations.of(context)!.fkontakt3, + dbName: "FKontakt3", + required: false, + dbDesignation: DatabasesEnum.place, + ), + // -------------------- + VarTextField( + textController: rmap["IntKomm"]!["controller"]!, + localization: AppLocalizations.of(context)!.intkomm, + dbName: "IntKomm", + required: false, + dbDesignation: DatabasesEnum.place, + ), + ], + ), + ), + ]; // Here the site is built with the steps from above return Scaffold( appBar: AppBar(title: Text(AppLocalizations.of(context)!.addplace)), body: PageTransitionSwitcher( duration: const Duration(milliseconds: 800), - transitionBuilder: (Widget child, Animation animation, - Animation secondaryAnimation) { + transitionBuilder: ( + Widget child, + Animation animation, + Animation secondaryAnimation, + ) { return SharedAxisTransition( animation: animation, secondaryAnimation: secondaryAnimation, @@ -719,7 +596,10 @@ class _AddCamMainState extends State { if (!isLastStep) { saveTemplate( - getFieldsText(), DatabasesEnum.place, widget.isTemplate); + getFieldsText(), + DatabasesEnum.place, + widget.isTemplate, + ); setState(() { currentStep += 1; }); @@ -728,19 +608,31 @@ class _AddCamMainState extends State { 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, + ); } } }, diff --git a/lib/screens/excursion/excursion_main.dart b/lib/screens/excursion/excursion_main.dart index 66deba9..514437e 100644 --- a/lib/screens/excursion/excursion_main.dart +++ b/lib/screens/excursion/excursion_main.dart @@ -360,6 +360,7 @@ class _ExcursionMainState extends State { context, getFieldsText(), false, + DatabasesEnum.excursion ); } } diff --git a/lib/screens/helper/add_entries_dialog_helper.dart b/lib/screens/helper/add_entries_dialog_helper.dart index 6c980af..64ca16e 100644 --- a/lib/screens/helper/add_entries_dialog_helper.dart +++ b/lib/screens/helper/add_entries_dialog_helper.dart @@ -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 showTemplateDialog(BuildContext context, Map saveData, bool update) async { @@ -36,7 +36,7 @@ class DialogHelper { } static Future showServerErrorDialog( - BuildContext context, Map saveData, bool isTemplate) { + BuildContext context, Map 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 showSaveOptionsDialog(BuildContext context, - Map saveData, bool isTemplate) async { + Map 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); }, diff --git a/lib/screens/sharedMethods/save_main_entry.dart b/lib/screens/sharedMethods/save_main_entry.dart index 47b2889..88a60dc 100644 --- a/lib/screens/sharedMethods/save_main_entry.dart +++ b/lib/screens/sharedMethods/save_main_entry.dart @@ -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 entryData, - required bool isTemplate, - bool sent = false}) async { - var placeDB = PlaceDBHelper(); + static void saveEntry({ + required Map entryData, + required bool isTemplate, + required DatabasesEnum dbType, + 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 - 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) { - 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"]!); } }