getLastPeriodDateFromInputDate method

Future<String> getLastPeriodDateFromInputDate(
  1. String logDate
)

Return last periods start date

Implementation

Future<String> getLastPeriodDateFromInputDate(String logDate) async {
  final mInstance = MenstrualCycleWidget.instance!;
  String customerId = mInstance.getCustomerId();
  String lastPeriodsDate = "";
  Database? db = await instance.database;

  final List<Map<String, dynamic>> queryResponse = await db!.rawQuery(
      "Select * from $tableUserPeriodsLogsData WHERE $columnCustomerId='$customerId' ORDER BY $columnPeriodEncryptDate DESC");

  List<DateTime> selectedPeriodsDate = [];
  List<DateTime> periodStartDateList = [];

  List.generate(queryResponse.length, (i) {
    selectedPeriodsDate.add(DateTime.parse(Encryption.instance
        .decrypt(queryResponse[i][columnPeriodEncryptDate])));
  });

  selectedPeriodsDate.sort((a, b) => a.compareTo(b));

  if (selectedPeriodsDate.isNotEmpty) {
    for (int index = 1; index < selectedPeriodsDate.length; index++) {
      if (index == 1) {
        periodStartDateList.add(selectedPeriodsDate[index - 1]);
      }
      int inDays = selectedPeriodsDate[index]
          .difference(selectedPeriodsDate[index - 1])
          .inDays;
      if (inDays > 2) {
        periodStartDateList.add(selectedPeriodsDate[index]);
      }
    }
  }

  //printMenstrualCycleLogs("Log Date $logDate");
  if (periodStartDateList.isNotEmpty) {
    for (int index = 0; index < periodStartDateList.length; index++) {
      if (DateTime.parse(logDate) == periodStartDateList[index]) {
        lastPeriodsDate =
            CalenderDateUtils.dateDayFormat(periodStartDateList[index]);
      } else if (DateTime.parse(logDate)
          .isAfter(periodStartDateList[index])) {
        lastPeriodsDate =
            CalenderDateUtils.dateDayFormat(periodStartDateList[index]);
      }
    }
  }
  //printMenstrualCycleLogs("Last Period Date $lastPeriodsDate");
  return lastPeriodsDate;
}