saveSymptomsLogs method

dynamic saveSymptomsLogs({
  1. required List<SymptomsData>? userSymptomsData,
  2. required Function? onSuccess,
  3. required Function? onError,
  4. DateTime? symptomsLogDate,
  5. String meditationTime = "0",
  6. TimeOfDay? sleepWakeUpTime,
  7. TimeOfDay? sleepBedTime,
  8. int cycleDay = 0,
  9. String waterValue = "0",
  10. WaterUnits waterUnit = WaterUnits.liters,
  11. String customNotes = "",
  12. String weight = "0",
  13. WeightUnits weightUnit = WeightUnits.kg,
  14. String bodyTemperature = "0",
  15. BodyTemperatureUnits bodyTemperatureUnit = BodyTemperatureUnits.celsius,
  16. bool isCustomLogs = true,
})

----------------------- Custom Functions -----------------------/// insert user's period data on userId and log date

Implementation

/// insert user's period data on userId and log date
saveSymptomsLogs({
  required List<SymptomsData>? userSymptomsData,
  required Function? onSuccess,
  required Function? onError,
  DateTime? symptomsLogDate,
  String meditationTime = "0",
  TimeOfDay? sleepWakeUpTime,
  TimeOfDay? sleepBedTime,
  int cycleDay = 0,
  String waterValue = "0",
  WaterUnits waterUnit = WaterUnits.liters,
  String customNotes = "",
  String weight = "0",
  WeightUnits weightUnit = WeightUnits.kg,
  String bodyTemperature = "0",
  BodyTemperatureUnits bodyTemperatureUnit = BodyTemperatureUnits.celsius,
  bool isCustomLogs = true,
}) async {
  String currentDate = "";
  String logDate = "";
  String sleepTime = "0";
  customNotes = "N/A";

  if (symptomsLogDate == null) {
    var now = DateTime.now();
    logDate = defaultDateFormat.format(now);
  } else {
    try {
      logDate = defaultDateFormat.format(symptomsLogDate);
    } catch (e) {
      throw WidgetBaseLanguage.errorInvalidSymptomsLogDate;
    }
  }

  if (sleepBedTime != null && sleepWakeUpTime != null) {
    sleepTime =
        "${sleepBedTime.hour}:${sleepBedTime.minute}T${sleepWakeUpTime.hour}:${sleepWakeUpTime.minute}";
  }

  final dbHelper = MenstrualCycleDbHelper.instance;

  currentDate = currentDateFormat.format(DateTime.now());
  final encryption = Encryption.instance;
  String encryptedData = encryption.encrypt(json.encode(userSymptomsData));

  Map<String, dynamic> userData = {
    MenstrualCycleDbHelper.columnCustomerId: getCustomerId(),
    MenstrualCycleDbHelper.columnUserEncryptData: encryptedData,
    MenstrualCycleDbHelper.columnMeditationTime:
        encryption.encrypt(meditationTime),
    MenstrualCycleDbHelper.columnSleepTime: encryption.encrypt(sleepTime),
    MenstrualCycleDbHelper.columnWater: encryption.encrypt(waterValue),
    MenstrualCycleDbHelper.columnWaterUnit:
        encryption.encrypt(waterUnit.toString()),
    MenstrualCycleDbHelper.columnBodyTemperatureUnit:
        encryption.encrypt(bodyTemperatureUnit.toString()),
    MenstrualCycleDbHelper.columnWeightUnit:
        encryption.encrypt(weightUnit.toString()),
    MenstrualCycleDbHelper.columnNotes: encryption.encrypt(customNotes),
    MenstrualCycleDbHelper.columnWeight: encryption.encrypt(weight),
    MenstrualCycleDbHelper.columnBodyTemperature:
        encryption.encrypt(bodyTemperature),
    MenstrualCycleDbHelper.columnLogDate: logDate,
    MenstrualCycleDbHelper.columnCycleDay: cycleDay,
    MenstrualCycleDbHelper.columnCreatedDateTime: currentDate,
    MenstrualCycleDbHelper.columnIsCustomLog: (isCustomLogs) ? "1" : "0"
  };

  int id = await dbHelper.insertDailyLog(userData, logDate, getCustomerId());
  //printLogs(("Save Id: $id");
  if (id > 0) {
    //printLogs(("Save Data");
    if (onSuccess != null) {
      onSuccess.call(id);
    }
  } else {
    //printLogs(("False to save Data");
    if (onError != null) {
      onError.call();
    }
  }
}