From e5629ba4fdbcfa31c198e41d2825de87ff630034 Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Wed, 31 Jul 2024 10:25:03 +0200 Subject: [PATCH 1/2] GetDurationFromCost(): Check if given price is below minimal parking price. --- library/src/calculator_functions.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/library/src/calculator_functions.cpp b/library/src/calculator_functions.cpp index 9df6563..166bd31 100644 --- a/library/src/calculator_functions.cpp +++ b/library/src/calculator_functions.cpp @@ -145,6 +145,14 @@ std::string Calculator::GetDurationFromCost(Configuration* cfg, qCritical() << DBG_HEADER << " time steps:" << tsteps; if (paymentMethodId == PaymentMethod::Degressive) { + + if (static_cast(cost) < cfg->getPaymentOptions(paymentOptionIndex).pop_min_price) { + // minimal price is set by GetTimeSteps() + qCritical() << DBG_HEADER << " provided price (cost):" << cost; + qCritical() << DBG_HEADER << "configured minimal price:" << cfg->getPaymentOptions(paymentOptionIndex).pop_min_price; + return CalcState::BELOW_MIN_PARKING_PRICE.toStdString(); + } + if (prepaid == false) { int const pop_id = cfg->getPaymentOptions(paymentOptionIndex).pop_id; int const pop_accumulate_prices = cfg->getPaymentOptions(paymentOptionIndex).pop_accumulate_prices; From 7bf7108668a4a70809570873535a08ef10fa7b97 Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Wed, 31 Jul 2024 10:26:47 +0200 Subject: [PATCH 2/2] GetDurationFromCost(): Check if computed duration is below minimal parking time. --- library/src/calculator_functions.cpp | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/library/src/calculator_functions.cpp b/library/src/calculator_functions.cpp index 166bd31..6444af0 100644 --- a/library/src/calculator_functions.cpp +++ b/library/src/calculator_functions.cpp @@ -201,23 +201,29 @@ std::string Calculator::GetDurationFromCost(Configuration* cfg, //found = true; //qCritical() << "(" << __func__ << ":" << __LINE__ << ") duration_previous" << duration_previous; //qCritical() << "(" << __func__ << ":" << __LINE__ << ") duration in minutes" << durationInMinutes; - QString s = inputDate.toString(Qt::ISODate); - QDateTime d(QDateTime::fromString(s, Qt::ISODate)); - d = d.addSecs(duration_previous * 60); - //qCritical() << DBG_HEADER << "XXXX" << d; + QDateTime d(inputDate.addSecs(duration_previous * 60)); + + qCritical() << DBG_HEADER << " provided price (cost):" << cost; + qCritical() << DBG_HEADER << " computed time for price (minutes):" << duration_previous; + qCritical() << DBG_HEADER << "configured minimal parking time (minutes):" << cfg->getPaymentOptions(paymentOptionIndex).pop_min_time; + + if (duration_previous < cfg->getPaymentOptions(paymentOptionIndex).pop_min_time) { + return CalcState::BELOW_MIN_PARKING_TIME.toStdString(); // minimal parking time is set by GetTimeSteps() + } return d.toString(Qt::ISODate).toStdString(); } } if ((double)price == cost) { - //qCritical() << DBG_HEADER << "price" << price << "cost" << cost; - //qCritical() << DBG_HEADER << "duration in minutes" << durationInMinutes; + QDateTime d(inputDate.addSecs(durationInMinutes * 60)); - QString s = inputDate.toString(Qt::ISODate); - QDateTime d(QDateTime::fromString(s, Qt::ISODate)); - d = d.addSecs(durationInMinutes * 60); - //qCritical() << DBG_HEADER << "YYYY" << d; - return d.toString(Qt::ISODate).toStdString(); + QString const durationStr(d.toString(Qt::ISODate)); + + qCritical() << DBG_HEADER << " duration in minutes:" << durationInMinutes; + qCritical() << DBG_HEADER << " provided price (cost):" << cost; + qCritical() << DBG_HEADER << " duration for price:" << durationStr; + + return durationStr.toStdString(); } } }