X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/641204dfbdb9fc870cdd2e7f9e3169a44693e7bf..da9b6f95cc1927507f2aeddd079528c7368025a1:/projects/stargazer/plugins/configuration/sgconfig/parser_tariff.cpp diff --git a/projects/stargazer/plugins/configuration/sgconfig/parser_tariff.cpp b/projects/stargazer/plugins/configuration/sgconfig/parser_tariff.cpp index aeb1c783..e083f852 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/parser_tariff.cpp +++ b/projects/stargazer/plugins/configuration/sgconfig/parser_tariff.cpp @@ -1,8 +1,12 @@ -//#include -#include - #include "parser.h" +#include "stg/tariffs.h" +#include "stg/users.h" +#include "stg/common.h" + +#include // snprintf +#include + const int pt_mega = 1024 * 1024; //----------------------------------------------------------------------------- // GET TARIFFS @@ -28,125 +32,131 @@ return -1; //----------------------------------------------------------------------------- void PARSER_GET_TARIFFS::CreateAnswer() { -string s; -char vs[100]; -int hd, hn, md, mn; - -answerList->erase(answerList->begin(), answerList->end()); - -answerList->push_back(""); +answer = ""; std::list dataList; tariffs->GetTariffsData(&dataList); std::list::const_iterator it = dataList.begin(); for (; it != dataList.end(); ++it) { - s = "tariffConf.name + "\">"; - answerList->push_back(s); - - for (int j = 0; j < DIR_NUM; j++) - { - hd = it->dirPrice[j].hDay; - md = it->dirPrice[j].mDay; + answer += "tariffConf.name + "\">"; - hn = it->dirPrice[j].hNight; - mn = it->dirPrice[j].mNight; - - strprintf(&s, "", j, hd, md, hn, mn); - answerList->push_back(s); - } + for (size_t i = 0; i < DIR_NUM; i++) + answer += "dirPrice[i].hDay) + ":" + x2str(it->dirPrice[i].mDay) + "-" + + x2str(it->dirPrice[i].hNight) + ":" + x2str(it->dirPrice[i].mNight) + "\"/>"; - strprintf(&s, " dirPrice[i].priceDayA * pt_mega, i+1 == DIR_NUM?"":"/"); - s += vs; + if (first) + first = false; + else + answer += "/"; + answer += x2str(it->dirPrice[i].priceDayA * pt_mega); } - s += "\"/>"; - answerList->push_back(s); + answer += "\"/>"; - strprintf(&s, " dirPrice[i].priceDayB * pt_mega, i+1 == DIR_NUM?"":"/"); - s += vs; + if (first) + first = false; + else + answer += "/"; + answer += x2str(it->dirPrice[i].priceDayB * pt_mega); } - s += "\"/>"; - answerList->push_back(s); + answer += "\"/>"; - strprintf(&s, " dirPrice[i].priceNightA * pt_mega, i+1 == DIR_NUM?"":"/"); - s += vs; + if (first) + first = false; + else + answer += "/"; + answer += x2str(it->dirPrice[i].priceNightA * pt_mega); } - s += "\"/>"; - answerList->push_back(s); + answer += "\"/>"; - strprintf(&s, " dirPrice[i].priceNightB * pt_mega, i+1 == DIR_NUM?"":"/"); - s += vs; + if (first) + first = false; + else + answer += "/"; + answer += x2str(it->dirPrice[i].priceNightB * pt_mega); } - s += "\"/>"; - answerList->push_back(s); + answer += "\"/>"; - strprintf(&s, " dirPrice[i].threshold, i+1 == DIR_NUM?"":"/"); - s += vs; + if (first) + first = false; + else + answer += "/"; + answer += x2str(it->dirPrice[i].threshold); } - s += "\"/>"; - answerList->push_back(s); + answer += "\"/>"; - strprintf(&s, " dirPrice[i].singlePrice, i+1 == DIR_NUM?"":"/"); - s += vs; + if (first) + first = false; + else + answer += "/"; + answer += (it->dirPrice[i].singlePrice ? "1" : "0"); } - s += "\"/>"; - answerList->push_back(s); + answer += "\"/>"; - strprintf(&s, " dirPrice[i].noDiscount, i+1 == DIR_NUM?"":"/"); - s += vs; + if (first) + first = false; + else + answer += "/"; + answer += (it->dirPrice[i].noDiscount ? "1" : "0"); } - s += "\"/>"; - answerList->push_back(s); + answer += "\"/>"; - strprintf(&s, " ", it->tariffConf.fee); - answerList->push_back(s); + answer += "tariffConf.fee) + "\"/>"; - strprintf(&s, " ", it->tariffConf.passiveCost); - answerList->push_back(s); + answer += "tariffConf.passiveCost) + "\"/>"; - strprintf(&s, " ", it->tariffConf.free); - answerList->push_back(s); + answer += "tariffConf.free) + "\"/>"; switch (it->tariffConf.traffType) { case TRAFF_UP: - answerList->push_back(""); + answer += ""; break; case TRAFF_DOWN: - answerList->push_back(""); + answer += ""; break; case TRAFF_UP_DOWN: - answerList->push_back(""); + answer += ""; break; case TRAFF_MAX: - answerList->push_back(""); + answer += ""; break; } - answerList->push_back(""); + answer += "tariffConf.period) + "\"/>"; + + answer += ""; } -answerList->push_back(""); +answer += ""; } //----------------------------------------------------------------------------- // ADD TARIFF @@ -176,19 +186,10 @@ return -1; //----------------------------------------------------------------------------- void PARSER_ADD_TARIFF::CreateAnswer() { -//answerList->clear(); -answerList->erase(answerList->begin(), answerList->end()); - if (tariffs->Add(tariffToAdd, currAdmin) == 0) - { - answerList->push_back(""); - } + answer = ""; else - { - string s; - strprintf(&s, "", tariffs->GetStrError().c_str()); - answerList->push_back(s); - } + answer = "GetStrError() + "\"/>"; } //----------------------------------------------------------------------------- // DEL TARIFF @@ -216,34 +217,19 @@ return -1; //----------------------------------------------------------------------------- void PARSER_DEL_TARIFF::CreateAnswer() { -//answerList->clear(); -answerList->erase(answerList->begin(), answerList->end()); - if (users->TariffInUse(tariffToDel)) - { - string s; - strprintf(&s, "", tariffToDel.c_str()); - answerList->push_back(s); - return; - } - -if (tariffs->Del(tariffToDel, currAdmin) == 0) - { - answerList->push_back(""); - } + answer = ""; +else if (tariffs->Del(tariffToDel, currAdmin) == 0) + answer = ""; else - { - string s; - strprintf(&s, "", tariffs->GetStrError().c_str()); - answerList->push_back(s); - } + answer = "GetStrError() + "\"/>"; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // CHG TARIFF //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -int PARSER_CHG_TARIFF::ParseSlashedIntParams(int paramsNum, const string & s, int * params) +int PARSER_CHG_TARIFF::ParseSlashedIntParams(int paramsNum, const std::string & s, int * params) { char * str = new char[s.size() + 1]; char * p; @@ -271,7 +257,7 @@ delete[] str; return 0; } //----------------------------------------------------------------------------- -int PARSER_CHG_TARIFF::ParseSlashedDoubleParams(int paramsNum, const string & s, double * params) +int PARSER_CHG_TARIFF::ParseSlashedDoubleParams(int paramsNum, const std::string & s, double * params) { char * str = new char[s.size() + 1]; char * p; @@ -301,7 +287,6 @@ return 0; //----------------------------------------------------------------------------- int PARSER_CHG_TARIFF::ParseStart(void *, const char * el, const char ** attr) { -char st[50]; double price[DIR_NUM]; int t[DIR_NUM]; depth++; @@ -316,7 +301,7 @@ if (depth == 1) } else { - string s; + std::string s; if (strcasecmp(el, "PriceDayA") == 0) { @@ -384,10 +369,14 @@ else for (int j = 0; j < DIR_NUM; j++) { + char st[50]; snprintf(st, 50, "Time%d", j); if (strcasecmp(el, st) == 0) { - int h1, m1, h2, m2; + int h1 = 0; + int m1 = 0; + int h2 = 0; + int m2 = 0; if (ParseTariffTimeStr(attr[1], h1, m1, h2, m2) == 0) { td.dirPrice[j].hDay = h1; @@ -447,6 +436,12 @@ else } return 0; } + + if (strcasecmp(el, "Period") == 0) + { + td.tariffConf.period = TARIFF::StringToPeriod(attr[1]); + return 0; + } } return -1; } @@ -469,24 +464,20 @@ return -1; //----------------------------------------------------------------------------- void PARSER_CHG_TARIFF::CreateAnswer() { -answerList->erase(answerList->begin(), answerList->end()); - if (!td.tariffConf.name.data().empty()) { TARIFF_DATA tariffData = td.GetData(); if (tariffs->Chg(tariffData, currAdmin) == 0) { - answerList->push_back(""); + answer = ""; return; } else { - string s; - strprintf(&s, "", tariffs->GetStrError().c_str()); - answerList->push_back(s); + answer = "GetStrError() + "\"/>"; return; } } -answerList->push_back(""); +answer = ""; } //-----------------------------------------------------------------------------