getSymptomsData method
Return UserSymptomsLogs based on log date
Implementation
Future<UserSymptomsLogs> getSymptomsData(DateTime? symptomsLogDate) async {
String logDate = "";
if (symptomsLogDate != null) {
try {
logDate = defaultDateFormat.format(symptomsLogDate);
} catch (e) {
throw WidgetBaseLanguage.errorInvalidSymptomsLogDate;
}
} else {
throw WidgetBaseLanguage.errorInvalidSymptomsLogDate;
}
UserSymptomsLogs userSymptomsLogs = UserSymptomsLogs(symptomData: []);
final mInstance = MenstrualCycleWidget.instance!;
final dbHelper = MenstrualCycleDbHelper.instance;
Database? db = await dbHelper.database;
String customerId = mInstance.getCustomerId();
List<SymptomsData> symptomsDataList = [];
final encryption = Encryption.instance;
final List<Map<String, dynamic>> queryResponse = await db!.rawQuery(
"Select * from ${MenstrualCycleDbHelper.tableDailyUserSymptomsLogsData} WHERE ${MenstrualCycleDbHelper.columnLogDate}='$logDate' AND ${MenstrualCycleDbHelper.columnCustomerId}='$customerId'");
List.generate(queryResponse.length, (i) {
String userDecryptData = encryption.decrypt(
queryResponse[i][MenstrualCycleDbHelper.columnUserEncryptData]);
List<dynamic> jsonData = json.decode(userDecryptData.trim());
//printMenstrualCycleLogs("jsonData ${jsonData}");
symptomsDataList.addAll(
jsonData.map((symptom) => SymptomsData.fromMap(symptom)).toList());
userSymptomsLogs.meditationTime = encryption.decrypt(
queryResponse[i][MenstrualCycleDbHelper.columnMeditationTime]);
userSymptomsLogs.bodyTemperature = encryption.decrypt(
queryResponse[i][MenstrualCycleDbHelper.columnBodyTemperature]);
userSymptomsLogs.waterValue = encryption
.decrypt(queryResponse[i][MenstrualCycleDbHelper.columnWater]);
userSymptomsLogs.weight = encryption
.decrypt(queryResponse[i][MenstrualCycleDbHelper.columnWeight]);
userSymptomsLogs.weightUnit = encryption
.decrypt(queryResponse[i][MenstrualCycleDbHelper.columnWeightUnit]);
userSymptomsLogs.sleepTime = encryption
.decrypt(queryResponse[i][MenstrualCycleDbHelper.columnSleepTime]);
userSymptomsLogs.waterUnit = encryption
.decrypt(queryResponse[i][MenstrualCycleDbHelper.columnWaterUnit]);
userSymptomsLogs.bodyTemperatureUnit = encryption.decrypt(
queryResponse[i][MenstrualCycleDbHelper.columnBodyTemperatureUnit]);
userSymptomsLogs.notes = encryption
.decrypt(queryResponse[i][MenstrualCycleDbHelper.columnNotes]);
});
userSymptomsLogs.logDate = logDate;
userSymptomsLogs.symptomData!.addAll(symptomsDataList);
return userSymptomsLogs;
}