Add free functions isHoliday() to check if the current day is a holiday
and previousDayHoliday() to check if previous day (relative to endtime) is a holiday.
This commit is contained in:
		| @@ -1838,3 +1838,42 @@ Configuration::getWeekDayWorkTime(QTime const &time, Qt::DayOfWeek dayOfWeek) { | |||||||
|  |  | ||||||
|     return value; |     return value; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | bool isHoliday(Configuration const &cfg, QDateTime const &t) { | ||||||
|  |     int const weekDay = t.date().dayOfWeek(); | ||||||
|  |     for (auto[iter, rEnd] = cfg.WeekDays.equal_range(static_cast<Qt::DayOfWeek>(weekDay)); | ||||||
|  |          iter != rEnd; | ||||||
|  |          ++iter) { | ||||||
|  |  | ||||||
|  |         if (iter->second.m_type == ATBWeekDay::WeekDayType::HOLIDAY) { | ||||||
|  |             QDate const &d = iter->second.m_date; | ||||||
|  |             if (!d.isNull() && d.isValid()) { | ||||||
|  |                 if (t.date() == d) { | ||||||
|  |                     return true; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bool previousDayHoliday(Configuration const &cfg, QDateTime const &t) { | ||||||
|  |     int const weekDay = t.date().dayOfWeek(); | ||||||
|  |     int const previousWeekDay = (weekDay == static_cast<int>(Qt::Monday)) ? | ||||||
|  |                 static_cast<int>(Qt::Sunday) : (weekDay - 1); | ||||||
|  |  | ||||||
|  |     for (auto[iter, rEnd] = cfg.WeekDays.equal_range(static_cast<Qt::DayOfWeek>(previousWeekDay)); | ||||||
|  |          iter != rEnd; | ||||||
|  |          ++iter) { | ||||||
|  |  | ||||||
|  |         if (iter->second.m_type == ATBWeekDay::WeekDayType::HOLIDAY) { | ||||||
|  |             QDate const &d = iter->second.m_date; | ||||||
|  |             if (!d.isNull() && d.isValid()) { | ||||||
|  |                 if (t.addDays(-1).date() == d) { | ||||||
|  |                     return true; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user