82 lines
2.3 KiB
C
82 lines
2.3 KiB
C
|
#ifndef TARIFF_SERVICE_H_INCLUDED
|
||
|
#define TARIFF_SERVICE_H_INCLUDED
|
||
|
|
||
|
#include <QDateTime>
|
||
|
#include <QString>
|
||
|
|
||
|
#include "time_range.h"
|
||
|
|
||
|
enum class ApplyService {
|
||
|
NEVER = 0,
|
||
|
MATCH_PREV_DAY = 1,
|
||
|
MATCH_NEXT_DAY = 2,
|
||
|
ALWAYS = 3
|
||
|
};
|
||
|
|
||
|
struct ATBTariffService {
|
||
|
int m_id;
|
||
|
QString m_weekDay;
|
||
|
QDate m_date;
|
||
|
TimeRange m_range;
|
||
|
ApplyService m_serviceIf;
|
||
|
|
||
|
explicit ATBTariffService()
|
||
|
: m_id(-1)
|
||
|
, m_serviceIf(ApplyService::NEVER) {
|
||
|
}
|
||
|
|
||
|
void setServiceIf(QString const &sif) {
|
||
|
if (sif == "never") {
|
||
|
m_serviceIf = ApplyService::NEVER;
|
||
|
} else
|
||
|
if (sif == "match_prev_day") {
|
||
|
m_serviceIf = ApplyService::MATCH_PREV_DAY;
|
||
|
} else
|
||
|
if (sif == "match_next_day") {
|
||
|
m_serviceIf = ApplyService::MATCH_NEXT_DAY;
|
||
|
} else
|
||
|
if (sif == "always") {
|
||
|
m_serviceIf = ApplyService::ALWAYS;
|
||
|
} else {
|
||
|
qCritical() << "ERROR unknown servcie application" << sif;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ApplyService serviceIf() const {
|
||
|
return m_serviceIf;
|
||
|
}
|
||
|
|
||
|
QString serviceIfStr() const {
|
||
|
if (m_serviceIf == ApplyService::NEVER) {
|
||
|
return "never";
|
||
|
}
|
||
|
if (m_serviceIf == ApplyService::ALWAYS) {
|
||
|
return "always";
|
||
|
}
|
||
|
if (m_serviceIf == ApplyService::MATCH_PREV_DAY) {
|
||
|
return "match prev day";
|
||
|
}
|
||
|
if (m_serviceIf == ApplyService::MATCH_NEXT_DAY) {
|
||
|
return "match next day";
|
||
|
}
|
||
|
return QString("ERROR unknown service application: %1").arg(static_cast<int>(m_serviceIf));
|
||
|
}
|
||
|
|
||
|
friend QDebug operator<<(QDebug debug, ATBTariffService const &ts) {
|
||
|
QDebugStateSaver saver(debug);
|
||
|
|
||
|
debug.nospace()
|
||
|
<< "\nTariffService:\n"
|
||
|
<< " week day: " << ts.m_weekDay << "\n"
|
||
|
<< " date: " << ts.m_date.toString(Qt::ISODate) << "\n"
|
||
|
<< " id: " << ts.m_id << "\n"
|
||
|
<< " start: " << ts.m_range.m_start << "\n"
|
||
|
<< " end: " << ts.m_range.m_end << "\n"
|
||
|
<< " duration: " << ts.m_range.m_duration << "\n"
|
||
|
<< " prepaid if: " << ts.serviceIfStr() << endl;
|
||
|
return debug;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#endif // TARIFF_SERVICE_H_INCLUDED
|