80 lines
2.4 KiB
C
80 lines
2.4 KiB
C
|
#ifndef TARIFF_OUT_OF_SERVICE_H_INCLUDED
|
||
|
#define TARIFF_OUT_OF_SERVICE_H_INCLUDED
|
||
|
|
||
|
#include <QDateTime>
|
||
|
#include <QString>
|
||
|
|
||
|
#include "time_range.h"
|
||
|
|
||
|
enum class ApplyOutOfService {
|
||
|
NEVER = 0,
|
||
|
MATCH_PREV_DAY = 1,
|
||
|
MATCH_NEXT_DAY = 2,
|
||
|
ALWAYS = 3
|
||
|
};
|
||
|
|
||
|
struct ATBTariffOutOfService {
|
||
|
int m_id;
|
||
|
QString m_weekDay;
|
||
|
QDate m_date;
|
||
|
TimeRange m_range;
|
||
|
ApplyOutOfService m_outOfServiceIf;
|
||
|
|
||
|
explicit ATBTariffOutOfService()
|
||
|
: m_id(-1)
|
||
|
, m_outOfServiceIf(ApplyOutOfService::NEVER) {
|
||
|
}
|
||
|
|
||
|
void setOutOfServiceIf(QString const &oosif) {
|
||
|
if (oosif == "never") {
|
||
|
m_outOfServiceIf = ApplyOutOfService::NEVER;
|
||
|
} else
|
||
|
if (oosif == "match_prev_day") {
|
||
|
m_outOfServiceIf = ApplyOutOfService::MATCH_PREV_DAY;
|
||
|
} else
|
||
|
if (oosif == "match_next_day") {
|
||
|
m_outOfServiceIf = ApplyOutOfService::MATCH_NEXT_DAY;
|
||
|
} else
|
||
|
if (oosif == "always") {
|
||
|
m_outOfServiceIf = ApplyOutOfService::ALWAYS;
|
||
|
} else {
|
||
|
qCritical() << "ERROR unknown servcie application" << oosif;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ApplyOutOfService outOfServiceIf() const {
|
||
|
return m_outOfServiceIf;
|
||
|
}
|
||
|
|
||
|
QString outOfServiceIfStr() const {
|
||
|
if (m_outOfServiceIf == ApplyOutOfService::NEVER) {
|
||
|
return "never";
|
||
|
}
|
||
|
if (m_outOfServiceIf == ApplyOutOfService::ALWAYS) {
|
||
|
return "always";
|
||
|
}
|
||
|
if (m_outOfServiceIf == ApplyOutOfService::MATCH_PREV_DAY) {
|
||
|
return "match prev day";
|
||
|
}
|
||
|
if (m_outOfServiceIf == ApplyOutOfService::MATCH_NEXT_DAY) {
|
||
|
return "match next day";
|
||
|
}
|
||
|
return QString("ERROR unknown out of service application: %1").arg(static_cast<int>(m_outOfServiceIf));
|
||
|
}
|
||
|
friend QDebug operator<<(QDebug debug, ATBTariffOutOfService const &oos) {
|
||
|
QDebugStateSaver saver(debug);
|
||
|
|
||
|
debug.nospace()
|
||
|
<< "\nTariffOutOfService:\n"
|
||
|
<< " week day: " << oos.m_weekDay << "\n"
|
||
|
<< " date: " << oos.m_date.toString(Qt::ISODate) << "\n"
|
||
|
<< " id: " << oos.m_id << "\n"
|
||
|
<< " start: " << oos.m_range.m_start << "\n"
|
||
|
<< " end: " << oos.m_range.m_end << "\n"
|
||
|
<< " duration: " << oos.m_range.m_duration << endl;
|
||
|
return debug;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#endif // TARIFF_SERVICE_H_INCLUDED
|