]> git.stg.codes - stg.git/blobdiff - projects/sgconf/tariffs.cpp
Added service and corporation params.
[stg.git] / projects / sgconf / tariffs.cpp
index 046a612166af8ab0f87a209d515843867d99d64f..75cd169fae66b89b5d687c3956104df02f902e99 100644 (file)
@@ -1,5 +1,7 @@
 #include "tariffs.h"
 
+#include "api_action.h"
+#include "options.h"
 #include "config.h"
 
 #include "stg/servconf.h"
@@ -9,6 +11,8 @@
 
 #include <iostream>
 #include <sstream>
+#include <string>
+#include <map>
 #include <cassert>
 
 namespace
@@ -87,6 +91,21 @@ for (size_t i = 0; i < info.dirPrice.size(); ++i)
     PrintDirPriceData(i, info.dirPrice[i], level + 1);
 }
 
+std::vector<SGCONF::API_ACTION::PARAM> GetTariffParams()
+{
+std::vector<SGCONF::API_ACTION::PARAM> params;
+params.push_back({"fee", "<fee>", "\t\ttariff fee"});
+params.push_back({"free", "<free mb>", "\tprepaid traff"});
+params.push_back({"passive-cost", "<cost>", "\tpassive cost"});
+params.push_back({"traff-type", "<type>", "\ttraff type (up, dow, up+down, max)"});
+params.push_back({"period", "<period>", "\ttarification period (daily, monthly)"});
+params.push_back({"times", "<hh:mm-hh:mm, ...>", "coma-separated day time-spans for each direction"});
+params.push_back({"day-prices", "<price/price, ...>", "coma-separated day prices for each direction"});
+params.push_back({"night-prices", "<price/price, ...>", "coma-separated day prices for each direction"});
+params.push_back({"thresholds", "<threshold, ...>", "coma-separated thresholds for each direction"});
+return params;
+}
+
 void SimpleCallback(bool result,
                     const std::string & reason,
                     void * /*data*/)
@@ -131,12 +150,9 @@ for (size_t i = 0; i < info.size(); ++i)
         PrintTariff(info[i]);
 }
 
-}
-
-
-bool SGCONF::GetTariffsFunction(const SGCONF::CONFIG & config,
-                                const std::string & /*arg*/,
-                                const std::map<std::string, std::string> & /*options*/)
+bool GetTariffsFunction(const SGCONF::CONFIG & config,
+                        const std::string & /*arg*/,
+                        const std::map<std::string, std::string> & /*options*/)
 {
 STG::SERVCONF proto(config.server.data(),
                     config.port.data(),
@@ -145,9 +161,9 @@ STG::SERVCONF proto(config.server.data(),
 return proto.GetTariffs(GetTariffsCallback, NULL) == STG::st_ok;
 }
 
-bool SGCONF::GetTariffFunction(const SGCONF::CONFIG & config,
-                               const std::string & arg,
-                               const std::map<std::string, std::string> & /*options*/)
+bool GetTariffFunction(const SGCONF::CONFIG & config,
+                       const std::string & arg,
+                       const std::map<std::string, std::string> & /*options*/)
 {
 STG::SERVCONF proto(config.server.data(),
                     config.port.data(),
@@ -159,9 +175,9 @@ std::string name(arg);
 return proto.GetTariffs(GetTariffCallback, &name) == STG::st_ok;
 }
 
-bool SGCONF::DelTariffFunction(const SGCONF::CONFIG & config,
-                               const std::string & arg,
-                               const std::map<std::string, std::string> & /*options*/)
+bool DelTariffFunction(const SGCONF::CONFIG & config,
+                       const std::string & arg,
+                       const std::map<std::string, std::string> & /*options*/)
 {
 STG::SERVCONF proto(config.server.data(),
                     config.port.data(),
@@ -170,20 +186,33 @@ STG::SERVCONF proto(config.server.data(),
 return proto.DelTariff(arg, SimpleCallback, NULL) == STG::st_ok;
 }
 
-bool SGCONF::AddTariffFunction(const SGCONF::CONFIG & config,
-                               const std::string & arg,
-                               const std::map<std::string, std::string> & /*options*/)
+bool AddTariffFunction(const SGCONF::CONFIG & config,
+                       const std::string & arg,
+                       const std::map<std::string, std::string> & /*options*/)
 {
 // TODO
 std::cerr << "Unimplemented.\n";
 return false;
 }
 
-bool SGCONF::ChgTariffFunction(const SGCONF::CONFIG & config,
-                               const std::string & arg,
-                               const std::map<std::string, std::string> & options)
+bool ChgTariffFunction(const SGCONF::CONFIG & config,
+                       const std::string & arg,
+                       const std::map<std::string, std::string> & options)
 {
 // TODO
 std::cerr << "Unimplemented.\n";
 return false;
 }
+
+} // namespace anonymous
+
+void SGCONF::AppendTariffsOptionBlock(COMMANDS & commands, OPTION_BLOCKS & blocks)
+{
+std::vector<API_ACTION::PARAM> params(GetTariffParams());
+blocks.Add("Tariff management options")
+      .Add("get-tariffs", SGCONF::MakeAPIAction(commands, GetTariffsFunction), "\tget tariff list")
+      .Add("get-tariff", SGCONF::MakeAPIAction(commands, "<name>", GetTariffFunction), "get tariff")
+      .Add("add-tariff", SGCONF::MakeAPIAction(commands, "<name>", params, AddTariffFunction), "add tariff")
+      .Add("del-tariff", SGCONF::MakeAPIAction(commands, "<name>", DelTariffFunction), "del tariff")
+      .Add("chg-tariff", SGCONF::MakeAPIAction(commands, "<name>", params, ChgTariffFunction), "change tariff");
+}