Files
fforte/lib/screens/sharedMethods/save_template.dart

42 lines
1.4 KiB
Dart

// * Shared method for saving templates to the database
// * Handles both place and excursion templates
// * Supports both creating new templates and updating existing ones
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';
/// Save or update a template in the database
/// @param templateData Map containing the template data
/// @param dbType The type of database (place/excursion)
/// @return ID of the saved template, or -1 if operation failed
Future<int> saveTemplate(Map<String, String> templateData, DatabasesEnum dbType,) async {
// Select appropriate database helper
IDb dbHelper;
int id = templateData["ID"]! != "" ? int.parse(templateData["ID"]!) : -1;
if (dbType == DatabasesEnum.place) {
dbHelper = PlaceDBHelper();
} else if (dbType == DatabasesEnum.excursion) {
dbHelper = ExcursionDBHelper();
} else {
return -1; // Invalid database type
}
// Remove sent status as it's not needed for templates
templateData.remove("Sent");
// Handle new template creation vs update
if (templateData["ID"]! == "" || templateData["ID"]! == "-1") {
// Create new template
templateData.remove("ID");
id = await dbHelper.addTemplate(templateData);
} else {
// Update existing template
await dbHelper.updateTemplate(templateData);
}
return id;
}