getSymptomsData method

Future<UserSymptomsLogs> getSymptomsData(
  1. DateTime? symptomsLogDate
)

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;
}