import 'package:fforte/enums/databases.dart'; import 'package:fforte/screens/helper/snack_bar_helper.dart'; import 'package:fforte/screens/sharedMethods/http_request.dart'; import 'package:fforte/screens/sharedMethods/save_file.dart'; import 'package:fforte/screens/sharedMethods/save_template.dart'; import 'package:fforte/screens/sharedMethods/save_main_entry.dart'; import 'package:flutter/material.dart'; import 'package:fforte/l10n/app_localizations.dart'; 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, ) async { return showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return AlertDialog( title: Text(AppLocalizations.of(context)!.fieldEmpty), actions: [ TextButton( onPressed: () { Navigator.of(context).pop(); }, child: Text(AppLocalizations.of(context)!.cancel), ), TextButton( onPressed: () { saveTemplate(saveData, DatabasesEnum.place); Navigator.pushNamedAndRemoveUntil( context, '/home', (route) => false, ); }, child: Text(AppLocalizations.of(context)!.template), ), ], ); }, ); } static Future showServerErrorDialog( BuildContext context, Map saveData, bool isTemplate, DatabasesEnum dbType, ) { bool isLoading = false; return showDialog( context: context, builder: (context) { return StatefulBuilder( builder: (BuildContext context, StateSetter setState) { return AlertDialog( title: Text(AppLocalizations.of(context)!.servererrortitle), content: isLoading ? const SizedBox( height: 100, child: Center(child: CircularProgressIndicator()), ) : null, actions: [ if (!isLoading) TextButton( onPressed: () async { setState(() => isLoading = true); int errorCode = await HttpRequest.httpRequest( saveDataMap: saveData, ); setState(() => isLoading = false); if (errorCode == 201 && context.mounted) { Navigator.pop(context); // saveData(true); SaveMainEntryMethod.saveEntry( entryData: saveData, isTemplate: isTemplate, dbType: dbType, ); showSuccessDialog(context); } }, child: Text(AppLocalizations.of(context)!.sendagain), ), if (!isLoading) TextButton( onPressed: () { Navigator.pop(context); }, child: Text(AppLocalizations.of(context)!.cancel), ), ], ); }, ); }, ); } static Future showSaveOptionsDialog( BuildContext context, Map saveData, bool isTemplate, DatabasesEnum dbType, ) async { bool isLoading = false; return showDialog( context: context, barrierDismissible: false, // Verhindert das Schließen des Dialogs durch den Benutzer builder: (BuildContext context) { return StatefulBuilder( builder: (context, setState) { return AlertDialog( title: isLoading ? Text(AppLocalizations.of(context)!.loading) : Text(AppLocalizations.of(context)!.savemethod), content: isLoading ? const SizedBox( height: 100, child: Center(child: CircularProgressIndicator()), ) : null, actions: [ if (!isLoading) TextButton( onPressed: () async { setState(() => isLoading = true); saveTemplate(saveData, DatabasesEnum.place); Navigator.pushNamedAndRemoveUntil( context, '/home', (route) => false, ); }, child: Text(AppLocalizations.of(context)!.template), ), if (!isLoading) TextButton( onPressed: () async { setState(() => isLoading = true); int errorCode = await HttpRequest.httpRequest( saveDataMap: saveData, ); setState(() => isLoading = false); if (errorCode != 201 || !context.mounted) { SaveMainEntryMethod.saveEntry( entryData: saveData, isTemplate: isTemplate, dbType: dbType, ); if (context.mounted) { AddEntriesDialogHelper.showServerErrorDialog( context, saveData, isTemplate, dbType, ); } } else { SaveMainEntryMethod.saveEntry( entryData: saveData, isTemplate: isTemplate, dbType: dbType, sent: true, ); showSuccessDialog(context); } }, child: Text(AppLocalizations.of(context)!.sendtoserver), ), if (!isLoading) TextButton( onPressed: () async { setState(() => isLoading = true); try { SaveMainEntryMethod.saveEntry( entryData: saveData, isTemplate: isTemplate, dbType: dbType, ); SaveFileMethod.saveFile( saveData, AppLocalizations.of(context)!.savefilefailed, saveData["CID"]!, ); setState(() => isLoading = false); } catch (e) { SnackBarHelper.showSnackBarMessage( context, AppLocalizations.of(context)!.savefilefailed, ); } }, child: Text(AppLocalizations.of(context)!.saveasfile), ), if (!isLoading) TextButton( onPressed: () { SaveMainEntryMethod.saveEntry( entryData: saveData, isTemplate: isTemplate, dbType: dbType, ); Navigator.pushNamedAndRemoveUntil( context, '/home', (route) => false, ); }, child: Text(AppLocalizations.of(context)!.justsave), ), if (!isLoading) TextButton( onPressed: () { Navigator.pop(context); }, child: Text(AppLocalizations.of(context)!.cancel), ), ], ); }, ); }, ); } static Future showSuccessDialog(BuildContext context) async { return showDialog( context: context, builder: (context) { return AlertDialog( title: Text(AppLocalizations.of(context)!.successful), actions: [ TextButton( onPressed: () { Navigator.pushNamedAndRemoveUntil( context, '/home', (route) => false, ); }, child: Text(AppLocalizations.of(context)!.continueB), ), ], ); }, ); } }