]> git.stg.codes - stg.git/commitdiff
ticket 37. The newTariff, currentTariff objects added, if (newTariff)
authorElena Mamontova <helenh463@gmail.com>
Mon, 29 Aug 2016 12:33:10 +0000 (15:33 +0300)
committerElena Mamontova <helenh463@gmail.com>
Mon, 29 Aug 2016 12:33:10 +0000 (15:33 +0300)
checking and TariffChangeIsAllowed() function call added in the
SetUserInfo() function.

projects/stargazer/plugins/configuration/rpcconfig/users_methods.cpp

index 5adbf44131905750cfa52fefbf1398b0842b2dd0..5a738d16d2b81220503c18177d63547b191a874e 100644 (file)
@@ -381,16 +381,29 @@ if (tariffs->FindByName(tariff))
         }
     else
         {
-        if (u->GetProperty().tariffName.Set(tariff,
+        const TARIFF * newTariff = tariffs->FindByName(tariff);
+        if (newTariff)
+            {
+            const TARIFF * currentTariff = u->GetTariff();
+            std::string message = currentTariff->TariffChangeIsAllowed(*newTariff);
+            if (message.empty())
+                {
+                if (u->GetProperty().tariffName.Set(tariff,
                                             admin,
                                             login,
                                             store,
                                             comment))
-            {
-            u->ResetNextTariff();
-            u->WriteConf();
-            *retvalPtr = xmlrpc_c::value_boolean(true);
-            return;
+                    {
+                    u->ResetNextTariff();
+                    u->WriteConf();
+                    *retvalPtr = xmlrpc_c::value_boolean(true);
+                    return;
+                    }
+                }
+            else
+                {
+                GetStgLogger()("Tariff change is prohibited for user %s. %s", u->GetLogin().c_str(), message.c_str());
+                }
             }
         }
     }