From 1dd81d4a56abbf4a6aec23715bda65e6fcfb7894 Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Tue, 30 Apr 2024 14:08:08 +0200 Subject: [PATCH] get_minimal_parkingtime(): const Configuration parameter. Cast of const pointer necessary. get_maximal_parkingtime(): const Configuration parameter. --- library/src/calculate_price.cpp | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/library/src/calculate_price.cpp b/library/src/calculate_price.cpp index c54096b..bad4a98 100644 --- a/library/src/calculate_price.cpp +++ b/library/src/calculate_price.cpp @@ -14,7 +14,7 @@ QList CALCULATE_LIBRARY_API get_time_steps(Configuration *cfg) { return Calculator::GetInstance().GetTimeSteps(cfg); } -int CALCULATE_LIBRARY_API get_minimal_parkingtime(Configuration *cfg, +int CALCULATE_LIBRARY_API get_minimal_parkingtime(Configuration const *cfg, PERMIT_TYPE permitType, int paymentOptionIndex) { int minTime = 0; @@ -33,14 +33,14 @@ int CALCULATE_LIBRARY_API get_minimal_parkingtime(Configuration *cfg, // for each new sell-procedure, recomute the timesteps. implicitly, set // the minimal parking time. Calculator::GetInstance().ResetTimeSteps(paymentOptionIndex); - Calculator::GetInstance().GetTimeSteps(cfg, paymentOptionIndex); + Calculator::GetInstance().GetTimeSteps((Configuration *)cfg, paymentOptionIndex); minTime = qRound(cfg->getPaymentOptions(paymentOptionIndex).pop_min_time); } return minTime; } -int CALCULATE_LIBRARY_API get_maximal_parkingtime(Configuration *cfg, +int CALCULATE_LIBRARY_API get_maximal_parkingtime(Configuration const *cfg, PERMIT_TYPE permitType, int paymentOptionIndex) { int maxTime = 0; @@ -59,6 +59,7 @@ int CALCULATE_LIBRARY_API get_maximal_parkingtime(Configuration *cfg, } return maxTime; + } int CALCULATE_LIBRARY_API get_minimal_parkingprice(Configuration *cfg, @@ -156,6 +157,28 @@ int CALCULATE_LIBRARY_API compute_product_price(Configuration const *cfg, return product_price; } } break; + case PERMIT_TYPE::TWENTY_FOUR_HOURS_TICKET: { + std::optional> products = cfg->getTariffProductForProductId(permitType); + if (products) { + int product_price = 0; + QVector product = products.value(); + + if (product.size() > 0) { + if (productStart && productEnd) { + int pop_min_time = get_minimal_parkingtime(cfg); // in minutes + int pop_max_time = get_maximal_parkingtime(cfg); // in minutes + if (pop_max_time >= pop_min_time) { + *productStart = start; + *productEnd = start.addSecs(pop_max_time*60); + product_price = product[0].getProductPrice(); + } + } + } + + return product_price; + } + + } break; default: break; }