]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/configuration/rpcconfig/tariffs_methods.cpp
При изменении пользователя через XML RPC добавлено изменение состояния
[stg.git] / projects / stargazer / plugins / configuration / rpcconfig / tariffs_methods.cpp
1 #include "rpcconfig.h"
2 #include "tariffs_methods.h"
3 #include "tariff_helper.h"
4
5 void METHOD_TARIFF_GET::execute(xmlrpc_c::paramList const & paramList,
6                                 xmlrpc_c::value *   const   retvalPtr)
7 {
8 std::string cookie = paramList.getString(0);
9 std::string name = paramList.getString(1);
10 paramList.verifyEnd(2);
11
12 std::map<std::string, xmlrpc_c::value> structVal;
13 ADMIN_INFO adminInfo;
14
15 if (config->GetAdminInfo(cookie, &adminInfo))
16     {
17     structVal["result"] = xmlrpc_c::value_boolean(false);
18     *retvalPtr = xmlrpc_c::value_struct(structVal);
19     return;
20     }
21
22 const TARIFF * tariff = tariffs->FindByName(name);
23
24 if (!tariff)
25     {
26     structVal["result"] = xmlrpc_c::value_boolean(false);
27     *retvalPtr = xmlrpc_c::value_struct(structVal);
28     return;
29     }
30
31 TARIFF_DATA td;
32
33 tariff->GetTariffData(&td);
34
35 TARIFF_HELPER helper(td);
36
37 helper.GetTariffInfo(retvalPtr);
38 }
39
40 void METHOD_TARIFF_CHG::execute(xmlrpc_c::paramList const & paramList,
41                                 xmlrpc_c::value *   const   retvalPtr)
42 {
43 std::string cookie = paramList.getString(0);
44 std::string name = paramList.getString(1);
45 xmlrpc_c::value_struct info(paramList.getStruct(2));
46 paramList.verifyEnd(3);
47
48 ADMIN_INFO adminInfo;
49
50 if (config->GetAdminInfo(cookie, &adminInfo))
51     {
52     *retvalPtr = xmlrpc_c::value_boolean(false);
53     return;
54     }
55
56 ADMIN admin;
57
58 if (admins->FindAdmin(adminInfo.admin, &admin))
59     {
60     *retvalPtr = xmlrpc_c::value_boolean(false);
61     return;
62     }
63
64 const TARIFF * tariff = tariffs->FindByName(name);
65
66 if (!tariff)
67     {
68     *retvalPtr = xmlrpc_c::value_boolean(false);
69     return;
70     }
71
72 TARIFF_DATA td;
73
74 tariff->GetTariffData(&td);
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 std::string enc;
129 paramList.verifyEnd(2);
130
131 ADMIN_INFO adminInfo;
132
133 if (config->GetAdminInfo(cookie, &adminInfo))
134     {
135     *retvalPtr = xmlrpc_c::value_boolean(false);
136     return;
137     }
138
139 ADMIN admin;
140
141 if (admins->FindAdmin(adminInfo.admin, &admin))
142     {
143     *retvalPtr = xmlrpc_c::value_boolean(false);
144     return;
145     }
146
147 if (tariffs->Add(tariff, admin))
148     {
149     *retvalPtr = xmlrpc_c::value_boolean(false);
150     return;
151     }
152
153 *retvalPtr = xmlrpc_c::value_boolean(true);
154 }
155
156 void METHOD_TARIFF_DEL::execute(xmlrpc_c::paramList const & paramList,
157                                 xmlrpc_c::value *   const   retvalPtr)
158 {
159 std::string cookie = paramList.getString(0);
160 std::string tariff = paramList.getString(1);
161 paramList.verifyEnd(2);
162
163 ADMIN_INFO adminInfo;
164
165 if (config->GetAdminInfo(cookie, &adminInfo))
166     {
167     *retvalPtr = xmlrpc_c::value_boolean(false);
168     return;
169     }
170
171 ADMIN admin;
172
173 if (admins->FindAdmin(adminInfo.admin, &admin))
174     {
175     *retvalPtr = xmlrpc_c::value_boolean(false);
176     return;
177     }
178
179 if (users->TariffInUse(tariff))
180     {
181     *retvalPtr = xmlrpc_c::value_boolean(false);
182     return;
183     }
184
185 if (tariffs->Del(tariff, admin))
186     {
187     *retvalPtr = xmlrpc_c::value_boolean(false);
188     return;
189     }
190
191 *retvalPtr = xmlrpc_c::value_boolean(true);
192 }