#pragma once #include <variant> #include <cstddef> #include <stdio.h> #include <unordered_map> #include <rapidjson/rapidjson.h> #include <rapidjson/document.h> #include <rapidjson/error/en.h> #include <algorithm> #include "tariff_currency.h" #include "tariff_duration.h" #include "tariff_payment_mtd.h" #include "tariff_payment_opt.h" #include "tariff_spec_days.h" #include "tariff_payment_opt.h" #include "tariff_weekdays.h" #include "tariff_weekdays_worktime.h" #include "tariff_spec_days_worktime.h" #include "tariff_member_type.h" #include "tariff_period_year.h" #include "tariff_payment_rate.h" #include <vector> using namespace std; using namespace rapidjson; /// <summary> /// Tariff configuration class /// </summary> class TariffConfiguration { public: vector<TariffCurrency> Currency; vector<TariffDuration> Duration; vector<TariffPaymentMethod> PaymentMethod; vector<TariffPaymentRate> PaymentRate; vector<TariffSpecialDaysWorktime> SpecialDaysWorktime; vector<TariffSpecialDays> SpecialDays; vector<TariffWeekDays> WeekDays; vector<TariffPeriodYear> YearPeriod; vector<TariffWeekDaysWorktime> WeekDaysWorktime; vector<TariffPaymentOption> PaymentOption; /// <summary> /// Parse JSON string /// </summary> /// <param name="json"></param> /// <returns>Returns operation status bool (OK | FAIL) </returns> bool ParseJson(TariffConfiguration* tariff_cfg, const char* json); private: /// <summary> /// Identify type of JSON member /// </summary> /// <param name="member_name"></param> /// <returns></returns> MemberType IdentifyJsonMember(const char* member_name); };