MOBILISIS-Calculator/library/include/mobilisis/configuration.h

75 lines
2.1 KiB
C++

#pragma once
#include <map>
#include <variant>
#include <cstddef>
#include <stdio.h>
#include <algorithm>
#include <rapidjson/rapidjson.h>
#include <rapidjson/document.h>
#include <rapidjson/error/en.h>
#include "member_type.h"
#include "currency.h"
#include "duration.h"
#include "payment_mtd.h"
#include "payment_opt.h"
#include "spec_days.h"
#include "payment_opt.h"
#include "weekdays.h"
#include "weekdays_worktime.h"
#include "spec_days_worktime.h"
#include "member_type.h"
#include "period_year.h"
#include "payment_rate.h"
#include "atb_project.h"
#include "tariff_daily_ticket.h"
#include "time_range_header.h"
#include "tariff_timestep_config.h"
#include <QVector>
using namespace std;
using namespace rapidjson;
class Configuration
{
public:
ATBProject project;
ATBCurrency Currency;
ATBDuration duration;
multimap<int, ATBDuration> Duration;
multimap<int, ATBPaymentMethod> PaymentMethod;
multimap<int, ATBPaymentRate> PaymentRate;
multimap<int, ATBSpecialDaysWorktime> SpecialDaysWorktime;
multimap<int, ATBSpecialDays> SpecialDays;
multimap<int, ATBWeekDays> WeekDays;
multimap<int, ATBPeriodYear> YearPeriod;
multimap<int, ATBWeekDaysWorktime> WeekDaysWorktime;
multimap<int, ATBPaymentOption> PaymentOption;
multimap<int, ATBDailyTicket> DailyTicket;
multimap<int, ATBTimeRange> TimeRange;
multimap<int, ATBTimeStepConfig> TimeStepConfig;
multimap<int, ATBTimeBase> TimeBase;
/// <summary>
/// Parse JSON string
/// </summary>
/// <param name="json"></param>
/// <returns>Returns operation status bool (OK | FAIL) </returns>
bool ParseJson(Configuration* cfg, const char* json);
ATBPaymentOption &getPaymentOptions();
ATBPaymentOption const &getPaymentOptions() const;
QVector<ATBDailyTicket> const &getDailyTickets() const;
private:
/// <summary>
/// Identify type of JSON member
/// </summary>
/// <param name="member_name"></param>
/// <returns></returns>
MemberType IdentifyJsonMember(const char* member_name);
ATBPaymentOption currentPaymentOptions;
};