getAll42DaysIn1Month static method
List<DateTime>
getAll42DaysIn1Month({
- required List<
DateTime> month, - WeekStartsFrom weekStartsFrom = WeekStartsFrom.sunday,
This getAll42DaysIn1Month function will return all the 42 days in a m
Implementation
static List<DateTime> getAll42DaysIn1Month({
required List<DateTime> month,
WeekStartsFrom weekStartsFrom = WeekStartsFrom.sunday,
}) {
List<DateTime> aMonthDaysList = month;
DateTime firstDayOfaMonth = aMonthDaysList.first;
///For finding first Disabled Day
late DateTime firstDisableDay;
int weekSelectedIndex = (WeekStartsFrom.values.indexOf(weekStartsFrom) + 1);
firstDisableDay = firstDayOfaMonth.subtract(
///Adding +7 to [firstDayOfaMonth.weekday]
///to avoid -ve result
Duration(days: ((firstDayOfaMonth.weekday + 7) - weekSelectedIndex) % 7),
);
/* -----old-----
// if (weekStartsFrom == WeekStartsFrom.monday) {
// ///Starts week with [Monday]
// firstDisableDay = firstDayOfaMonth
// .subtract(Duration(days: firstDayOfaMonth.weekday - 1));
// } else if (weekStartsFrom == WeekStartsFrom.sunday) {
// ///Starts week with [Sunday]
// if (firstDayOfaMonth.weekday == 7) {
// firstDisableDay = firstDayOfaMonth;
// } else {
// firstDisableDay =
// firstDayOfaMonth.subtract(Duration(days: firstDayOfaMonth.weekday));
// }
// } else if (weekStartsFrom == WeekStartsFrom.saturday) {
// ///Starts week with [Saturday]
// if (firstDayOfaMonth.weekday == 6) {
// firstDisableDay = firstDayOfaMonth;
// } else if (firstDayOfaMonth.weekday == 7) {
// firstDisableDay = firstDayOfaMonth.subtract(const Duration(days: 1));
// } else {
// firstDisableDay = firstDayOfaMonth
// .subtract(Duration(days: firstDayOfaMonth.weekday + 1));
// }
// }
*/
DateTime lastDayOfaMonth = aMonthDaysList.last;
///Algorithm to find Disabled Days
List<DateTime> firstDisabledToLastDayOfMonth =
getDaysInBeteween(startDate: firstDisableDay, endDate: lastDayOfaMonth);
int lastlength = firstDisabledToLastDayOfMonth.length;
int disabledDays = 42 - lastlength;
///not used
// while (lastlength % 7 != 0) {
// lastlength++;
// disabledDays++;
// }
///To find the last Disabled Days of the month
DateTime lastDisabledDay =
lastDayOfaMonth.add(Duration(days: disabledDays));
///!geting all 42 days
List<DateTime> all42DaysOfMonth =
getDaysInBeteween(startDate: firstDisableDay, endDate: lastDisabledDay);
return all42DaysOfMonth;
}