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