getMinMaxBodyTemperature method

Future<Map<String, int>> getMinMaxBodyTemperature({
  1. BodyTemperatureUnits? bodyTemperatureUnits = BodyTemperatureUnits.celsius,
})

Get min and max body temperature of current user

Implementation

Future<Map<String, int>> getMinMaxBodyTemperature(
    {BodyTemperatureUnits? bodyTemperatureUnits =
        BodyTemperatureUnits.celsius}) async {
  final dbHelper = MenstrualCycleDbHelper.instance;
  Database? db = await dbHelper.database;
  int minValue = 0;
  int maxValue = 0;
  final mInstance = MenstrualCycleWidget.instance!;
  String customerId = mInstance.getCustomerId();

  final List<Map<String, dynamic>> queryResponse = await db!.rawQuery(
      "Select * from ${MenstrualCycleDbHelper.tableDailyUserSymptomsLogsData} WHERE ${MenstrualCycleDbHelper.columnCustomerId}='$customerId'");
  final encryption = Encryption.instance;

  List.generate(queryResponse.length, (i) {
    String tempUnit = encryption.decrypt(
        queryResponse[i][MenstrualCycleDbHelper.columnBodyTemperatureUnit]);
    double tempValue = double.parse(encryption.decrypt(
        queryResponse[i][MenstrualCycleDbHelper.columnBodyTemperature]));
    double temp = 0.0;
    if (tempValue > 0) {
      if (tempUnit == bodyTemperatureUnits.toString()) {
        temp = tempValue;
      } else {
        if (bodyTemperatureUnits == BodyTemperatureUnits.fahrenheit) {
          temp = celsiusToFahrenheit(tempValue);
        } else {
          temp = fahrenheitToCelsius(tempValue);
        }
      }
    }

    if (minValue == 0) {
      minValue = temp.toInt();
    }
    if (temp > 0) {
      if (minValue >= temp) {
        minValue = temp.toInt();
      }
      if (maxValue <= temp) {
        maxValue = temp.toInt();
      }
    }
  });

  return {
    'min_temp': minValue,
    'max_temp': maxValue,
  };
}