X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/a73c885317f58a03bc78ed6ceedd5067dd79a750..3b51da05ef42ecf59b78a6c29664d3e555bc57da:/include/stg/tariff_conf.h diff --git a/include/stg/tariff_conf.h b/include/stg/tariff_conf.h index 5b2eebb9..f705d0a0 100644 --- a/include/stg/tariff_conf.h +++ b/include/stg/tariff_conf.h @@ -27,20 +27,13 @@ #ifndef TARIFF_CONF_H #define TARIFF_CONF_H -#include -#include - +#include "tariff.h" #include "resetable.h" #include "const.h" -//----------------------------------------------------------------------------- -enum -{ - TRAFF_UP = 0, - TRAFF_DOWN, - TRAFF_UP_DOWN, - TRAFF_MAX -}; +#include +#include + //----------------------------------------------------------------------------- struct DIRPRICE_DATA { @@ -102,24 +95,38 @@ struct DIRPRICE_DATA_RES return *this; } - DIRPRICE_DATA GetData() + DIRPRICE_DATA GetData() const { DIRPRICE_DATA dd; - dd.hDay = hDay; - dd.hNight = hNight; - dd.mDay = mDay; - dd.mNight = mNight; - dd.noDiscount = noDiscount; - dd.priceDayA = priceDayA; - dd.priceDayB = priceDayB; - - dd.priceNightA = priceNightA; - dd.priceNightB = priceNightB; - dd.singlePrice = singlePrice; - dd.threshold = threshold; + hDay.maybeSet(dd.hDay); + hNight.maybeSet(dd.hNight); + mDay.maybeSet(dd.mDay); + mNight.maybeSet(dd.mNight); + noDiscount.maybeSet(dd.noDiscount); + priceDayA.maybeSet(dd.priceDayA); + priceDayB.maybeSet(dd.priceDayB); + priceNightA.maybeSet(dd.priceNightA); + priceNightB.maybeSet(dd.priceNightB); + singlePrice.maybeSet(dd.singlePrice); + threshold.maybeSet(dd.threshold); return dd; } + void Splice(const DIRPRICE_DATA_RES & rhs) + { + hDay.splice(rhs.hDay); + mDay.splice(rhs.mDay); + hNight.splice(rhs.hNight); + mNight.splice(rhs.mNight); + priceDayA.splice(rhs.priceDayA); + priceNightA.splice(rhs.priceNightA); + priceDayB.splice(rhs.priceDayB); + priceNightB.splice(rhs.priceNightB); + threshold.splice(rhs.threshold); + singlePrice.splice(rhs.singlePrice); + noDiscount.splice(rhs.noDiscount); + } + RESETABLE hDay; RESETABLE mDay; RESETABLE hNight; @@ -135,26 +142,35 @@ struct DIRPRICE_DATA_RES //----------------------------------------------------------------------------- struct TARIFF_CONF { - double fee; - double free; - int traffType; - double passiveCost; - std::string name; + double fee; + double free; + TARIFF::TRAFF_TYPE traffType; + double passiveCost; + std::string name; + TARIFF::PERIOD period; + TARIFF::CHANGE_POLICY changePolicy; + time_t changePolicyTimeout; TARIFF_CONF() : fee(0), free(0), - traffType(TRAFF_UP_DOWN), + traffType(TARIFF::TRAFF_UP_DOWN), passiveCost(0), - name() + name(), + period(TARIFF::MONTH), + changePolicy(TARIFF::ALLOW), + changePolicyTimeout(0) {} - TARIFF_CONF(const std::string & n) + explicit TARIFF_CONF(const std::string & n) : fee(0), free(0), - traffType(TRAFF_UP_DOWN), + traffType(TARIFF::TRAFF_UP_DOWN), passiveCost(0), - name(n) + name(n), + period(TARIFF::MONTH), + changePolicy(TARIFF::ALLOW), + changePolicyTimeout(0) {} }; //----------------------------------------------------------------------------- @@ -165,7 +181,10 @@ struct TARIFF_CONF_RES free(), traffType(), passiveCost(), - name() + name(), + period(), + changePolicy(), + changePolicyTimeout() {} TARIFF_CONF_RES & operator=(const TARIFF_CONF & tc) @@ -175,25 +194,34 @@ struct TARIFF_CONF_RES traffType = tc.traffType; passiveCost = tc.passiveCost; name = tc.name; + period = tc.period; + changePolicy = tc.changePolicy; + changePolicyTimeout = tc.changePolicyTimeout; return *this; } - TARIFF_CONF GetData() + TARIFF_CONF GetData() const { TARIFF_CONF tc; - tc.fee = fee; - tc.free = free; - tc.name = name; - tc.passiveCost = passiveCost; - tc.traffType = traffType; + fee.maybeSet(tc.fee); + free.maybeSet(tc.free); + name.maybeSet(tc.name); + passiveCost.maybeSet(tc.passiveCost); + traffType.maybeSet(tc.traffType); + period.maybeSet(tc.period); + changePolicy.maybeSet(tc.changePolicy); + changePolicyTimeout.maybeSet(tc.changePolicyTimeout); return tc; } - RESETABLE fee; - RESETABLE free; - RESETABLE traffType; - RESETABLE passiveCost; - RESETABLE name; + RESETABLE fee; + RESETABLE free; + RESETABLE traffType; + RESETABLE passiveCost; + RESETABLE name; + RESETABLE period; + RESETABLE changePolicy; + RESETABLE changePolicyTimeout; }; //----------------------------------------------------------------------------- struct TARIFF_DATA @@ -206,22 +234,10 @@ struct TARIFF_DATA dirPrice(DIR_NUM) {} - TARIFF_DATA(const std::string & name) + explicit TARIFF_DATA(const std::string & name) : tariffConf(name), dirPrice(DIR_NUM) {} - - TARIFF_DATA(const TARIFF_DATA & td) - : tariffConf(td.tariffConf), - dirPrice(td.dirPrice) - {} - - TARIFF_DATA & operator=(const TARIFF_DATA & td) - { - tariffConf = td.tariffConf; - dirPrice = td.dirPrice; - return *this; - } }; //----------------------------------------------------------------------------- struct TARIFF_DATA_RES @@ -234,7 +250,15 @@ struct TARIFF_DATA_RES dirPrice(DIR_NUM) {} - TARIFF_DATA GetData() + TARIFF_DATA_RES & operator=(const TARIFF_DATA & td) + { + tariffConf = td.tariffConf; + for (size_t i = 0; i < DIR_NUM; ++i) + dirPrice[i] = td.dirPrice[i]; + return *this; + } + + TARIFF_DATA GetData() const { TARIFF_DATA td; td.tariffConf = tariffConf.GetData();