Compare commits
No commits in common. "b4b2e27fe3a8921a007ab66d5a9f8366f7923d82" and "7f25c46d306f78f677ee98211b5df5582102113e" have entirely different histories.
b4b2e27fe3
...
7f25c46d30
@ -558,7 +558,6 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket(
|
|||||||
<< " paymentOptionIndex: " << paymentOptionIndex << endl
|
<< " paymentOptionIndex: " << paymentOptionIndex << endl
|
||||||
<< " start_parking_time: " << start_parking_time << endl
|
<< " start_parking_time: " << start_parking_time << endl
|
||||||
<< " netto_parking_time: " << netto_parking_time << endl
|
<< " netto_parking_time: " << netto_parking_time << endl
|
||||||
<< " start + netto: " << start_parking_time.addSecs(netto_parking_time * 60) << endl
|
|
||||||
<< " minMin: " << minMin << endl
|
<< " minMin: " << minMin << endl
|
||||||
<< " maxMin: " << maxMin;
|
<< " maxMin: " << maxMin;
|
||||||
|
|
||||||
|
@ -31,8 +31,6 @@ QDateTime Calculator::GetDailyTicketDuration(Configuration* cfg, const QDateTime
|
|||||||
return QDateTime();
|
return QDateTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
// qCritical() << __func__ << start_datetime.toString(Qt::ISODate);
|
|
||||||
|
|
||||||
double day_price = 0.0f;
|
double day_price = 0.0f;
|
||||||
int current_special_day_id = -1;
|
int current_special_day_id = -1;
|
||||||
bool is_special_day = Utilities::CheckSpecialDay(cfg, start_datetime.toString(Qt::ISODate).toStdString().c_str(), ¤t_special_day_id, &day_price);
|
bool is_special_day = Utilities::CheckSpecialDay(cfg, start_datetime.toString(Qt::ISODate).toStdString().c_str(), ¤t_special_day_id, &day_price);
|
||||||
@ -869,9 +867,6 @@ CalcState Calculator::isParkingAllowedForWeekDay(Configuration const *cfg,
|
|||||||
qCritical() << DBG_HEADER << "start" << start.toString(Qt::ISODate)
|
qCritical() << DBG_HEADER << "start" << start.toString(Qt::ISODate)
|
||||||
<< "paymentOptionIndex" << paymentOptionIndex;
|
<< "paymentOptionIndex" << paymentOptionIndex;
|
||||||
|
|
||||||
// TODO: wieder entfernen
|
|
||||||
return CalcState(CalcState::State::SUCCESS, "PARKING_ALLOWED", QTime(), QTime());
|
|
||||||
|
|
||||||
QString errorStr = "UNKNOWN ERROR";
|
QString errorStr = "UNKNOWN ERROR";
|
||||||
|
|
||||||
PaymentMethod const paymentMethodId = Utilities::getPaymentMethodId(cfg);
|
PaymentMethod const paymentMethodId = Utilities::getPaymentMethodId(cfg);
|
||||||
@ -904,13 +899,8 @@ CalcState Calculator::isParkingAllowedForWeekDay(Configuration const *cfg,
|
|||||||
|
|
||||||
QTime const &startTime = start.time();
|
QTime const &startTime = start.time();
|
||||||
|
|
||||||
// qCritical() << DBG_HEADER << "START TIME" << startTime.toString(Qt::ISODate);
|
|
||||||
|
|
||||||
if (startTime >= from && startTime <= until) {
|
if (startTime >= from && startTime <= until) {
|
||||||
QDateTime const end = start.addSecs(netto_parking_time*60);
|
QDateTime const end = start.addSecs(netto_parking_time*60);
|
||||||
|
|
||||||
//qCritical() << DBG_HEADER << "END-DATE-TIME" << end.toString(Qt::ISODate);
|
|
||||||
|
|
||||||
QTime const endTime = end.time();
|
QTime const endTime = end.time();
|
||||||
if (endTime <= until && start.date().dayOfWeek() == end.date().dayOfWeek()) {
|
if (endTime <= until && start.date().dayOfWeek() == end.date().dayOfWeek()) {
|
||||||
qCritical() << DBG_HEADER;
|
qCritical() << DBG_HEADER;
|
||||||
@ -961,29 +951,28 @@ CalcState Calculator::isParkingAllowedForWeekDay(Configuration const *cfg,
|
|||||||
ATBTimeRange s = cfg->TimeRange.find(pop_carry_over_start_time_range)->second;
|
ATBTimeRange s = cfg->TimeRange.find(pop_carry_over_start_time_range)->second;
|
||||||
ATBTimeRange e = cfg->TimeRange.find(pop_carry_over_end_time_range)->second;
|
ATBTimeRange e = cfg->TimeRange.find(pop_carry_over_end_time_range)->second;
|
||||||
|
|
||||||
//qCritical() << DBG_HEADER << "startTime" << startTime.toString(Qt::ISODate);
|
// qCritical() << DBG_HEADER
|
||||||
//qCritical() << DBG_HEADER << "s: time range from" << s.getTimeFrom().toString(Qt::ISODate);
|
// << "startTime" << startTime.toString(Qt::ISODate);
|
||||||
//qCritical() << DBG_HEADER << "s: time range until" << s.getTimeUntil().toString(Qt::ISODate);
|
|
||||||
|
|
||||||
if (startTime >= s.getTimeFrom() && startTime <= s.getTimeUntil()) {
|
if (startTime >= s.getTimeFrom() && startTime <= s.getTimeUntil()) {
|
||||||
|
|
||||||
QDateTime sd = start;
|
QDateTime sd = start;
|
||||||
sd.setTime(s.getTimeUntil());
|
sd.setTime(s.getTimeUntil());
|
||||||
|
|
||||||
//qCritical() << DBG_HEADER << "jumpFrom" << sd.toString(Qt::ISODate);
|
// qCritical() << DBG_HEADER << "jumpFrom" << sd.toString(Qt::ISODate);
|
||||||
|
|
||||||
QDateTime ed = start.addDays(1);
|
QDateTime ed = start.addDays(1);
|
||||||
ed.setTime(e.getTimeFrom());
|
ed.setTime(e.getTimeFrom());
|
||||||
|
|
||||||
//qCritical() << DBG_HEADER << "to" << ed.toString(Qt::ISODate);
|
// qCritical() << DBG_HEADER << "to" << ed.toString(Qt::ISODate);
|
||||||
|
|
||||||
int const jumpSecs = sd.secsTo(ed);
|
int const jumpSecs = sd.secsTo(ed);
|
||||||
|
|
||||||
//qCritical() << DBG_HEADER << "jumpSecs" << jumpSecs;
|
// qCritical() << DBG_HEADER << "jumpSecs" << jumpSecs;
|
||||||
|
|
||||||
QDateTime const end = start.addSecs(netto_parking_time*60 + jumpSecs);
|
QDateTime const end = start.addSecs(netto_parking_time*60 + jumpSecs);
|
||||||
|
|
||||||
//qCritical() << DBG_HEADER << "new end" << end.toString(Qt::ISODate);
|
// qCritical() << DBG_HEADER << "new end" << end.toString(Qt::ISODate);
|
||||||
|
|
||||||
if (end.time() <= e.getTimeUntil()) {
|
if (end.time() <= e.getTimeUntil()) {
|
||||||
|
|
||||||
@ -2129,10 +2118,6 @@ QList<int> Calculator::GetPriceSteps(Configuration * /*cfg*/) const {
|
|||||||
|
|
||||||
QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
|
QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
|
||||||
QDateTime const &s) const {
|
QDateTime const &s) const {
|
||||||
|
|
||||||
// TEST
|
|
||||||
// paymentOptionIndex = 1;
|
|
||||||
|
|
||||||
if (DBG_LEVEL >= DBG_DEBUG) {
|
if (DBG_LEVEL >= DBG_DEBUG) {
|
||||||
qCritical() << "(" << __func__ << ":" << __LINE__ << ") paymentOptionIndex:" << paymentOptionIndex;
|
qCritical() << "(" << __func__ << ":" << __LINE__ << ") paymentOptionIndex:" << paymentOptionIndex;
|
||||||
}
|
}
|
||||||
@ -2147,7 +2132,6 @@ QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
|
|||||||
m_timeSteps[paymentOptionIndex].clear();
|
m_timeSteps[paymentOptionIndex].clear();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// int diff = paymentOp m_timeSteps.size()
|
|
||||||
m_timeSteps.push_back(QList<int>());
|
m_timeSteps.push_back(QList<int>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2376,29 +2360,23 @@ QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
|
|||||||
search->second = duration;
|
search->second = duration;
|
||||||
} else
|
} else
|
||||||
if (duration.pun_interpolation_id == (int)ATBInterpolation::NO_INTERPOLATION) {
|
if (duration.pun_interpolation_id == (int)ATBInterpolation::NO_INTERPOLATION) {
|
||||||
#if 0
|
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") runtime in minutes (1):" << runtimeInMinutes;
|
||||||
qCritical() << "(" << __func__ << ":" << __LINE__ << ") runtime in minutes (1):" << runtimeInMinutes;
|
|
||||||
QDateTime s = start.addSecs(runtimeInMinutes * 60);
|
QDateTime s = start.addSecs(runtimeInMinutes * 60);
|
||||||
int const minutes = s.time().secsTo(carryOverStart) / 60;
|
int const minutes = s.time().secsTo(carryOverStart) / 60;
|
||||||
|
|
||||||
qCritical() << "(" << __func__ << ":" << __LINE__ << ") pun_id:" << duration.pun_id;
|
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") minutes:" << minutes;
|
||||||
qCritical() << "(" << __func__ << ":" << __LINE__ << ") minutes:" << minutes;
|
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") s:" << s.toString(Qt::ISODate);
|
||||||
qCritical() << "(" << __func__ << ":" << __LINE__ << ") start:" << start.toString(Qt::ISODate);
|
|
||||||
qCritical() << "(" << __func__ << ":" << __LINE__ << ") s:" << s.toString(Qt::ISODate);
|
|
||||||
if (minutes > 0) {
|
if (minutes > 0) {
|
||||||
runtimeInMinutes += minutes;
|
runtimeInMinutes += minutes;
|
||||||
previous.pun_duration += minutes;
|
previous.pun_duration += minutes;
|
||||||
|
|
||||||
qCritical() << "(" << __func__ << ":" << __LINE__ << ") previous:" << previous.pun_duration;
|
|
||||||
|
|
||||||
if (!m_timeSteps[paymentOptionIndex].isEmpty()) {
|
if (!m_timeSteps[paymentOptionIndex].isEmpty()) {
|
||||||
m_timeSteps[paymentOptionIndex].last() += minutes;
|
m_timeSteps[paymentOptionIndex].last() += minutes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
nextTimeStep = start.addSecs(runtimeInMinutes * 60);
|
nextTimeStep = start.addSecs(runtimeInMinutes * 60);
|
||||||
|
|
||||||
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") next time step:" << nextTimeStep.toString(Qt::ISODate);
|
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") next time step:" << nextTimeStep.toString(Qt::ISODate);
|
||||||
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") runtime in minutes (0):" << runtimeInMinutes;
|
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") runtime in minutes (0):" << runtimeInMinutes;
|
||||||
|
|
||||||
@ -2429,10 +2407,6 @@ QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
|
|||||||
}
|
}
|
||||||
|
|
||||||
duration.pun_duration = runtimeInMinutes;
|
duration.pun_duration = runtimeInMinutes;
|
||||||
|
|
||||||
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") pun_id:" << duration.pun_id;
|
|
||||||
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") pun_duration:" << duration.pun_duration;
|
|
||||||
|
|
||||||
m_timeSteps[paymentOptionIndex] << duration.pun_duration;
|
m_timeSteps[paymentOptionIndex] << duration.pun_duration;
|
||||||
search->second = duration;
|
search->second = duration;
|
||||||
} else {
|
} else {
|
||||||
@ -2497,8 +2471,6 @@ uint32_t Calculator::GetPriceForTimeStep(Configuration *cfg, int timeStep, int p
|
|||||||
|
|
||||||
uint32_t price = 0;
|
uint32_t price = 0;
|
||||||
|
|
||||||
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") timeStep" << timeStep;
|
|
||||||
|
|
||||||
for (auto[itr, rangeEnd] = cfg->PaymentRate.equal_range(pop_id); itr != rangeEnd; ++itr)
|
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 payment_unit_id = itr->second.pra_payment_unit_id;
|
||||||
@ -2513,10 +2485,6 @@ uint32_t Calculator::GetPriceForTimeStep(Configuration *cfg, int timeStep, int p
|
|||||||
price = (uint32_t)(itr->second.pra_price);
|
price = (uint32_t)(itr->second.pra_price);
|
||||||
}
|
}
|
||||||
|
|
||||||
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") price" << price;
|
|
||||||
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") pun_id" << cfg->Duration.find(payment_unit_id)->second.pun_id;
|
|
||||||
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") pun_duration" << pun_duration;
|
|
||||||
|
|
||||||
if (timeStep == pun_duration) {
|
if (timeStep == pun_duration) {
|
||||||
return price;
|
return price;
|
||||||
}
|
}
|
||||||
|
@ -778,16 +778,16 @@ bool Configuration::ParseJson(Configuration* cfg, const char* json)
|
|||||||
break;
|
break;
|
||||||
case MemberType::DailyTicketType:
|
case MemberType::DailyTicketType:
|
||||||
cfg->DailyTicket.insert(pair<int, ATBDailyTicket>(DailyTicket.daily_ticket_id, DailyTicket));
|
cfg->DailyTicket.insert(pair<int, ATBDailyTicket>(DailyTicket.daily_ticket_id, DailyTicket));
|
||||||
// qCritical() << DailyTicket;
|
qCritical() << DailyTicket;
|
||||||
DailyTicket.reset();
|
DailyTicket.reset();
|
||||||
break;
|
break;
|
||||||
case MemberType::CustomerType:
|
case MemberType::CustomerType:
|
||||||
cfg->Customer.insert(pair<int, ATBCustomer>(Customer.cust_id, Customer));
|
cfg->Customer.insert(pair<int, ATBCustomer>(Customer.cust_id, Customer));
|
||||||
// qCritical() << Customer;
|
qCritical() << Customer;
|
||||||
break;
|
break;
|
||||||
case MemberType::TimeBaseType:
|
case MemberType::TimeBaseType:
|
||||||
cfg->TimeBase.insert(pair<int, ATBTimeBase>(TimeBase.tbase_id, TimeBase));
|
cfg->TimeBase.insert(pair<int, ATBTimeBase>(TimeBase.tbase_id, TimeBase));
|
||||||
// qCritical() << TimeBase;
|
qCritical() << TimeBase;
|
||||||
break;
|
break;
|
||||||
case MemberType::TimeRangeType:
|
case MemberType::TimeRangeType:
|
||||||
cfg->TimeRange.insert(pair<int, ATBTimeRange>(TimeRange.time_range_id, TimeRange));
|
cfg->TimeRange.insert(pair<int, ATBTimeRange>(TimeRange.time_range_id, TimeRange));
|
||||||
@ -799,19 +799,19 @@ bool Configuration::ParseJson(Configuration* cfg, const char* json)
|
|||||||
break;
|
break;
|
||||||
case MemberType::ProductType:
|
case MemberType::ProductType:
|
||||||
cfg->TariffProduct.insert(pair<int, ATBTariffProduct>(TariffProduct.m_tariff_product_id, TariffProduct));
|
cfg->TariffProduct.insert(pair<int, ATBTariffProduct>(TariffProduct.m_tariff_product_id, TariffProduct));
|
||||||
// qCritical() << TariffProduct;
|
qCritical() << TariffProduct;
|
||||||
break;
|
break;
|
||||||
case MemberType::InterpolationType:
|
case MemberType::InterpolationType:
|
||||||
cfg->TariffInterpolations.insert(pair<int, ATBInterpolation>(TariffInterpolation.id, TariffInterpolation));
|
cfg->TariffInterpolations.insert(pair<int, ATBInterpolation>(TariffInterpolation.id, TariffInterpolation));
|
||||||
// qCritical() << TariffInterpolation;
|
qCritical() << TariffInterpolation;
|
||||||
break;
|
break;
|
||||||
case MemberType::PrepaidType:
|
case MemberType::PrepaidType:
|
||||||
cfg->TariffPrepaidOptions.insert(pair<int, ATBPrepaid>(TariffPrepaidOption.id, TariffPrepaidOption));
|
cfg->TariffPrepaidOptions.insert(pair<int, ATBPrepaid>(TariffPrepaidOption.id, TariffPrepaidOption));
|
||||||
// qCritical() << TariffPrepaidOption;
|
qCritical() << TariffPrepaidOption;
|
||||||
break;
|
break;
|
||||||
case MemberType::CarryOverType:
|
case MemberType::CarryOverType:
|
||||||
cfg->TariffCarryOverOptions.insert(pair<int, ATBCarryOver>(TariffCarryOver.id, TariffCarryOver));
|
cfg->TariffCarryOverOptions.insert(pair<int, ATBCarryOver>(TariffCarryOver.id, TariffCarryOver));
|
||||||
// qCritical() << TariffCarryOver;
|
qCritical() << TariffCarryOver;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -1196,7 +1196,7 @@ std::optional<QDateTime> Configuration::prepaidStart(QDateTime const &start, int
|
|||||||
if (prepaid_option.has_value()) {
|
if (prepaid_option.has_value()) {
|
||||||
ATBPrepaid prepaid = prepaid_option.value();
|
ATBPrepaid prepaid = prepaid_option.value();
|
||||||
|
|
||||||
if (prepaid.never == false) {
|
if (prepaid.anytime == false && prepaid.never == false) {
|
||||||
// start: 22:00, end: 08:00
|
// start: 22:00, end: 08:00
|
||||||
QTime prepaidStart = TariffPrepaidOptions.find(prepaid_option_id)->second.static_start;
|
QTime prepaidStart = TariffPrepaidOptions.find(prepaid_option_id)->second.static_start;
|
||||||
QTime prepaidEnd = TariffPrepaidOptions.find(prepaid_option_id)->second.static_end;
|
QTime prepaidEnd = TariffPrepaidOptions.find(prepaid_option_id)->second.static_end;
|
||||||
|
213
main/main.cpp
213
main/main.cpp
@ -51,7 +51,6 @@ extern "C" char* strptime(const char* s,
|
|||||||
#define SEXTEN (0)
|
#define SEXTEN (0)
|
||||||
#define SCHNALS_LEITER_KIRCHL (1)
|
#define SCHNALS_LEITER_KIRCHL (1)
|
||||||
#define SCHNALS_STAUMAUER (SCHNALS_LEITER_KIRCHL)
|
#define SCHNALS_STAUMAUER (SCHNALS_LEITER_KIRCHL)
|
||||||
#define VALSER_ALM (0)
|
|
||||||
|
|
||||||
#if NEUHAUSER_KIRCHDORF==1
|
#if NEUHAUSER_KIRCHDORF==1
|
||||||
static bool test_neuhauser_kirchdorf(int step, double cost) {
|
static bool test_neuhauser_kirchdorf(int step, double cost) {
|
||||||
@ -718,7 +717,7 @@ int main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//for (int minutes = 0; minutes < 1440; ++minutes) {
|
//for (int minutes = 0; minutes < 1440; ++minutes) {
|
||||||
for (int minutes = 1020; minutes <= 1020; minutes += 1) {
|
for (int minutes = 420; minutes <= 420; minutes += 1) {
|
||||||
QDateTime start = s.addSecs(minutes * 60);
|
QDateTime start = s.addSecs(minutes * 60);
|
||||||
|
|
||||||
qCritical() << "start" << start.toString(Qt::ISODate);
|
qCritical() << "start" << start.toString(Qt::ISODate);
|
||||||
@ -737,24 +736,6 @@ int main() {
|
|||||||
effectiveStart.setTime(QTime(7, 0, 0)); // next day
|
effectiveStart.setTime(QTime(7, 0, 0)); // next day
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 1
|
|
||||||
for (int i = 200; i <= 200; i += 10) {
|
|
||||||
cost = i;
|
|
||||||
|
|
||||||
if ((cs = compute_duration_for_parking_ticket(&cfg, start, cost, end))) { // return value
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cs) {
|
|
||||||
qCritical() << "ERROR CalcState" << cs.toString() << endl;
|
|
||||||
} else {
|
|
||||||
// qCritical() << cs.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
qCritical() << "start" << start.toString(Qt::ISODate) << "< cost" << cost
|
|
||||||
<< "> end" << end.toString(Qt::ISODate);
|
|
||||||
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
for (int i = 700; i <= 1400; i += 700) {
|
for (int i = 700; i <= 1400; i += 700) {
|
||||||
//for (int i = 2100; i <= 2100; i += 10) {
|
//for (int i = 2100; i <= 2100; i += 10) {
|
||||||
cost = i;
|
cost = i;
|
||||||
@ -771,202 +752,16 @@ int main() {
|
|||||||
qCritical() << "start" << start.toString(Qt::ISODate) << "< cost" << cost
|
qCritical() << "start" << start.toString(Qt::ISODate) << "< cost" << cost
|
||||||
<< "> end" << end.toString(Qt::ISODate);
|
<< "> end" << end.toString(Qt::ISODate);
|
||||||
}
|
}
|
||||||
#endif
|
for (int i = 60; i <= 60; i += 6) {
|
||||||
#if 0
|
|
||||||
|
|
||||||
start = QDateTime::currentDateTime();
|
|
||||||
start.setTime(QTime(9, 57, 0));
|
|
||||||
|
|
||||||
for (int i = 66; i <= 66; i += 6) {
|
|
||||||
|
|
||||||
QDateTime end;
|
QDateTime end;
|
||||||
struct price_t price;
|
struct price_t price;
|
||||||
cs = compute_price_for_parking_ticket(&cfg, start, i, end, &price);
|
cs = compute_price_for_parking_ticket(&cfg, start, 60, end, &price);
|
||||||
|
|
||||||
qCritical() << "start" << start.toString(Qt::ISODate) << "end" << end.toString(Qt::ISODate)
|
qCritical() << "start" << start.toString(Qt::ISODate) << "end" << end.toString(Qt::ISODate);
|
||||||
<< "price" << price.netto;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if VALSER_ALM==1
|
|
||||||
std::ifstream input;
|
|
||||||
int pop_min_time;
|
|
||||||
int pop_max_time;
|
|
||||||
int pop_min_price;
|
|
||||||
int pop_max_price;
|
|
||||||
int pop_daily_card_price;
|
|
||||||
|
|
||||||
int zone = 2;
|
|
||||||
|
|
||||||
if (zone == 1) {
|
|
||||||
input.open("/opt/ptu5/opt/customer_502/etc/psa_tariff/tariff01.json");
|
|
||||||
}
|
|
||||||
if (zone == 2) {
|
|
||||||
input.open("/opt/ptu5/opt/customer_502/etc/psa_tariff/tariff02.json");
|
|
||||||
}
|
|
||||||
if (zone == 3) {
|
|
||||||
input.open("/opt/ptu5/opt/customer_502/etc/psa_tariff/tariff03.json");
|
|
||||||
}
|
|
||||||
|
|
||||||
std::stringstream sstr;
|
|
||||||
while(input >> sstr.rdbuf());
|
|
||||||
std::string json(sstr.str());
|
|
||||||
|
|
||||||
Configuration cfg;
|
|
||||||
|
|
||||||
bool isParsed = cfg.ParseJson(&cfg, json.c_str());
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
if (isParsed) {
|
|
||||||
pop_min_time = get_minimal_parkingtime(&cfg);
|
|
||||||
pop_max_time = get_maximal_parkingtime(&cfg);
|
|
||||||
pop_min_price = get_minimal_parkingprice(&cfg);
|
|
||||||
pop_max_price = get_maximal_parkingprice(&cfg);
|
|
||||||
pop_daily_card_price = cfg.getPaymentOptions().pop_daily_card_price;
|
|
||||||
|
|
||||||
qCritical() << " pop_min_time: " << pop_min_time;
|
|
||||||
qCritical() << " pop_max_time: " << pop_max_time;
|
|
||||||
qCritical() << " pop_min_price: " << pop_min_price;
|
|
||||||
qCritical() << " pop_max_price: " << pop_max_price;
|
|
||||||
|
|
||||||
//QDateTime start = QDateTime::currentDateTime();
|
|
||||||
//start.setTime(QTime(12, 0, 0));
|
|
||||||
//QList<int> timeSteps = Calculator::GetInstance().GetTimeSteps(&cfg, 0, start);
|
|
||||||
//qCritical() << "TimeSteps" << timeSteps;
|
|
||||||
//return 0;
|
|
||||||
|
|
||||||
if (zone == 2) {
|
|
||||||
//int minParkingTime = get_minimal_parkingtime(&cfg);
|
|
||||||
QList<int> timeSteps = Calculator::GetInstance().GetTimeSteps(&cfg);
|
|
||||||
qCritical() << timeSteps;
|
|
||||||
int Down = 0;
|
|
||||||
int Up = 1;
|
|
||||||
|
|
||||||
QDateTime const start = QDateTime::currentDateTime();
|
|
||||||
int paymentOptionIndex = cfg.getPaymentOptionIndex(start);
|
|
||||||
|
|
||||||
if (paymentOptionIndex < 0) {
|
|
||||||
qCritical() << "ERROR paymentOptionIndex" << paymentOptionIndex
|
|
||||||
<< "< 0 for start" << start.toString(Qt::ISODate);
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
QSet<uint32_t> const prices{600, 1200, 1800, 2400, 3000, 3600, 4200};
|
|
||||||
|
|
||||||
|
|
||||||
for (int i=0; i<timeSteps.size(); ++i) {
|
|
||||||
int nextTimeStep = compute_next_timestep(&cfg, timeSteps.at(i), Up);
|
|
||||||
qCritical() << "nextTimeStep" << nextTimeStep;
|
|
||||||
|
|
||||||
uint32_t price = Calculator::GetInstance().GetPriceForTimeStep(&cfg, timeSteps.at(i), paymentOptionIndex);
|
|
||||||
|
|
||||||
qCritical() << "price for" << timeSteps.at(i) << ": " << price;
|
|
||||||
|
|
||||||
uint32_t duration = Calculator::GetInstance().GetDurationForPrice(&cfg, price);
|
|
||||||
|
|
||||||
qCritical() << "duration for price" << price << "duration: " << duration;
|
|
||||||
|
|
||||||
if (!prices.contains(price)) {
|
|
||||||
qCritical() << "ERROR nextTimeStep relative to start:"
|
|
||||||
<< duration << start.addSecs(duration * 60).toString(Qt::ISODate)
|
|
||||||
<< "(price so far:" << price << ")";
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
qCritical() << "nextTimeStep relative to start:"
|
|
||||||
<< duration << start.addSecs(duration * 60).toString(Qt::ISODate)
|
|
||||||
<< "(price so far:" << price << ")";
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (zone == 3) {
|
|
||||||
int price;
|
|
||||||
QDateTime productStart;
|
|
||||||
QDateTime productEnd;
|
|
||||||
QDateTime start = QDateTime::currentDateTime();
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
start.setTime(QTime(0, 0, 0));
|
|
||||||
price = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET, start);
|
|
||||||
qCritical() << QString("line=%1 price (%2) :")
|
|
||||||
.arg(__LINE__)
|
|
||||||
.arg(start.time().toString(Qt::ISODate)) << price;
|
|
||||||
|
|
||||||
price = get_minimal_parkingprice(&cfg, PERMIT_TYPE::DAY_TICKET, 0, start);
|
|
||||||
qCritical() << QString("line=%1 get_minimal_parkingprice:").arg(__LINE__) << price;
|
|
||||||
|
|
||||||
start.setTime(QTime(14, 0, 0));
|
|
||||||
productStart = productEnd = QDateTime();
|
|
||||||
price = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET, start, &productStart, &productEnd);
|
|
||||||
qCritical() << QString("line=%1 price (%2-%3) :")
|
|
||||||
.arg(__LINE__)
|
|
||||||
.arg(productStart.time().toString(Qt::ISODate))
|
|
||||||
.arg(productEnd.time().toString(Qt::ISODate))
|
|
||||||
<< price;
|
|
||||||
|
|
||||||
price = get_minimal_parkingprice(&cfg, PERMIT_TYPE::DAY_TICKET, 0, start);
|
|
||||||
qCritical() << QString("line=%1 get_minimal_parkingprice:").arg(__LINE__)
|
|
||||||
<< price;
|
|
||||||
|
|
||||||
price = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET, start);
|
|
||||||
qCritical() << QString("line=%1 price:").arg(__LINE__) << price;
|
|
||||||
|
|
||||||
start.setTime(QTime(15, 0, 0));
|
|
||||||
productStart = productEnd = QDateTime();
|
|
||||||
price = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET, start, &productStart, &productEnd);
|
|
||||||
qCritical() << QString("line=%1 price (%2-%3) :")
|
|
||||||
.arg(__LINE__)
|
|
||||||
.arg(productStart.time().toString(Qt::ISODate))
|
|
||||||
.arg(productEnd.time().toString(Qt::ISODate))
|
|
||||||
<< price;
|
|
||||||
|
|
||||||
price = get_minimal_parkingprice(&cfg, PERMIT_TYPE::DAY_TICKET, 0, start);
|
|
||||||
qCritical() << QString("line=%1 get_minimal_parkingprice:").arg(__LINE__) << price;
|
|
||||||
|
|
||||||
start.setTime(QTime(16, 0, 0));
|
|
||||||
productStart = productEnd = QDateTime();
|
|
||||||
price = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET, start, &productStart, &productEnd);
|
|
||||||
qCritical() << QString("line=%1 price (%2-%3) :")
|
|
||||||
.arg(__LINE__)
|
|
||||||
.arg(productStart.time().toString(Qt::ISODate))
|
|
||||||
.arg(productEnd.time().toString(Qt::ISODate))
|
|
||||||
<< price;
|
|
||||||
|
|
||||||
price = get_minimal_parkingprice(&cfg, PERMIT_TYPE::DAY_TICKET, 0, start);
|
|
||||||
qCritical() << QString("line=%1 get_minimal_parkingprice:").arg(__LINE__) << price;
|
|
||||||
|
|
||||||
start.setTime(QTime(17, 0, 0));
|
|
||||||
productStart = productEnd = QDateTime();
|
|
||||||
price = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET, start, &productStart, &productEnd);
|
|
||||||
qCritical() << QString("line=%1 price (%2-%3) :")
|
|
||||||
.arg(__LINE__)
|
|
||||||
.arg(productStart.time().toString(Qt::ISODate))
|
|
||||||
.arg(productEnd.time().toString(Qt::ISODate))
|
|
||||||
<< price;
|
|
||||||
|
|
||||||
//price = get_minimal_parkingprice(&cfg, PERMIT_TYPE::DAY_TICKET, 0, start);
|
|
||||||
//qCritical() << QString("line=%1 get_minimal_parkingprice:").arg(__LINE__) << price;
|
|
||||||
|
|
||||||
//price = get_minimal_parkingprice(&cfg, PERMIT_TYPE::DAY_TICKET);
|
|
||||||
//qCritical() << QString("line=%1 get_minimal_parkingprice:").arg(__LINE__) << price;
|
|
||||||
|
|
||||||
#else
|
|
||||||
for (int h = 0; h < 24; ++h) {
|
|
||||||
start.setTime(QTime(h, 0, 0));
|
|
||||||
productStart = productEnd = QDateTime();
|
|
||||||
price = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET, start, &productStart, &productEnd);
|
|
||||||
qCritical() << QString("line=%1 %2 price (%3-%4) :")
|
|
||||||
.arg(__LINE__)
|
|
||||||
.arg(start.time().toString(Qt::ISODate))
|
|
||||||
.arg(productStart.time().toString(Qt::ISODate))
|
|
||||||
.arg(productEnd.time().toString(Qt::ISODate))
|
|
||||||
<< price;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user