From f7af631de6833080cc10f2620136866f95921265 Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Wed, 31 Jan 2024 15:19:31 +0100 Subject: [PATCH] Use isParkingAllowed() to steamline source code. --- library/src/calculator_functions.cpp | 51 ++++++++-------------------- 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/library/src/calculator_functions.cpp b/library/src/calculator_functions.cpp index ad95a9c..ab4cf06 100644 --- a/library/src/calculator_functions.cpp +++ b/library/src/calculator_functions.cpp @@ -134,30 +134,17 @@ std::string Calculator::GetDurationFromCost(Configuration* cfg, inputDate = inputDate.addSecs(GetDurationForPrice(cfg, price) * 60); return inputDate.toString(Qt::ISODate).toStdString(); } else { - QDateTime const &start = QDateTime::fromString(start_datetime, Qt::ISODate); - if (Utilities::IsYearPeriodActive(cfg, start)) { + if (Utilities::IsYearPeriodActive(cfg, inputDate)) { if (!prepaid) { - BusinessHours businessHours = Utilities::getBusinessHours(cfg, paymentMethodId); - if (businessHours == BusinessHours::OnlyWeekDays) { - int const weekdayId = start.date().dayOfWeek(); - - using WTIterator = std::multimap::const_iterator; - std::pair p = cfg->WeekDaysWorktime.equal_range(weekdayId); - - for (WTIterator itr = p.first; itr != p.second; ++itr) { - QTime const &from = Utilities::WeekDaysWorkTimeFrom(itr); - QTime const &until = Utilities::WeekDaysWorkTimeUntil(itr); - QTime const& startTime = start.time(); - - if (from <= startTime && startTime <= until) { - return inputDate.addSecs(GetDurationForPrice(cfg, price) * 60).toString(Qt::ISODate).toStdString(); - } - } + CalcState cs = isParkingAllowed(cfg, inputDate); + if (cs) { + inputDate.setTime(cs.getAllowedTimeRange().getTimeUntil()); + return inputDate.toString(Qt::ISODate).toStdString(); } } - qCritical() << __PRETTY_FUNCTION__ << "NOT YET IMPLEMENTED"; - return 0; + qCritical() << __func__ << ":" << __LINE__ << "NOT YET IMPLEMENTED"; + return ""; } } } @@ -284,23 +271,13 @@ double Calculator::GetCostFromDuration(Configuration* cfg, } else { if (Utilities::IsYearPeriodActive(cfg, start_datetime)) { if (!prepaid) { - BusinessHours businessHours = Utilities::getBusinessHours(cfg, paymentMethodId); - if (businessHours == BusinessHours::OnlyWeekDays) { - int const weekdayId = start_datetime.date().dayOfWeek(); - - using WTIterator = std::multimap::const_iterator; - std::pair p = cfg->WeekDaysWorktime.equal_range(weekdayId); - - for (WTIterator itr = p.first; itr != p.second; ++itr) { - QTime const &from = Utilities::WeekDaysWorkTimeFrom(itr); - QTime const &until = Utilities::WeekDaysWorkTimeUntil(itr); - QTime const &startTime = start_datetime.time(); - - if (from <= startTime && startTime <= until) { - end_datetime = start_datetime.addSecs(durationMinutes*60); - return GetCostFromDuration(cfg, start_datetime, end_datetime); - } - } + CalcState cs = isParkingAllowed(cfg, start_datetime); + if (cs) { + end_datetime = start_datetime.addSecs(durationMinutes*60); + double cost = GetCostFromDuration(cfg, start_datetime, end_datetime); + end_datetime = start_datetime; + end_datetime.setTime(cs.getAllowedTimeRange().getTimeUntil()); + return cost; } }