Added parsing for tariff05.json (bad neuenarh (249))
This commit is contained in:
		@@ -10,6 +10,9 @@
 | 
			
		||||
#include "tariff_global_defines.h"
 | 
			
		||||
#include "tariff_settings.h"
 | 
			
		||||
#include "tariff_carryover_settings.h"
 | 
			
		||||
#include "atb_time.h"
 | 
			
		||||
#include "tariff_prepaid.h"
 | 
			
		||||
#include "tariff_carryover.h"
 | 
			
		||||
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
@@ -61,6 +64,405 @@ ATBWeekDay parseWeekDay(Configuration &cfg,
 | 
			
		||||
    ATBWeekDay WeekDay;
 | 
			
		||||
    QTime start, end, parking_time_limit, about_to_exceed_limit;
 | 
			
		||||
    ATBTariffCarryOverSettings::ParkingTimeLimitChecker parkTimeLimitChecker;
 | 
			
		||||
    QDate const &d = QDate::fromString(innerObjName, Qt::ISODate);
 | 
			
		||||
    if (innerObjName == QString("default") ||
 | 
			
		||||
       (!d.isNull() && d.isValid())) { // special day, given in date-format
 | 
			
		||||
        // start with new implementation of tariff-calculator
 | 
			
		||||
        // see for instance: bad neuenahr (249), Zone5
 | 
			
		||||
 | 
			
		||||
        // qCritical() << __func__ << ":" << __LINE__ << innerObjName;
 | 
			
		||||
 | 
			
		||||
        if (k->value.IsObject()) {
 | 
			
		||||
            auto obj = k->value.GetObject();
 | 
			
		||||
            for (auto m = obj.MemberBegin(); m != obj.MemberEnd(); ++m) {
 | 
			
		||||
                QString const &name = m->name.GetString();
 | 
			
		||||
                if (name == "payment_settings") {
 | 
			
		||||
                    if (m->value.IsArray()) {
 | 
			
		||||
                        auto payment = m->value.GetArray();
 | 
			
		||||
                        if (payment.Size() == 0) {
 | 
			
		||||
                            qCritical() << __func__ << ":" << __LINE__ << "no payment settings for" << weekDayName;
 | 
			
		||||
                        } else {
 | 
			
		||||
                            for (rapidjson::SizeType j = 0; j < payment.Size(); ++j) {
 | 
			
		||||
                                if (payment[j].IsObject()) {
 | 
			
		||||
                                    auto paymentSetting = payment[j].GetObject();
 | 
			
		||||
                                    for (auto n = paymentSetting.MemberBegin(); n != paymentSetting.MemberEnd(); ++n) {
 | 
			
		||||
                                        QString const &name = QString::fromStdString(n->name.GetString());
 | 
			
		||||
                                        if (name == "min_time") {
 | 
			
		||||
                                            if (n->value.IsInt()) { min_time = n->value.GetInt(); }
 | 
			
		||||
                                        } else if (name == "max_time") {
 | 
			
		||||
                                            if (n->value.IsInt()) { max_time = n->value.GetInt(); }
 | 
			
		||||
                                        } else if (name == "min_price") {
 | 
			
		||||
                                            if (n->value.IsInt()) { min_price = n->value.GetInt(); }
 | 
			
		||||
                                        } else if (name == "max_price") {
 | 
			
		||||
                                            if (n->value.IsInt()) { max_price = n->value.GetInt(); }
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                } else
 | 
			
		||||
                if (name == "prepaid_settings") {
 | 
			
		||||
                    if (m->value.IsArray()) {
 | 
			
		||||
                        auto prepaid = m->value.GetArray();
 | 
			
		||||
                        if (prepaid.Size() == 0) {
 | 
			
		||||
                            qCritical() << __func__ << ":" << __LINE__ << "no prepaid-settings for" << weekDayName;
 | 
			
		||||
                        } else {
 | 
			
		||||
                            ATBTariffPrepaid TariffPrepaid;
 | 
			
		||||
                            for (rapidjson::SizeType j = 0; j < prepaid.Size(); ++j) {
 | 
			
		||||
                                if (prepaid[j].IsObject()) {
 | 
			
		||||
                                    auto prepaidSetting = prepaid[j].GetObject();
 | 
			
		||||
                                    for (auto n = prepaidSetting.MemberBegin(); n != prepaidSetting.MemberEnd(); ++n) {
 | 
			
		||||
                                        QString const &name = QString::fromStdString(n->name.GetString());
 | 
			
		||||
                                        if (name == "prepaid_ranges") {
 | 
			
		||||
                                            if (n->value.IsArray()) {
 | 
			
		||||
                                                auto prepaidRanges = n->value.GetArray();
 | 
			
		||||
                                                if (prepaidRanges.Size() == 0) {
 | 
			
		||||
                                                    qCritical() << __func__ << ":" << __LINE__ << "no prepaid-ranges for" << weekDayName;
 | 
			
		||||
                                                } else {
 | 
			
		||||
                                                    QString prepaidStartStr;
 | 
			
		||||
                                                    QString prepaidEndStr;
 | 
			
		||||
                                                    QString prepaidIf;
 | 
			
		||||
                                                    int prepaidDuration = -1;
 | 
			
		||||
                                                    for (rapidjson::SizeType i = 0; i < prepaidRanges.Size(); ++i) {
 | 
			
		||||
                                                        if (prepaidRanges[j].IsObject()) {
 | 
			
		||||
                                                            auto prepaidRange = prepaidRanges[i].GetObject();
 | 
			
		||||
                                                            for (auto r = prepaidRange.MemberBegin(); r != prepaidRange.MemberEnd(); ++r) {
 | 
			
		||||
                                                                QString const &memName = QString::fromStdString(r->name.GetString());
 | 
			
		||||
                                                                if (memName == "prepaid_id") {
 | 
			
		||||
                                                                    if (r->value.IsInt()) {
 | 
			
		||||
                                                                        TariffPrepaid.m_id = r->value.GetInt();
 | 
			
		||||
                                                                    } else {
 | 
			
		||||
                                                                        qCritical() << __func__ << ":" << __LINE__ << "prepaidId not an integer";
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "prepaid_duration") {
 | 
			
		||||
                                                                    if (r->value.IsInt()) {
 | 
			
		||||
                                                                        prepaidDuration = r->value.GetInt();
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "prepaid_start") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        prepaidStartStr = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "prepaid_end") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        prepaidEndStr = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "prepaid_if") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        prepaidIf = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else {
 | 
			
		||||
                                                                    qCritical() << __func__ << ":" << __LINE__ << "WARNING unknown prepaid setting" << memName;
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                        }
 | 
			
		||||
 | 
			
		||||
                                                        if (!prepaidStartStr.isEmpty() && !prepaidEndStr.isEmpty() && prepaidDuration != -1) {
 | 
			
		||||
                                                            ATBTime prepaidStart(prepaidStartStr);
 | 
			
		||||
                                                            ATBTime prepaidEnd(prepaidEndStr);
 | 
			
		||||
                                                            if (prepaidStart.isValid() && prepaidEnd.isValid()) {
 | 
			
		||||
                                                                TariffPrepaid.m_range = TimeRange(prepaidStart, prepaidEnd, prepaidDuration);
 | 
			
		||||
                                                                TariffPrepaid.m_weekDay = weekDayName;
 | 
			
		||||
                                                                if (!d.isNull() && d.isValid()) {
 | 
			
		||||
                                                                    TariffPrepaid.m_date = d;
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                                TariffPrepaid.setPrepaidIf(prepaidIf);
 | 
			
		||||
 | 
			
		||||
                                                                qCritical() << TariffPrepaid;
 | 
			
		||||
 | 
			
		||||
                                                                cfg.TariffPrepaids.insert(std::pair<int, ATBTariffPrepaid>(weekDay, TariffPrepaid));
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                        }
 | 
			
		||||
                                                    }
 | 
			
		||||
                                                }
 | 
			
		||||
                                            }
 | 
			
		||||
                                        } else {
 | 
			
		||||
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else
 | 
			
		||||
                if (name == "carry_over_settings") {
 | 
			
		||||
                    if (m->value.IsArray()) {
 | 
			
		||||
                        auto carryOver = m->value.GetArray();
 | 
			
		||||
                        if (carryOver.Size() == 0) {
 | 
			
		||||
                            qCritical() << __func__ << ":" << __LINE__ << "no carry-over-settings for" << weekDayName;
 | 
			
		||||
                        } else {
 | 
			
		||||
                            ATBTariffCarryOver TariffCarryOver;
 | 
			
		||||
                            for (rapidjson::SizeType j = 0; j < carryOver.Size(); ++j) {
 | 
			
		||||
                                if (carryOver[j].IsObject()) {
 | 
			
		||||
                                    auto carryOverSetting = carryOver[j].GetObject();
 | 
			
		||||
                                    for (auto n = carryOverSetting.MemberBegin(); n != carryOverSetting.MemberEnd(); ++n) {
 | 
			
		||||
                                        QString const &name = QString::fromStdString(n->name.GetString());
 | 
			
		||||
                                        if (name == "carry_over_ranges") {
 | 
			
		||||
                                            if (n->value.IsArray()) {
 | 
			
		||||
                                                auto carryOverRanges = n->value.GetArray();
 | 
			
		||||
                                                if (carryOverRanges.Size() == 0) {
 | 
			
		||||
                                                    qCritical() << __func__ << ":" << __LINE__ << "no carry-over-ranges for" << weekDayName;
 | 
			
		||||
                                                } else {
 | 
			
		||||
                                                    QString carryOverStartStr;
 | 
			
		||||
                                                    QString carryOverEndStr;
 | 
			
		||||
                                                    QString carryOverIf;
 | 
			
		||||
                                                    int carryOverDuration = -1;
 | 
			
		||||
                                                    for (rapidjson::SizeType i = 0; i < carryOverRanges.Size(); ++i) {
 | 
			
		||||
                                                        if (carryOverRanges[j].IsObject()) {
 | 
			
		||||
                                                            auto carryOverRange = carryOverRanges[i].GetObject();
 | 
			
		||||
                                                            for (auto r = carryOverRange.MemberBegin(); r != carryOverRange.MemberEnd(); ++r) {
 | 
			
		||||
                                                                QString const &memName = QString::fromStdString(r->name.GetString());
 | 
			
		||||
                                                                if (memName == "carry_over_id") {
 | 
			
		||||
                                                                    if (r->value.IsInt()) {
 | 
			
		||||
                                                                        TariffCarryOver.m_id = r->value.GetInt();
 | 
			
		||||
                                                                    } else {
 | 
			
		||||
                                                                        qCritical() << __func__ << ":" << __LINE__ << "carryOverId not an integer";
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "carry_over_duration") {
 | 
			
		||||
                                                                    if (r->value.IsInt()) {
 | 
			
		||||
                                                                        carryOverDuration = r->value.GetInt();
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "carry_over_start") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        carryOverStartStr = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "carry_over_end") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        carryOverEndStr = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "carry_over_if") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        carryOverIf = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else {
 | 
			
		||||
                                                                    qCritical() << __func__ << ":" << __LINE__ << "WARNING unknown carry-over setting" << memName;
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                        }
 | 
			
		||||
 | 
			
		||||
                                                        if (!carryOverStartStr.isEmpty() && !carryOverEndStr.isEmpty() && carryOverDuration != -1) {
 | 
			
		||||
                                                            ATBTime carryOverStart(carryOverStartStr);
 | 
			
		||||
                                                            ATBTime carryOverEnd(carryOverEndStr);
 | 
			
		||||
                                                            if (carryOverStart.isValid() && carryOverEnd.isValid()) {
 | 
			
		||||
                                                                TariffCarryOver.m_range = TimeRange(carryOverStart, carryOverEnd, carryOverDuration);
 | 
			
		||||
                                                                TariffCarryOver.m_weekDay = weekDayName;
 | 
			
		||||
                                                                if (!d.isNull() && d.isValid()) {
 | 
			
		||||
                                                                    TariffCarryOver.m_date = d;
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                                if (!carryOverIf.isEmpty()) {
 | 
			
		||||
                                                                    TariffCarryOver.setCarryOverIf(carryOverIf);
 | 
			
		||||
                                                                }
 | 
			
		||||
 | 
			
		||||
                                                                // qCritical() << TariffCarryOver;
 | 
			
		||||
 | 
			
		||||
                                                                cfg.TariffCarryOvers.insert(std::pair<int, ATBTariffCarryOver>(weekDay, TariffCarryOver));
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                        }
 | 
			
		||||
                                                    }
 | 
			
		||||
                                                }
 | 
			
		||||
                                            }
 | 
			
		||||
                                        } else {
 | 
			
		||||
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else
 | 
			
		||||
                if (name == "service_settings") {
 | 
			
		||||
                    ATBTariffService TariffService;
 | 
			
		||||
                    if (m->value.IsArray()) {
 | 
			
		||||
                        auto service = m->value.GetArray();
 | 
			
		||||
                        if (service.Size() == 0) {
 | 
			
		||||
                            qCritical() << __func__ << ":" << __LINE__ << "no service settings for" << weekDayName;
 | 
			
		||||
                        } else {
 | 
			
		||||
                            for (rapidjson::SizeType j = 0; j < service.Size(); ++j) {
 | 
			
		||||
                                if (service[j].IsObject()) {
 | 
			
		||||
                                    auto serviceSetting = service[j].GetObject();
 | 
			
		||||
                                    for (auto n = serviceSetting.MemberBegin(); n != serviceSetting.MemberEnd(); ++n) {
 | 
			
		||||
                                        QString const &name = QString::fromStdString(n->name.GetString());
 | 
			
		||||
                                        if (name == "service_ranges") {
 | 
			
		||||
                                            if (n->value.IsArray()) {
 | 
			
		||||
                                                auto serviceRanges = n->value.GetArray();
 | 
			
		||||
                                                if (serviceRanges.Size() == 0) {
 | 
			
		||||
                                                    qCritical() << __func__ << ":" << __LINE__ << "no service ranges for" << weekDayName;
 | 
			
		||||
                                                } else {
 | 
			
		||||
                                                    QString serviceStartStr;
 | 
			
		||||
                                                    QString serviceEndStr;
 | 
			
		||||
                                                    QString serviceIf;
 | 
			
		||||
                                                    int serviceDuration = -1;
 | 
			
		||||
                                                    for (rapidjson::SizeType i = 0; i < serviceRanges.Size(); ++i) {
 | 
			
		||||
                                                        if (serviceRanges[j].IsObject()) {
 | 
			
		||||
                                                            auto serviceRange = serviceRanges[i].GetObject();
 | 
			
		||||
                                                            for (auto r = serviceRange.MemberBegin(); r != serviceRange.MemberEnd(); ++r) {
 | 
			
		||||
                                                                QString const &memName = QString::fromStdString(r->name.GetString());
 | 
			
		||||
                                                                if (memName == "service_id") {
 | 
			
		||||
                                                                    if (r->value.IsInt()) {
 | 
			
		||||
                                                                        TariffService.m_id = r->value.GetInt();
 | 
			
		||||
                                                                    } else {
 | 
			
		||||
                                                                        qCritical() << __func__ << ":" << __LINE__ << "serviceId not an integer";
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "service_duration") {
 | 
			
		||||
                                                                    if (r->value.IsInt()) {
 | 
			
		||||
                                                                        serviceDuration = r->value.GetInt();
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "service_start") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        serviceStartStr = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "service_end") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        serviceEndStr = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "service_if") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        serviceIf = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
 | 
			
		||||
                                                                } else {
 | 
			
		||||
                                                                    qCritical() << __func__ << ":" << __LINE__ << "WARNING unknown service setting" << memName;
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                        }
 | 
			
		||||
 | 
			
		||||
                                                        if (!serviceStartStr.isEmpty() && !serviceEndStr.isEmpty() && serviceDuration != -1) {
 | 
			
		||||
                                                            ATBTime serviceStart(serviceStartStr);
 | 
			
		||||
                                                            ATBTime serviceEnd(serviceEndStr);
 | 
			
		||||
                                                            if (serviceStart.isValid() && serviceEnd.isValid()) {
 | 
			
		||||
                                                                TariffService.m_range = TimeRange(serviceStart, serviceEnd, serviceDuration);
 | 
			
		||||
                                                                TariffService.m_weekDay = weekDayName;
 | 
			
		||||
                                                                if (!d.isNull() && d.isValid()) {
 | 
			
		||||
                                                                    TariffService.m_date = d;
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                                if (!serviceIf.isEmpty()) {
 | 
			
		||||
                                                                    TariffService.setServiceIf(serviceIf);
 | 
			
		||||
                                                                }
 | 
			
		||||
 | 
			
		||||
                                                                // qCritical() << TariffService;
 | 
			
		||||
 | 
			
		||||
                                                                cfg.TariffServices.insert(std::pair<int, ATBTariffService>(weekDay, TariffService));
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                        }
 | 
			
		||||
                                                    }
 | 
			
		||||
                                                }
 | 
			
		||||
                                            }
 | 
			
		||||
                                        } else {
 | 
			
		||||
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else
 | 
			
		||||
                if (name == "out_of_service_settings") {
 | 
			
		||||
                    ATBTariffOutOfService TariffOutOfService;
 | 
			
		||||
                    if (m->value.IsArray()) {
 | 
			
		||||
                        auto outOfService = m->value.GetArray();
 | 
			
		||||
                        if (outOfService.Size() == 0) {
 | 
			
		||||
                            qCritical() << __func__ << ":" << __LINE__ << "no out of service settings for" << weekDayName;
 | 
			
		||||
                        } else {
 | 
			
		||||
                            for (rapidjson::SizeType j = 0; j < outOfService.Size(); ++j) {
 | 
			
		||||
                                if (outOfService[j].IsObject()) {
 | 
			
		||||
                                    auto outOfServiceSetting = outOfService[j].GetObject();
 | 
			
		||||
                                    for (auto n = outOfServiceSetting.MemberBegin(); n != outOfServiceSetting.MemberEnd(); ++n) {
 | 
			
		||||
                                        QString const &name = QString::fromStdString(n->name.GetString());
 | 
			
		||||
                                        if (name == "out_of_service_ranges") {
 | 
			
		||||
                                            if (n->value.IsArray()) {
 | 
			
		||||
                                                auto outOfServiceRanges = n->value.GetArray();
 | 
			
		||||
                                                if (outOfServiceRanges.Size() == 0) {
 | 
			
		||||
                                                    qCritical() << __func__ << ":" << __LINE__ << "no out of service ranges for" << weekDayName;
 | 
			
		||||
                                                } else {
 | 
			
		||||
                                                    QString outOfServiceStartStr;
 | 
			
		||||
                                                    QString outOfServiceEndStr;
 | 
			
		||||
                                                    QString outOfServiceIf;
 | 
			
		||||
                                                    int outOfServiceDuration = -1;
 | 
			
		||||
                                                    for (rapidjson::SizeType i = 0; i < outOfServiceRanges.Size(); ++i) {
 | 
			
		||||
                                                        if (outOfServiceRanges[j].IsObject()) {
 | 
			
		||||
                                                            auto outOfServiceRange = outOfServiceRanges[i].GetObject();
 | 
			
		||||
                                                            for (auto r = outOfServiceRange.MemberBegin(); r != outOfServiceRange.MemberEnd(); ++r) {
 | 
			
		||||
                                                                QString const &memName = QString::fromStdString(r->name.GetString());
 | 
			
		||||
                                                                if (memName == "out_of_service_id") {
 | 
			
		||||
                                                                    if (r->value.IsInt()) {
 | 
			
		||||
                                                                        TariffOutOfService.m_id = r->value.GetInt();
 | 
			
		||||
                                                                    } else {
 | 
			
		||||
                                                                        qCritical() << __func__ << ":" << __LINE__ << "outOfServiceId not an integer";
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "out_of_service_duration") {
 | 
			
		||||
                                                                    if (r->value.IsInt()) {
 | 
			
		||||
                                                                        outOfServiceDuration = r->value.GetInt();
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "out_of_service_start") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        outOfServiceStartStr = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "out_of_service_end") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        outOfServiceEndStr = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else
 | 
			
		||||
                                                                if (memName == "out_of_service_if") {
 | 
			
		||||
                                                                    if (r->value.IsString()) {
 | 
			
		||||
                                                                        outOfServiceIf = QString::fromStdString(r->value.GetString());
 | 
			
		||||
                                                                    }
 | 
			
		||||
                                                                } else {
 | 
			
		||||
                                                                    qCritical() << __func__ << ":" << __LINE__ << "WARNING unknown out of service setting" << memName;
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                        }
 | 
			
		||||
 | 
			
		||||
                                                        if (!outOfServiceStartStr.isEmpty() && !outOfServiceEndStr.isEmpty() && outOfServiceDuration != -1) {
 | 
			
		||||
                                                            ATBTime outOfServiceStart(outOfServiceStartStr);
 | 
			
		||||
                                                            ATBTime outOfServiceEnd(outOfServiceEndStr);
 | 
			
		||||
                                                            if (outOfServiceStart.isValid() && outOfServiceEnd.isValid()) {
 | 
			
		||||
                                                                TariffOutOfService.m_range = TimeRange(outOfServiceStart, outOfServiceEnd, outOfServiceDuration);
 | 
			
		||||
                                                                TariffOutOfService.m_weekDay = weekDayName;
 | 
			
		||||
                                                                if (!d.isNull() && d.isValid()) {
 | 
			
		||||
                                                                    TariffOutOfService.m_date = d;
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                                if (!outOfServiceIf.isEmpty()) {
 | 
			
		||||
                                                                    TariffOutOfService.setOutOfServiceIf(outOfServiceIf);
 | 
			
		||||
                                                                }
 | 
			
		||||
 | 
			
		||||
                                                                // qCritical() << TariffOutOfService;
 | 
			
		||||
 | 
			
		||||
                                                                cfg.TariffOutOfServices.insert(std::pair<int, ATBTariffOutOfService>(weekDay, TariffOutOfService));
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                        }
 | 
			
		||||
                                                    }
 | 
			
		||||
                                                }
 | 
			
		||||
                                            }
 | 
			
		||||
                                        } else {
 | 
			
		||||
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    } else
 | 
			
		||||
    if (innerObjName == QString("week_day_default")) {
 | 
			
		||||
        if (k->value.IsObject()) {
 | 
			
		||||
            auto obj = k->value.GetObject();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user