From 4b35b1ffb77e869fe107a235fa29ea0dbbd3ca36 Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Thu, 23 Nov 2023 09:41:02 +0100 Subject: [PATCH] Implement GetDurationForPrice(). --- library/src/calculator_functions.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/library/src/calculator_functions.cpp b/library/src/calculator_functions.cpp index 3616b9d..46e2d82 100644 --- a/library/src/calculator_functions.cpp +++ b/library/src/calculator_functions.cpp @@ -623,7 +623,25 @@ uint32_t Calculator::GetPriceForTimeStep(Configuration const *cfg, uint8_t payme int const pun_duration = cfg->Duration.find(payment_unit_id)->second.pun_duration; if (timeStep == pun_duration) { - return (uint32_t)(itr->second.pra_price); + return (uint32_t)(itr->second.pra_price); + } + } + + return 0; +} + +uint32_t Calculator::GetDurationForPrice(Configuration *cfg, int price) const { + int const pop_id = cfg->getPaymentOptions().pop_id; + + for (auto[itr, rangeEnd] = cfg->PaymentRate.equal_range(pop_id); itr != rangeEnd; ++itr) + { + int const payment_unit_id = itr->second.pra_payment_unit_id; + int const pra_price = cfg->PaymentRate.find(payment_unit_id)->second.pra_price; + + if (price == pra_price) { + int const durationId = itr->second.pra_payment_unit_id; + int const durationUnit = cfg->Duration.find(durationId)->second.pun_duration; + return durationUnit; } }