load and parse additional (included) tariff-files
This commit is contained in:
parent
37aa10fc85
commit
e172e814e7
@ -5,12 +5,15 @@
|
|||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
#include "tariff_global_defines.h"
|
#include "tariff_global_defines.h"
|
||||||
#include "period_year.h"
|
#include "period_year.h"
|
||||||
|
#include "tariff_permit_type.h"
|
||||||
|
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
QString const CalcState::SUCCESS = "SUCCESS";
|
QString const CalcState::SUCCESS = "SUCCESS";
|
||||||
QString const CalcState::ERROR_PARSING_ZONE_NR = "ERROR_PARSING_ZONE_NR";
|
QString const CalcState::ERROR_PARSING_ZONE_NR = "ERROR_PARSING_ZONE_NR";
|
||||||
@ -28,6 +31,9 @@ QString const CalcState::OVERPAID = "OVERPAID";
|
|||||||
QString const CalcState::OUTSIDE_ALLOWED_PARKING_TIME = "OUTSIDE_ALLOWED_PARKING_TIME";
|
QString const CalcState::OUTSIDE_ALLOWED_PARKING_TIME = "OUTSIDE_ALLOWED_PARKING_TIME";
|
||||||
QString const CalcState::SUCCESS_MAXPRICE = "SUCCESS_MAXPRICE";
|
QString const CalcState::SUCCESS_MAXPRICE = "SUCCESS_MAXPRICE";
|
||||||
|
|
||||||
|
|
||||||
|
static std::map<PERMIT_TYPE, std::unique_ptr<parking_tariff_t>> tariffs;
|
||||||
|
|
||||||
QList<int> CALCULATE_LIBRARY_API get_time_steps(Configuration *cfg) {
|
QList<int> CALCULATE_LIBRARY_API get_time_steps(Configuration *cfg) {
|
||||||
return Calculator::GetInstance().GetTimeSteps(cfg);
|
return Calculator::GetInstance().GetTimeSteps(cfg);
|
||||||
}
|
}
|
||||||
@ -464,6 +470,31 @@ CalcState CALCULATE_LIBRARY_API init_tariff(parking_tariff_t **tariff, char cons
|
|||||||
|
|
||||||
qCritical() << "init_tariff: Parsing tariff config (" << confFile << ")";
|
qCritical() << "init_tariff: Parsing tariff config (" << confFile << ")";
|
||||||
|
|
||||||
|
if ((*tariff)->TariffIncludes.size() > 0) {
|
||||||
|
qCritical() << "init_tariff: TariffIncludes" << (*tariff)->TariffIncludes;
|
||||||
|
for (int i = 0 ; i < (*tariff)->TariffIncludes.size(); ++i) {
|
||||||
|
QFile f(QString("/etc/psa_tariff/%1").arg((*tariff)->TariffIncludes.at(i)));
|
||||||
|
if (f.exists() &&
|
||||||
|
f.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
|
|
||||||
|
QString json = f.readAll();
|
||||||
|
std::unique_ptr<parking_tariff_t> t = std::make_unique<parking_tariff_t>();
|
||||||
|
|
||||||
|
if (! t->ParseJson(t.get(), json.toStdString().c_str())) {
|
||||||
|
qCritical() << " ... error parsing tariff in" << f.fileName();
|
||||||
|
qCritical() << " ... json" << json;
|
||||||
|
} else {
|
||||||
|
PERMIT_TYPE pt = static_cast<PERMIT_TYPE>(t->getPaymentOptions().pop_product_id);
|
||||||
|
if (tariffs.count(pt) == 0) {
|
||||||
|
const auto [it, success] = tariffs.insert(std::make_pair(pt, std::move(t)));
|
||||||
|
qCritical() << " ... insertion" << success;
|
||||||
|
qCritical() << " ... insertion" << (int)it->first << it->second->getPaymentOptions().pop_product_name;
|
||||||
|
qCritical() << " ... insertion" << tariffs[pt]->getPaymentOptions().pop_product_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return calcState;
|
return calcState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user