getLastPeriodDate method
Return last periods start date
Implementation
Future<String> getLastPeriodDate() 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.generate(queryResponse.length, (i) {
selectedPeriodsDate.add(DateTime.parse(Encryption.instance
.decrypt(queryResponse[i][columnPeriodEncryptDate])));
});
selectedPeriodsDate.sort((a, b) => b.compareTo(a));
int oneDaysCount = 0; // Only If user selected only one cycle of periods
if (selectedPeriodsDate.isNotEmpty) {
if (selectedPeriodsDate.length == 1) {
//mInstance.lastPeriodLength = 1;
oneDaysCount = 1;
//printLogs("Count length ==1: ${selectedPeriodsDate.length}");
lastPeriodsDate =
CalenderDateUtils.dateDayFormat(selectedPeriodsDate[0]);
} else {
for (int index = 1; index < selectedPeriodsDate.length; index++) {
//printLogs(
// "Days: ${selectedPeriodsDate[index - 1].difference(selectedPeriodsDate[index]).inDays} = ${selectedPeriodsDate[index]} = ${selectedPeriodsDate[index - 1]}");
int inDays = selectedPeriodsDate[index - 1]
.difference(selectedPeriodsDate[index])
.inDays;
if (inDays > 2) {
//printLogs("Count inDays >2: $oneDaysCount");
// mInstance.lastPeriodLength = oneDaysCount + 1;
lastPeriodsDate =
CalenderDateUtils.dateDayFormat(selectedPeriodsDate[index - 1]);
break;
} else if (inDays == 1) {
oneDaysCount = oneDaysCount + 1;
}
}
}
// Only If user selected only one cycle of periods
if (lastPeriodsDate.isEmpty &&
oneDaysCount == selectedPeriodsDate.length - 1) {
lastPeriodsDate = CalenderDateUtils.dateDayFormat(
selectedPeriodsDate[selectedPeriodsDate.length - 1]);
}
}
return lastPeriodsDate;
}