gradido/src/cpp/JSONInterface/JsonGetLogin.cpp

60 lines
2.0 KiB
C++

#include "JsonGetLogin.h"
#include "Poco/URI.h"
#include "../SingletonManager/SessionManager.h"
#include "../SingletonManager/SingletonTaskObserver.h"
#include "../SingletonManager/ErrorManager.h"
#include "../SingletonManager/PendingTasksManager.h"
#include "../lib/DataTypeConverter.h"
Poco::JSON::Object* JsonGetLogin::handle(Poco::Dynamic::Var params)
{
int session_id = 0;
auto sm = SessionManager::getInstance();
auto pt = PendingTasksManager::getInstance();
auto observer = SingletonTaskObserver::getInstance();
auto session_check_result = checkAndLoadSession(params, true);
if (session_check_result) {
return session_check_result;
}
Poco::JSON::Object* result = new Poco::JSON::Object;
result->set("state", "success");
//result->set("clientIP", mSession->getClientIp().toString());
auto userNew = mSession->getNewUser();
try {
result->set("user", userNew->getJson());
}
catch (Poco::Exception ex) {
auto em = ErrorManager::getInstance();
em->addError(new ParamError("JsonGetLogin::handle", "poco exception calling userModel->getJson: ", ex.displayText().data()));
em->sendErrorsAsEmail();
}
catch (...) {
auto em = ErrorManager::getInstance();
em->addError(new Error("JsonGetLogin::handle", "generic exception calling userModel->getJson: "));
em->sendErrorsAsEmail();
}
int pending = 0;
auto user_must_sign = pt->getTransactionsUserMustSign(userNew);
pending = user_must_sign.size();
result->set("Transactions.pending", pending);
auto some_must_sign = pt->getTransactionSomeoneMustSign(userNew);
//pending = some_must_sign.size();
result->set("Transactions.can_signed", some_must_sign.size());
auto executing = observer->getTaskCount(userNew->getModel()->getEmail(), TASK_OBSERVER_SIGN_TRANSACTION);
if (executing < 0) {
executing = 0;
}
result->set("Transactions.executing", executing);
//printf("pending: %d\n", session->getProcessingTransactionCount());
//std::string user_string = userModel->toString();
//printf("[JsonGetLogin] %s\n", user_string.data());
return result;
}