From 52ebbf7bc9bc69843728c12a4071ec6c02df7d0d Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Mon, 2 Sep 2024 17:09:26 +0200 Subject: [PATCH] Use free function getPaymentOptionIndex() in serveral places to compute valid index of a payment-option-section within tariff file. If this is not possible, then try the already available functionality. --- library/src/calculate_price.cpp | 50 +++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/library/src/calculate_price.cpp b/library/src/calculate_price.cpp index 60484f9..f86d641 100644 --- a/library/src/calculate_price.cpp +++ b/library/src/calculate_price.cpp @@ -36,7 +36,10 @@ int CALCULATE_LIBRARY_API get_minimal_parkingtime(Configuration const *cfg, int paymentOptionIndex) { int minTime = 0; - paymentOptionIndex = cfg->getPaymentOptionIndex(permitType); + paymentOptionIndex = getPaymentOptionIndex(*cfg); + if (paymentOptionIndex == -1) { + paymentOptionIndex = cfg->getPaymentOptionIndex(permitType); + } qCritical() << __func__ << __LINE__ << "paymentOptionIndex" << paymentOptionIndex; qCritical() << __func__ << __LINE__ << "permit" << PermitType(permitType).toString(); @@ -69,7 +72,10 @@ int CALCULATE_LIBRARY_API get_maximal_parkingtime(Configuration const *cfg, PERMIT_TYPE permitType, int paymentOptionIndex) { - paymentOptionIndex = cfg->getPaymentOptionIndex(permitType); + paymentOptionIndex = getPaymentOptionIndex(*cfg); + if (paymentOptionIndex == -1) { + paymentOptionIndex = cfg->getPaymentOptionIndex(permitType); + } int maxTime = 0; switch(permitType) { @@ -94,7 +100,10 @@ int CALCULATE_LIBRARY_API get_minimal_parkingprice(Configuration *cfg, int paymentOptionIndex, QDateTime const &start) { int minPrice = -1; - paymentOptionIndex = cfg->getPaymentOptionIndex(permitType); + + if ((paymentOptionIndex = getPaymentOptionIndex(*cfg)) == -1) { + paymentOptionIndex = cfg->getPaymentOptionIndex(permitType); + } int payment_method_id = cfg->getPaymentOptions(paymentOptionIndex).pop_payment_method_id; @@ -321,7 +330,9 @@ int CALCULATE_LIBRARY_API get_maximal_parkingprice(Configuration *cfg, int maxPrice = -1; static const PaymentMethod paymentMethodId = Utilities::getPaymentMethodId(cfg); - paymentOptionIndex = cfg->getPaymentOptionIndex(permitType); + if ((paymentOptionIndex = getPaymentOptionIndex(*cfg)) == -1) { + paymentOptionIndex = cfg->getPaymentOptionIndex(permitType); + } switch(permitType) { case PERMIT_TYPE::SHORT_TERM_PARKING: { // e.g. szeged (customer_281) @@ -474,7 +485,11 @@ int CALCULATE_LIBRARY_API compute_next_timestep(parking_tariff_t *tariff, int cu // return currentTimeMinutes; //} - int const paymentOptionIndex = tariff->getPaymentOptionIndex(permitType); + int paymentOptionIndex = getPaymentOptionIndex(*tariff); + if (paymentOptionIndex == -1) { + paymentOptionIndex = tariff->getPaymentOptionIndex(permitType); + } + int const &pop_plus_steps = tariff->getPaymentOptions(paymentOptionIndex).pop_plus_steps; int const &pop_minus_steps = tariff->getPaymentOptions(paymentOptionIndex).pop_minus_steps; @@ -654,7 +669,10 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket( CalcState calcState; - int const paymentOptionIndex = tariff->getPaymentOptionIndex(permitType.get()); + int paymentOptionIndex = getPaymentOptionIndex(*tariff); + if (paymentOptionIndex == -1) { + paymentOptionIndex = tariff->getPaymentOptionIndex(permitType.get()); + } double minMin = tariff->PaymentOption.find(tariff->getPaymentOptions(paymentOptionIndex).pop_payment_method_id)->second.pop_min_time; double maxMin = tariff->PaymentOption.find(tariff->getPaymentOptions(paymentOptionIndex).pop_payment_method_id)->second.pop_max_time; @@ -721,7 +739,10 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket( QDateTime start_parking_time(start_parking_time_); - int paymentOptionIndex = tariff->getPaymentOptionIndex(permitType); + int paymentOptionIndex = getPaymentOptionIndex(*tariff); + if (paymentOptionIndex == -1) { + paymentOptionIndex = tariff->getPaymentOptionIndex(permitType); + } double minMin = tariff->getPaymentOptions(paymentOptionIndex).pop_min_time; double maxMin = tariff->getPaymentOptions(paymentOptionIndex).pop_max_time; @@ -873,7 +894,11 @@ CalcState CALCULATE_LIBRARY_API compute_duration_for_parking_ticket( QString cs = start.toString(Qt::ISODate); bool prepaid = true; - int paymentOptionIndex = tariff->getPaymentOptionIndex(permitType); + int paymentOptionIndex = getPaymentOptionIndex(*tariff); + if (paymentOptionIndex == -1) { + paymentOptionIndex = tariff->getPaymentOptionIndex(permitType); + } + int prepaid_option_id = tariff->getPaymentOptions(paymentOptionIndex).pop_prepaid_option_id; if (prepaid_option_id == 2) { // see tariff03.json for 502: 2 means no prepaid-option prepaid = false; @@ -913,7 +938,14 @@ CalcState CALCULATE_LIBRARY_API compute_duration_for_parking_ticket( CalcState calcState; bool prepaid = true; - int paymentOptionIndex = tariff->getPaymentOptionIndex(permitType); + + int paymentOptionIndex = getPaymentOptionIndex(*tariff); + if (paymentOptionIndex == -1) { + paymentOptionIndex = tariff->getPaymentOptionIndex(permitType); + } + + qCritical() << __func__ << ":" << __LINE__ << " payment option index: " << paymentOptionIndex; + int prepaid_option_id = tariff->getPaymentOptions(paymentOptionIndex).pop_prepaid_option_id; if (prepaid_option_id == 2) {