]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/configuration/rpcconfig/tariffs_methods.cpp
1643fbef2b2e2c667bd1771bf8318dad763dcdd0
[stg.git] / projects / stargazer / plugins / configuration / rpcconfig / tariffs_methods.cpp
1 #include "tariffs_methods.h"
2 #include "rpcconfig.h"
3 #include "tariff_helper.h"
4 #include "stg/tariffs.h"
5 #include "stg/users.h"
6 #include "stg/admins.h"
7 #include "stg/admin.h"
8
9 void METHOD_TARIFF_GET::execute(xmlrpc_c::paramList const & paramList,
10                                 xmlrpc_c::value *   const   retvalPtr)
11 {
12 std::string cookie = paramList.getString(0);
13 std::string name = paramList.getString(1);
14 paramList.verifyEnd(2);
15
16 std::map<std::string, xmlrpc_c::value> structVal;
17 ADMIN_INFO adminInfo;
18
19 if (config->GetAdminInfo(cookie, &adminInfo))
20     {
21     structVal["result"] = xmlrpc_c::value_boolean(false);
22     *retvalPtr = xmlrpc_c::value_struct(structVal);
23     return;
24     }
25
26 const TARIFF * tariff = tariffs->FindByName(name);
27
28 if (!tariff)
29     {
30     structVal["result"] = xmlrpc_c::value_boolean(false);
31     *retvalPtr = xmlrpc_c::value_struct(structVal);
32     return;
33     }
34
35 TARIFF_DATA td(tariff->GetTariffData());
36
37 TARIFF_HELPER helper(td);
38
39 helper.GetTariffInfo(retvalPtr);
40 }
41
42 void METHOD_TARIFF_CHG::execute(xmlrpc_c::paramList const & paramList,
43                                 xmlrpc_c::value *   const   retvalPtr)
44 {
45 std::string cookie = paramList.getString(0);
46 std::string name = paramList.getString(1);
47 xmlrpc_c::value_struct info(paramList.getStruct(2));
48 paramList.verifyEnd(3);
49
50 ADMIN_INFO adminInfo;
51
52 if (config->GetAdminInfo(cookie, &adminInfo))
53     {
54     *retvalPtr = xmlrpc_c::value_boolean(false);
55     return;
56     }
57
58 ADMIN * admin;
59
60 if (admins->Find(adminInfo.admin, &admin))
61     {
62     *retvalPtr = xmlrpc_c::value_boolean(false);
63     return;
64     }
65
66 const TARIFF * tariff = tariffs->FindByName(name);
67
68 if (!tariff)
69     {
70     *retvalPtr = xmlrpc_c::value_boolean(false);
71     return;
72     }
73
74 TARIFF_DATA td(tariff->GetTariffData());
75
76 TARIFF_HELPER helper(td);
77
78 helper.SetTariffInfo(info);
79
80 if (tariffs->Chg(td, admin))
81     {
82     *retvalPtr = xmlrpc_c::value_boolean(false);
83     return;
84     }
85
86 *retvalPtr = xmlrpc_c::value_boolean(true);
87 }
88
89 void METHOD_TARIFFS_GET::execute(xmlrpc_c::paramList const & paramList,
90                                  xmlrpc_c::value *   const   retvalPtr)
91 {
92 std::string cookie = paramList.getString(0);
93 paramList.verifyEnd(1);
94
95 std::map<std::string, xmlrpc_c::value> structVal;
96 ADMIN_INFO adminInfo;
97
98 if (config->GetAdminInfo(cookie, &adminInfo))
99     {
100     structVal["result"] = xmlrpc_c::value_boolean(false);
101     *retvalPtr = xmlrpc_c::value_struct(structVal);
102     return;
103     }
104
105 std::vector<xmlrpc_c::value> tariffsInfo;
106
107
108 std::list<TARIFF_DATA> dataList;
109 tariffs->GetTariffsData(&dataList);
110 std::list<TARIFF_DATA>::const_iterator it = dataList.begin();
111 for (; it != dataList.end(); ++it)
112     {
113     xmlrpc_c::value info;
114     TARIFF_DATA td(*it); // 'cause TARIFF_HELPER work in both ways and take not const referense
115     TARIFF_HELPER helper(td);
116     helper.GetTariffInfo(&info);
117     tariffsInfo.push_back(info);
118     }
119
120 *retvalPtr = xmlrpc_c::value_array(tariffsInfo);
121 }
122
123 void METHOD_TARIFF_ADD::execute(xmlrpc_c::paramList const & paramList,
124                                 xmlrpc_c::value *   const   retvalPtr)
125 {
126 std::string cookie = paramList.getString(0);
127 std::string tariff = paramList.getString(1);
128 paramList.verifyEnd(2);
129
130 ADMIN_INFO adminInfo;
131
132 if (config->GetAdminInfo(cookie, &adminInfo))
133     {
134     *retvalPtr = xmlrpc_c::value_boolean(false);
135     return;
136     }
137
138 ADMIN * admin;
139
140 if (admins->Find(adminInfo.admin, &admin))
141     {
142     *retvalPtr = xmlrpc_c::value_boolean(false);
143     return;
144     }
145
146 if (tariffs->Add(tariff, admin))
147     {
148     *retvalPtr = xmlrpc_c::value_boolean(false);
149     return;
150     }
151
152 *retvalPtr = xmlrpc_c::value_boolean(true);
153 }
154
155 void METHOD_TARIFF_DEL::execute(xmlrpc_c::paramList const & paramList,
156                                 xmlrpc_c::value *   const   retvalPtr)
157 {
158 std::string cookie = paramList.getString(0);
159 std::string tariff = paramList.getString(1);
160 paramList.verifyEnd(2);
161
162 ADMIN_INFO adminInfo;
163
164 if (config->GetAdminInfo(cookie, &adminInfo))
165     {
166     *retvalPtr = xmlrpc_c::value_boolean(false);
167     return;
168     }
169
170 ADMIN * admin;
171
172 if (admins->Find(adminInfo.admin, &admin))
173     {
174     *retvalPtr = xmlrpc_c::value_boolean(false);
175     return;
176     }
177
178 if (users->TariffInUse(tariff))
179     {
180     *retvalPtr = xmlrpc_c::value_boolean(false);
181     return;
182     }
183
184 if (tariffs->Del(tariff, admin))
185     {
186     *retvalPtr = xmlrpc_c::value_boolean(false);
187     return;
188     }
189
190 *retvalPtr = xmlrpc_c::value_boolean(true);
191 }