#ifndef TARIFF_OUT_OF_SERVICE_H_INCLUDED #define TARIFF_OUT_OF_SERVICE_H_INCLUDED #include #include #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(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