mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
update Hedera Topics Page to show existing topics
This commit is contained in:
parent
7bc02f4e63
commit
a41ea1a6ae
@ -7,9 +7,9 @@ CREATE TABLE `hedera_topics` (
|
||||
`group_id` int unsigned NOT NULL,
|
||||
`admin_key_id` int unsigned DEFAULT NULL,
|
||||
`submit_key_id` int unsigned DEFAULT NULL,
|
||||
`current_timeout` timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',
|
||||
`current_timeout` DATETIME NOT NULL DEFAULT '2000-01-01 00:00:00',
|
||||
`sequence_number` bigint unsigned DEFAULT '0',
|
||||
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`updated` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `topic_hedera_id` (`topic_hedera_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
@ -349,8 +349,8 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c3\">";
|
||||
#line 266 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( hedera_account_model->getBalanceDouble() );
|
||||
responseStream << " hbar</div>\n";
|
||||
responseStream << ( hedera_account_model->getBalanceString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c2\">";
|
||||
#line 267 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( model::table::HederaAccount::hederaNetworkTypeToString(hedera_account_model->getNetworkType()) );
|
||||
@ -366,27 +366,29 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
#line 269 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( hedera_account_model->getUpdatedString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<button class=\"form-button\" title=\"Anfrage an Hedera, aktuell kostenlos\" onclick=\"window.location.href='";
|
||||
#line 270 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c5\">\n";
|
||||
responseStream << "\t\t\t\t\t\t<button class=\"form-button\" title=\"Anfrage an Hedera, aktuell kostenlos\" onclick=\"window.location.href='";
|
||||
#line 271 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( updateUrl );
|
||||
responseStream << "'\" >\n";
|
||||
responseStream << "\t\t\t\t\t\tUpdate Balance\n";
|
||||
responseStream << "\t\t\t\t\t</button>\n";
|
||||
responseStream << "\t\t\t\t\t";
|
||||
#line 273 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
if(changeEncryption != "") { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t<button class=\"form-button\" title=\"Ändere den Verschlüsselungsstatus des Private Keys in der Datenbank\" onclick=\"window.location.href='";
|
||||
responseStream << "\t\t\t\t\t\t\tUpdate Balance\n";
|
||||
responseStream << "\t\t\t\t\t\t</button>\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 274 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
if(changeEncryption != "") { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t\t<button class=\"form-button\" title=\"Ändere den Verschlüsselungsstatus des Private Keys in der Datenbank\" onclick=\"window.location.href='";
|
||||
#line 275 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( changeEncryption );
|
||||
responseStream << "'\">\n";
|
||||
responseStream << "\t\t\t\t\t\t\tChange Encryption\n";
|
||||
responseStream << "\t\t\t\t\t\t</button>\n";
|
||||
responseStream << "\t\t\t\t\t";
|
||||
#line 277 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << "\t\t\t\t\t\t\t\tChange Encryption\n";
|
||||
responseStream << "\t\t\t\t\t\t\t</button>\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 278 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 279 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 281 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
@ -395,7 +397,7 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div class=\"center-form-form\">\n";
|
||||
responseStream << "\t\t<form method=\"POST\" action=\"";
|
||||
#line 286 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 288 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/hedera_account\">\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\">Hedera Account ID</label>\n";
|
||||
@ -411,21 +413,21 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"account-network-type\">Network Type</label>\n";
|
||||
responseStream << "\t\t\t<select class=\"form-control\" name=\"account-network-type\" id=\"account-network-type\">\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 299 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 301 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
for(int i = 0; i < model::table::HEDERA_NET_COUNT; i++) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<option value=\"";
|
||||
#line 300 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 302 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( i );
|
||||
responseStream << "\">";
|
||||
#line 300 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 302 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( model::table::HederaAccount::hederaNetworkTypeToString((model::table::HederaNetworkType)i) );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 301 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 303 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"add\" value=\"";
|
||||
#line 303 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 305 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( gettext("Add Account") );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t\t</form>\n";
|
||||
@ -436,46 +438,46 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div class=\"center-form-form\">\n";
|
||||
responseStream << "\t\t<form method=\"POST\" action=\"";
|
||||
#line 311 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 313 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/hedera_account\">\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"account-auto-renew-account\">Auto Renew and Founding Hedera Account</label>\n";
|
||||
responseStream << "\t\t\t<select name=\"account-auto-renew-account\" id=\"account-auto-renew-account\">\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 314 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 316 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
for(auto it = hedera_accounts.begin(); it != hedera_accounts.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t<option title=\"";
|
||||
#line 317 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 319 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( model->toString() );
|
||||
responseStream << "\" value=\"";
|
||||
#line 317 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 319 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( model->getID() );
|
||||
responseStream << "\" ";
|
||||
#line 317 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 319 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
if(auto_renew_account == model->getID()) { responseStream << "selected=\"selected\"";
|
||||
#line 317 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 319 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << ">";
|
||||
#line 317 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 319 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( (*it)->toShortSelectOptionName() );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 318 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 320 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"account-auto-renew-period\">Auto Renew Period in seconds</label>\n";
|
||||
responseStream << "\t\t\t<div><input class=\"form-control input-40\" id=\"account-auto-renew-period\" value=\"";
|
||||
#line 321 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 323 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( auto_renew_period );
|
||||
responseStream << "\" type=\"number\" name=\"account-auto-renew-period\"/><span style=\"margin-left:8px\" id=\"readable-auto-renew-period\"></span><div>\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"account-initial-balance\">Initial Balance for new Account (taken from founding account)</label>\n";
|
||||
responseStream << "\t\t\t<input class=\"form-control\" id=\"account-initial-balance\" name=\"account-initial-balance\" type=\"number\" step=\"0.00000001\" value=\"";
|
||||
#line 323 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 325 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( std::to_string(initial_balance) );
|
||||
responseStream << "\" />\n";
|
||||
responseStream << "\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"create\" value=\"";
|
||||
#line 324 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 326 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( gettext("Create Account") );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t\t</form>\n";
|
||||
@ -506,7 +508,7 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
// end include footer.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<script type=\"text/javascript\" src=\"";
|
||||
#line 329 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 331 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "/js/time_calculations.js\"></script>\n";
|
||||
responseStream << "<script type=\"text/javascript\">\n";
|
||||
|
||||
@ -8,9 +8,13 @@
|
||||
#line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
|
||||
#include "../controller/HederaAccount.h"
|
||||
#include "../controller/HederaTopic.h"
|
||||
#include "../controller/Group.h"
|
||||
#include "../SingletonManager/SessionManager.h"
|
||||
#include "../ServerConfig.h"
|
||||
#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#include "../lib/DataTypeConverter.h"
|
||||
#include "Poco/Timespan.h"
|
||||
#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
|
||||
#include "../ServerConfig.h"
|
||||
|
||||
@ -29,16 +33,57 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
if (_compressResponse) response.set("Content-Encoding", "gzip");
|
||||
|
||||
Poco::Net::HTMLForm form(request, request.stream());
|
||||
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 16 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
|
||||
const char* pageName = "Topic";
|
||||
auto user = mSession->getNewUser();
|
||||
auto sm = SessionManager::getInstance();
|
||||
|
||||
int auto_renew_period = 604800; // 7 Tage
|
||||
std::string name = "";
|
||||
int auto_renew_account = 0;
|
||||
int auto_renew_period = 604800; // 7 Tage
|
||||
|
||||
int group_id = 0;
|
||||
|
||||
|
||||
if(!form.empty()) {
|
||||
name = form.get("topic-name", "");
|
||||
auto auto_renew_account_string = form.get("topic-auto-renew-account", "0");
|
||||
auto auto_renew_period_string = form.get("topic-auto-renew-period", "604800");
|
||||
auto group_id_string = form.get("topic-group", "-1");
|
||||
|
||||
if(name != "" && !sm->isValid(name, VALIDATE_NAME)) {
|
||||
addError(new Error("Topic", "Name not valid, at least 3 Character"));
|
||||
}
|
||||
|
||||
if(!sm->isValid(auto_renew_account_string, VALIDATE_ONLY_INTEGER)) {
|
||||
addError(new Error("Topic", "auto renew account id not an integer"));
|
||||
} else {
|
||||
if(DataTypeConverter::strToInt(auto_renew_account_string, auto_renew_account) != DataTypeConverter::NUMBER_PARSE_OKAY) {
|
||||
addError(new Error("Int convert error", "Error converting auto renew account id to int"));
|
||||
}
|
||||
}
|
||||
|
||||
if(!sm->isValid(auto_renew_period_string, VALIDATE_ONLY_INTEGER)) {
|
||||
addError(new Error("Topic", "auto renew period not an integer"));
|
||||
} else {
|
||||
if(DataTypeConverter::strToInt(auto_renew_period_string, auto_renew_period) != DataTypeConverter::NUMBER_PARSE_OKAY) {
|
||||
addError(new Error("Int convert error", "Error converting auto renew period to int"));
|
||||
}
|
||||
}
|
||||
|
||||
if(!sm->isValid(group_id_string, VALIDATE_ONLY_INTEGER)) {
|
||||
addError(new Error("Topic", "group_id not an integer"));
|
||||
} else {
|
||||
if(DataTypeConverter::strToInt(group_id_string, group_id) != DataTypeConverter::NUMBER_PARSE_OKAY) {
|
||||
addError(new Error("Int convert error", "Error converting group_id to int"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
auto hedera_accounts = controller::HederaAccount::load("user_id", user->getModel()->getID());
|
||||
//std::vector<Poco::AutoPtr<controller::HederaAccount>> hedera_accounts;
|
||||
|
||||
auto groups = controller::Group::listAll();
|
||||
std::map<int, int> group_indices;
|
||||
@ -48,15 +93,17 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
count++;
|
||||
}
|
||||
|
||||
auto hedera_topics = controller::HederaTopic::listAll();
|
||||
//std::vector<Poco::AutoPtr<controller::HederaTopic>> hedera_topics;
|
||||
|
||||
#line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
|
||||
bool withMaterialIcons = false;
|
||||
std::ostream& _responseStream = response.send();
|
||||
Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
|
||||
std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
|
||||
responseStream << "\n";
|
||||
// begin include header.cpsp
|
||||
// begin include header_large.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<!DOCTYPE html>\n";
|
||||
responseStream << "<html>\n";
|
||||
@ -64,47 +111,48 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
responseStream << "<meta charset=\"UTF-8\">\n";
|
||||
responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n";
|
||||
responseStream << "<title>Gradido Login Server: ";
|
||||
#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( pageName );
|
||||
responseStream << "</title>\n";
|
||||
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "css/main.css\">\n";
|
||||
#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
if(withMaterialIcons) { responseStream << "\n";
|
||||
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
#line 14 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 14 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "css/materialdesignicons.min.css\">\n";
|
||||
#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "</head>\n";
|
||||
responseStream << "<body>\n";
|
||||
responseStream << " <div class=\"layout\">\n";
|
||||
responseStream << " <div class=\"center-form-single\">\n";
|
||||
responseStream << " <div class=\"center-form-header\">\n";
|
||||
responseStream << " <a href=\"";
|
||||
#line 21 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "\" class=\"center-logo\">\n";
|
||||
responseStream << " <picture>\n";
|
||||
responseStream << " <source srcset=\"";
|
||||
#line 23 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "img/logo_schrift.webp\" type=\"image/webp\">\n";
|
||||
responseStream << " <source srcset=\"";
|
||||
#line 24 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "img/logo_schrift.png\" type=\"image/png\">\n";
|
||||
responseStream << " <img src=\"";
|
||||
#line 25 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "img/logo_schrift.png\" alt=\"logo\" />\n";
|
||||
responseStream << " </picture>\n";
|
||||
responseStream << " </a>\n";
|
||||
responseStream << " </div>";
|
||||
// end include header.cpsp
|
||||
responseStream << "\t\t<div class=\"sidebar1 nav-menu initial\">\n";
|
||||
responseStream << "\t\t\t<div class=\"nav-vertical\">\n";
|
||||
responseStream << "\t\t\t\t<ul>\n";
|
||||
responseStream << "\t\t\t\t\t<li><a href=\"";
|
||||
#line 22 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/groups\"><span class=\"link-title\">Gruppen</span></a></li>\n";
|
||||
responseStream << "\t\t\t\t\t<li><a href=\"";
|
||||
#line 23 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/nodes\"><span class=\"link-title\">Node Server</span></a></li>\n";
|
||||
responseStream << "\t\t\t\t\t<li><a href=\"";
|
||||
#line 24 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/hedera_account\"><span class=\"link-title\">Hedera Accounts</span></a></li>\n";
|
||||
responseStream << "\t\t\t\t\t<li><a href=\"";
|
||||
#line 25 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/topic\"><span class=\"link-title\">Hedera Topics</span></a></li>\n";
|
||||
responseStream << "\t\t\t\t</ul>\n";
|
||||
responseStream << "\t\t\t</div>\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t\t<div class=\"content\">";
|
||||
// end include header_large.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<style type=\"text/css\">\n";
|
||||
responseStream << "\t.center-form-form .input-40 {\n";
|
||||
@ -114,78 +162,169 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
responseStream << "\t}\n";
|
||||
responseStream << "\t\n";
|
||||
responseStream << "</style>\n";
|
||||
#line 40 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 87 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( getErrorsHtml() );
|
||||
responseStream << "\n";
|
||||
responseStream << "<div class=\"content-container info-container\">\n";
|
||||
responseStream << "\t<h1>Topic Admin Page</h1>\n";
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "<div class=\"center-form-container\">\n";
|
||||
responseStream << "\t<div class=\"content-list\">\n";
|
||||
responseStream << "\t\t<div class=\"content-list-title\">\n";
|
||||
responseStream << "\t\t\t<h2>Hedera Topics</h2>\n";
|
||||
responseStream << "\t\t</div>\t\n";
|
||||
responseStream << "\t\t<div class=\"content-list-table\">\n";
|
||||
responseStream << "\t\t\t<div class=\"row\">\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c2\">Topic ID</div>\t\t\t\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c3\">Name</div>\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c3\">Network Type</div>\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c4\">Auto Renew Account Balance</div>\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c4\">Auto Renew Period</div>\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c3\">Group ID</div>\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c3\">Current Timeout</div>\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c2\">Sequence Number</div>\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c3\" title=\"Last Time Get update from Hedera\">Last Updated</div>\n";
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c5\">Aktionen</div>\n";
|
||||
responseStream << "\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 109 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
for(auto it = hedera_topics.begin(); it != hedera_topics.end(); it++) {
|
||||
auto hedera_topic_model = (*it)->getModel();
|
||||
auto updateUrl = ServerConfig::g_serverPath + "/topic?action=getTopicInfos&topic_id=" + std::to_string(hedera_topic_model->getID());
|
||||
auto auto_renew_account = (*it)->getAutoRenewAccount();
|
||||
auto renew_account_model = auto_renew_account->getModel();
|
||||
std::string timeout_color = "success-color";
|
||||
if(hedera_topic_model->getCurrentTimeout() < Poco::DateTime()) {
|
||||
timeout_color = "alert-color";
|
||||
} else if(hedera_topic_model->getCurrentTimeout() - Poco::DateTime() > Poco::Timespan(2,0,0,0,0)) {
|
||||
timeout_color = "orange-color";
|
||||
}
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<div class=\"row\">\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c2\">";
|
||||
#line 122 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( (*it)->getTopicHederaId()->getModel()->toString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c3\">";
|
||||
#line 123 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( hedera_topic_model->getName() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c3\">";
|
||||
#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( model::table::HederaAccount::hederaNetworkTypeToString(renew_account_model->getNetworkType()) );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c4\">";
|
||||
#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( renew_account_model->getBalanceString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c4\">";
|
||||
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( hedera_topic_model->getAutoRenewPeriodString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c3\">";
|
||||
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( hedera_topic_model->getGroupId() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c3 ";
|
||||
#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( timeout_color );
|
||||
responseStream << "\">";
|
||||
#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( hedera_topic_model->getCurrentTimeoutString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c2\">";
|
||||
#line 129 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( hedera_topic_model->getSequenceNumber() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c3\">";
|
||||
#line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( hedera_topic_model->getUpdatedString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c5\">\n";
|
||||
responseStream << "\t\t\t\t\t\t<button class=\"form-button\" title=\"Query on Hedera, cost some fees\" onclick=\"window.location.href='";
|
||||
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( updateUrl );
|
||||
responseStream << "'\" >\n";
|
||||
responseStream << "\t\t\t\t\t\t\tget topic infos\n";
|
||||
responseStream << "\t\t\t\t\t\t</button>\n";
|
||||
responseStream << "\t\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 137 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div class=\"center-form-title\">\n";
|
||||
responseStream << "\t <h3>Ein neues Topic anlegen</h3>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div class=\"center-form-form\">\n";
|
||||
responseStream << "\t\t<form method=\"POST\" action=\"";
|
||||
#line 49 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 144 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/topic\">\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"topic-name\">Name</label>\n";
|
||||
responseStream << "\t\t\t<input type=\"text\" class=\"form-control\" id=\"topic-name\" name=\"topic-name\" value=\"";
|
||||
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( name );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"topic-auto-renew-account\">Auto Renew Hedera Account</label>\n";
|
||||
responseStream << "\t\t\t<select name=\"topic-auto-renew-account\" id=\"topic-auto-renew-account\">\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 52 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
for(auto it = hedera_accounts.begin(); it != hedera_accounts.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t<option title=\"";
|
||||
#line 55 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( model->toString() );
|
||||
responseStream << "\" value=\"";
|
||||
#line 55 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( model->getID() );
|
||||
responseStream << "\" ";
|
||||
#line 55 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
if(auto_renew_account == model->getID()) { responseStream << "selected=\"selected\"";
|
||||
#line 55 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
} responseStream << ">";
|
||||
#line 55 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( (*it)->toShortSelectOptionName() );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 56 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 153 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"topic-auto-renew-period\">Auto Renew Period in seconds</label>\n";
|
||||
responseStream << "\t\t\t<div><input class=\"form-control input-40\" id=\"topic-auto-renew-period\" value=\"";
|
||||
#line 59 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 156 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( auto_renew_period );
|
||||
responseStream << "\" type=\"number\" name=\"topic-auto-renew-period\"/><span style=\"margin-left:8px\" id=\"readable-auto-renew-period\"></span><div>\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"topic-group\">Group</label>\n";
|
||||
responseStream << "\t\t\t<select class=\"form-control\" name=\"topic-group\" id=\"topic-group\">\t\t\t\n";
|
||||
responseStream << "\t\t\t\t<option value=\"-1\">Keine Gruppe</option>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 62 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
for(auto it = groups.begin(); it != groups.end(); it++) {
|
||||
auto group_model = (*it)->getModel(); responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t<option title=\"";
|
||||
#line 64 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 162 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( group_model->getDescription() );
|
||||
responseStream << "\" value=\"";
|
||||
#line 64 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 162 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( group_model->getID() );
|
||||
responseStream << "\" ";
|
||||
#line 64 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 162 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
if(group_id == group_model->getID()) { responseStream << "selected=\"selected\"";
|
||||
#line 64 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 162 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
} responseStream << ">";
|
||||
#line 64 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 162 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( group_model->getName() );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 65 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 163 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t\n";
|
||||
responseStream << "\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"submit\" value=\"";
|
||||
#line 68 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 166 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( gettext("Add Topic") );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t\t</form>\n";
|
||||
@ -216,13 +355,13 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
// end include footer.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<script type=\"text/javascript\" src=\"";
|
||||
#line 73 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
#line 171 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "/js/time_calculations.js\"></script>\n";
|
||||
responseStream << "<script type=\"text/javascript\">\n";
|
||||
responseStream << "\tvar input = document.getElementById(\"topic-auto-renew-period\");\n";
|
||||
responseStream << "\tvar span = document.getElementById(\"readable-auto-renew-period\");\n";
|
||||
responseStream << "\tspan.innerHTML = getExactTimeDuration(input.value);\n";
|
||||
responseStream << "\tspan.innerHTML = '~ ' + getExactTimeDuration(input.value);\n";
|
||||
responseStream << "\tinput.addEventListener('keyup', function(e) {\n";
|
||||
responseStream << "\t\tspan.innerHTML = '~ ' + getExactTimeDuration(input.value);\n";
|
||||
responseStream << "\t});\n";
|
||||
|
||||
@ -19,7 +19,6 @@ namespace controller {
|
||||
|
||||
HederaAccount::~HederaAccount()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Poco::AutoPtr<HederaAccount> HederaAccount::create(int user_id, int account_hedera_id, int account_key_id, Poco::UInt64 balance/* = 0*/, model::table::HederaNetworkType type/* = HEDERA_MAINNET*/)
|
||||
@ -39,12 +38,29 @@ namespace controller {
|
||||
//mHederaID
|
||||
auto db = new model::table::HederaAccount(*it);
|
||||
auto hedera_account = new HederaAccount(db);
|
||||
hedera_account->mHederaID = HederaId::load(db->getAccountHederaId());
|
||||
resultVector.push_back(hedera_account);
|
||||
}
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<HederaAccount> HederaAccount::load(int id)
|
||||
{
|
||||
auto db = new model::table::HederaAccount();
|
||||
if (1 == db->loadFromDB("id", id)) {
|
||||
return new HederaAccount(db);
|
||||
}
|
||||
delete db;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<controller::HederaId> HederaAccount::getHederaId()
|
||||
{
|
||||
if (mHederaID.isNull()) {
|
||||
mHederaID = HederaId::load(getModel()->getAccountHederaId());
|
||||
}
|
||||
return mHederaID;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<HederaAccount> HederaAccount::load(Poco::AutoPtr<controller::HederaId> hederaId)
|
||||
{
|
||||
if (!hederaId->isExistInDB()) return nullptr;
|
||||
@ -176,7 +192,7 @@ namespace controller {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto query = model::hedera::Query::getBalance(mHederaID, hedera_node);
|
||||
auto query = model::hedera::Query::getBalance(getHederaId(), hedera_node);
|
||||
|
||||
if (!query) {
|
||||
printf("[%s] error creating query\n", functionName);
|
||||
@ -254,7 +270,7 @@ namespace controller {
|
||||
std::stringstream ss;
|
||||
auto model = getModel();
|
||||
ss << model::table::HederaAccount::hederaNetworkTypeToString((model::table::HederaNetworkType)model->getNetworkType()) << " ";
|
||||
ss << mHederaID->getModel()->toString() << " " << ((double)model->getBalance() / 100000000.0) << " Hbar";
|
||||
ss << getHederaId()->getModel()->toString() << " " << ((double)model->getBalance() / 100000000.0) << " Hbar";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
|
||||
@ -21,6 +21,7 @@ namespace controller {
|
||||
static Poco::AutoPtr<HederaAccount> create(int user_id, int account_hedera_id, int account_key_id, Poco::UInt64 balance = 0, model::table::HederaNetworkType type = model::table::HEDERA_MAINNET);
|
||||
|
||||
static std::vector<Poco::AutoPtr<HederaAccount>> load(const std::string& fieldName, int fieldValue);
|
||||
static Poco::AutoPtr<HederaAccount> load(int id);
|
||||
static Poco::AutoPtr<HederaAccount> load(Poco::AutoPtr<controller::HederaId> hederaId);
|
||||
static std::vector<Poco::AutoPtr<HederaAccount>> listAll();
|
||||
//! \brief for picking a account for paying transaction, mostly consensusSendMessage
|
||||
@ -34,7 +35,7 @@ namespace controller {
|
||||
inline const model::table::HederaAccount* getModel() const { return _getModel<model::table::HederaAccount>(); }
|
||||
|
||||
inline void setHederaId(Poco::AutoPtr<controller::HederaId> hederaId) { mHederaID = hederaId; }
|
||||
inline Poco::AutoPtr<controller::HederaId> getHederaId() { return mHederaID; }
|
||||
Poco::AutoPtr<controller::HederaId> getHederaId();
|
||||
|
||||
Poco::AutoPtr<controller::CryptoKey> getCryptoKey() const;
|
||||
|
||||
@ -48,8 +49,7 @@ namespace controller {
|
||||
protected:
|
||||
|
||||
HederaAccount(model::table::HederaAccount* dbModel);
|
||||
Poco::AutoPtr<controller::HederaId> mHederaID;
|
||||
|
||||
Poco::AutoPtr<HederaId> mHederaID;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -40,24 +40,39 @@ HederaRequestReturn HederaRequest::request(model::hedera::Query* query, model::h
|
||||
auto proto_response = response->getResponsePtr();
|
||||
auto connect_string = query->getConnectionString();
|
||||
|
||||
if (proto_query->has_cryptogetaccountbalance()) {
|
||||
grpc::Status status;
|
||||
std::string queryName;
|
||||
|
||||
if (proto_query->has_cryptogetaccountbalance())
|
||||
{
|
||||
auto stub = proto::CryptoService::NewStub(channel);
|
||||
// crypto account get balance currently hasn't fees
|
||||
query->setResponseType(proto::ANSWER_ONLY);
|
||||
|
||||
auto status = stub->cryptoGetBalance(&context, *proto_query, proto_response);
|
||||
if (status.ok()) {
|
||||
return HEDERA_REQUEST_RETURN_OK;
|
||||
}
|
||||
else {
|
||||
addError(new ParamError("Hedera Request", "crypto get balance error message:", status.error_message()));
|
||||
addError(new ParamError("Hedera Request", "details: ", status.error_details()));
|
||||
return HEDERA_REQUEST_RETURN_ERROR;
|
||||
}
|
||||
queryName = "crypte get balance";
|
||||
status = stub->cryptoGetBalance(&context, *proto_query, proto_response);
|
||||
|
||||
}
|
||||
else if (proto_query->has_consensusgettopicinfo())
|
||||
{
|
||||
auto stub = proto::ConsensusService::NewStub(channel);
|
||||
|
||||
queryName = "consensus topic get info";
|
||||
status = stub->getTopicInfo(&context, *proto_query, proto_response);
|
||||
|
||||
}
|
||||
return HEDERA_REQUEST_RETURN_OK;
|
||||
if (status.ok())
|
||||
{
|
||||
return HEDERA_REQUEST_RETURN_OK;
|
||||
}
|
||||
else if("" != queryName)
|
||||
{
|
||||
addError(new ParamError("Hedera Request", "query name: ", queryName));
|
||||
addError(new ParamError("Hedera Request", "error message: ", status.error_message()));
|
||||
addError(new ParamError("Hedera Request", "details: ", status.error_details()));
|
||||
return HEDERA_REQUEST_RETURN_ERROR;
|
||||
}
|
||||
return HEDERA_REQUEST_UNKNOWN_QUERY;
|
||||
}
|
||||
|
||||
HederaRequestReturn HederaRequest::request(model::hedera::Transaction* transaction, model::hedera::Response* response)
|
||||
@ -82,6 +97,7 @@ HederaRequestReturn HederaRequest::request(model::hedera::Transaction* transacti
|
||||
std::chrono::milliseconds(5000);
|
||||
context.set_deadline(deadline);
|
||||
auto transaction_type = transaction->getType();
|
||||
task->setTransactionId(transaction->getTransactionId());
|
||||
if (model::hedera::TRANSACTION_CONSENSUS_SUBMIT_MESSAGE == transaction_type) {
|
||||
auto stub = proto::ConsensusService::NewStub(channel);
|
||||
|
||||
|
||||
@ -19,7 +19,39 @@ namespace controller {
|
||||
return Poco::AutoPtr<HederaTopic>(hedera_topic);
|
||||
}
|
||||
|
||||
|
||||
std::vector<Poco::AutoPtr<HederaTopic>> HederaTopic::listAll()
|
||||
{
|
||||
auto db = new model::table::HederaTopic();
|
||||
std::vector<model::table::HederaTopicTuple> topic_list;
|
||||
// throw an unresolved external symbol error
|
||||
topic_list = db->loadAllFromDB<model::table::HederaTopicTuple>();
|
||||
|
||||
|
||||
std::vector<Poco::AutoPtr<HederaTopic>> resultVector;
|
||||
|
||||
resultVector.reserve(topic_list.size());
|
||||
for (auto it = topic_list.begin(); it != topic_list.end(); it++) {
|
||||
Poco::AutoPtr<HederaTopic> topic_ptr(new HederaTopic(new model::table::HederaTopic(*it)));
|
||||
resultVector.push_back(topic_ptr);
|
||||
}
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<HederaId> HederaTopic::getTopicHederaId()
|
||||
{
|
||||
if (mTopicHederaId.isNull()) {
|
||||
mTopicHederaId = HederaId::load(getModel()->getTopicHederaId());
|
||||
}
|
||||
return mTopicHederaId;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<HederaAccount> HederaTopic::getAutoRenewAccount()
|
||||
{
|
||||
if (mAutoRenewAccount.isNull()) {
|
||||
mAutoRenewAccount = HederaAccount::load(getModel()->getAutoRenewAccountId());
|
||||
}
|
||||
return mAutoRenewAccount;
|
||||
}
|
||||
|
||||
Poco::UInt64 HederaTopic::hederaCreateTopic()
|
||||
{
|
||||
|
||||
@ -12,6 +12,8 @@
|
||||
*/
|
||||
#include "TableControllerBase.h"
|
||||
#include "../model/table/HederaTopic.h"
|
||||
#include "HederaId.h"
|
||||
#include "HederaAccount.h"
|
||||
|
||||
|
||||
namespace controller {
|
||||
@ -22,18 +24,21 @@ namespace controller {
|
||||
~HederaTopic();
|
||||
|
||||
static Poco::AutoPtr<HederaTopic> create(const std::string& name, int autoRenewAccountId, int autoRenewPeriod, int groupId);
|
||||
|
||||
static std::vector<Poco::AutoPtr<HederaTopic>> listAll();
|
||||
//! \brief hedera call to create a hedera topic
|
||||
Poco::UInt64 hederaCreateTopic();
|
||||
|
||||
inline bool deleteFromDB() { return mDBModel->deleteFromDB(); }
|
||||
|
||||
Poco::AutoPtr<HederaId> getTopicHederaId();
|
||||
Poco::AutoPtr<HederaAccount> getAutoRenewAccount();
|
||||
|
||||
inline Poco::AutoPtr<model::table::HederaTopic> getModel() { return _getModel<model::table::HederaTopic>(); }
|
||||
|
||||
|
||||
protected:
|
||||
HederaTopic(model::table::HederaTopic* dbModel);
|
||||
Poco::AutoPtr<HederaId> mTopicHederaId;
|
||||
Poco::AutoPtr<HederaAccount> mAutoRenewAccount;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@ -261,4 +261,15 @@ namespace DataTypeConverter
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
Poco::Timestamp convertFromProtoTimestamp(const proto::Timestamp& timestamp)
|
||||
{
|
||||
// microseconds
|
||||
return timestamp.seconds() * 10e6 + (google::protobuf::int64)(timestamp.nanos()) / 10e3;
|
||||
}
|
||||
|
||||
Poco::Timespan convertFromProtoDuration(const proto::Duration& duration)
|
||||
{
|
||||
return (duration.seconds(), 0);
|
||||
}
|
||||
}
|
||||
@ -9,6 +9,9 @@
|
||||
#include "Poco/Data/LOB.h"
|
||||
#include "../SingletonManager/LanguageManager.h"
|
||||
|
||||
#include "../proto/hedera/Timestamp.pb.h"
|
||||
#include "../proto/hedera/Duration.pb.h"
|
||||
|
||||
#include "sodium.h"
|
||||
|
||||
namespace DataTypeConverter {
|
||||
@ -45,6 +48,9 @@ namespace DataTypeConverter {
|
||||
|
||||
//! \brief convert duration in string showing seconds, minutes, hours or days
|
||||
std::string convertTimespanToLocalizedString(Poco::Timespan duration, LanguageCatalog* lang);
|
||||
|
||||
Poco::Timestamp convertFromProtoTimestamp(const proto::Timestamp& timestamp);
|
||||
Poco::Timespan convertFromProtoDuration(const proto::Duration& duration);
|
||||
};
|
||||
|
||||
#endif // __GRADIDO_LOGIN_SERVER_LIB_DATA_TYPE_CONVERTER_H
|
||||
|
||||
@ -8,13 +8,13 @@ namespace model {
|
||||
HederaAccount::HederaAccount()
|
||||
: mUserId(0), mAccountHederaId(0), mAccountKeyId(0), mBalance(0), mType(0)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
HederaAccount::HederaAccount(int user_id, int account_hedera_id, int account_key_id, Poco::UInt64 balance/* = 0*/, HederaNetworkType type /*= HEDERA_MAINNET*/)
|
||||
: mUserId(user_id), mAccountHederaId(account_hedera_id), mAccountKeyId(account_key_id), mBalance(balance), mType(type)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
HederaAccount::HederaAccount(const HederaAccountTuple& tuple)
|
||||
@ -22,12 +22,12 @@ namespace model {
|
||||
mUserId(tuple.get<1>()), mAccountHederaId(tuple.get<2>()), mAccountKeyId(tuple.get<3>()),
|
||||
mBalance(tuple.get<4>()), mType(tuple.get<5>()), mUpdated(tuple.get<6>())
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
HederaAccount::~HederaAccount()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
std::string HederaAccount::toString()
|
||||
@ -44,6 +44,18 @@ namespace model {
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
std::string HederaAccount::getBalanceString()
|
||||
{
|
||||
char buffer[65]; memset(buffer, 0, 65);
|
||||
//100,000,000
|
||||
#ifdef _WIN32
|
||||
sprintf_s(buffer, 64, "%.8f HBAR", (double)(mBalance) / 100000000.0);
|
||||
#else
|
||||
sprintf(buffer, "%.8f HBAR", (double)(mBalance) / 100000000.0);
|
||||
#endif
|
||||
return std::string(buffer);
|
||||
}
|
||||
|
||||
|
||||
const char* HederaAccount::hederaNetworkTypeToString(HederaNetworkType type)
|
||||
{
|
||||
|
||||
@ -39,6 +39,7 @@ namespace model {
|
||||
|
||||
inline Poco::UInt64 getBalance() { return mBalance; }
|
||||
inline double getBalanceDouble() { return (double)mBalance / 100000000.0; }
|
||||
std::string getBalanceString();
|
||||
|
||||
inline HederaNetworkType getNetworkType() { return (HederaNetworkType)mType; }
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#include "HederaTopic.h"
|
||||
|
||||
#include "Poco/DateTimeFormatter.h"
|
||||
using namespace Poco::Data::Keywords;
|
||||
|
||||
namespace model {
|
||||
@ -10,6 +10,14 @@ namespace model {
|
||||
|
||||
}
|
||||
|
||||
HederaTopic::HederaTopic(const HederaTopicTuple& tuple)
|
||||
: ModelBase(tuple.get<0>()), mTopicHederaId(tuple.get<1>()), mName(tuple.get<2>()), mAutoRenewAccountHederaId(tuple.get<3>()),
|
||||
mAutoRenewPeriod(tuple.get<4>()), mGroupId(tuple.get<5>()), mAdminKeyId(tuple.get<6>()), mSubmitKeyId(tuple.get<7>()),
|
||||
mCurrentTimeout(tuple.get<8>()), mSequenceNumber(tuple.get<9>()), mUpdated(tuple.get<10>())
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
HederaTopic::HederaTopic(const std::string& name, int autoRenewAccountId, int autoRenewPeriod, int groupId)
|
||||
: mTopicHederaId(0), mName(name), mAutoRenewAccountHederaId(autoRenewAccountId), mAutoRenewPeriod(autoRenewAccountId), mGroupId(groupId),
|
||||
mAdminKeyId(0), mSubmitKeyId(0), mSequenceNumber(0)
|
||||
@ -18,8 +26,7 @@ namespace model {
|
||||
}
|
||||
|
||||
HederaTopic::~HederaTopic()
|
||||
{
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
std::string HederaTopic::toString()
|
||||
@ -38,6 +45,20 @@ namespace model {
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
std::string HederaTopic::getAutoRenewPeriodString() const
|
||||
{
|
||||
return secondsToReadableDuration(mAutoRenewPeriod) + "(" + std::to_string(mAutoRenewPeriod) + " seconds)";
|
||||
}
|
||||
|
||||
std::string HederaTopic::getCurrentTimeoutString() const
|
||||
{
|
||||
return Poco::DateTimeFormatter::format(mCurrentTimeout, "%Y-%m-%d %H:%M:%S");
|
||||
}
|
||||
std::string HederaTopic::getUpdatedString() const
|
||||
{
|
||||
return Poco::DateTimeFormatter::format(mUpdated, "%Y-%m-%d %H:%M:%S");
|
||||
}
|
||||
|
||||
Poco::Data::Statement HederaTopic::_loadFromDB(Poco::Data::Session session, const std::string& fieldName)
|
||||
{
|
||||
Poco::Data::Statement select(session);
|
||||
@ -51,6 +72,16 @@ namespace model {
|
||||
return select;
|
||||
|
||||
}
|
||||
Poco::Data::Statement HederaTopic::_loadAllFromDB(Poco::Data::Session session)
|
||||
{
|
||||
Poco::Data::Statement select(session);
|
||||
//typedef Poco::Tuple<int, int, std::string, int, Poco::UInt32, int, int, int, Poco::DateTime, Poco::UInt64, Poco::DateTime> HederaTopicTuple;
|
||||
|
||||
select << "SELECT id, topic_hedera_id, name, auto_renew_account_hedera_id, auto_renew_period, "
|
||||
<< "group_id, admin_key_id, submit_key_id, current_timeout, sequence_number, updated FROM " << getTableName();
|
||||
|
||||
return select;
|
||||
}
|
||||
Poco::Data::Statement HederaTopic::_loadIdFromDB(Poco::Data::Session session)
|
||||
{
|
||||
Poco::Data::Statement select(session);
|
||||
|
||||
@ -6,10 +6,14 @@
|
||||
namespace model {
|
||||
namespace table {
|
||||
|
||||
|
||||
typedef Poco::Tuple<int, int, std::string, int, Poco::UInt32, int, int, int, Poco::DateTime, Poco::UInt64, Poco::DateTime> HederaTopicTuple;
|
||||
|
||||
class HederaTopic : public ModelBase
|
||||
{
|
||||
public:
|
||||
HederaTopic();
|
||||
HederaTopic(const HederaTopicTuple& tuple);
|
||||
HederaTopic(const std::string& name, int autoRenewAccountId, int autoRenewPeriod, int groupId);
|
||||
~HederaTopic();
|
||||
|
||||
@ -21,10 +25,13 @@ namespace model {
|
||||
inline std::string getName() const { return mName; }
|
||||
inline Poco::UInt32 getAutoRenewAccountId() const { return mAutoRenewAccountHederaId; }
|
||||
inline Poco::UInt32 getAutoRenewPeriod() const { return mAutoRenewPeriod; }
|
||||
std::string getAutoRenewPeriodString() const;
|
||||
inline Poco::UInt32 getGroupId() const { return mGroupId;}
|
||||
inline Poco::DateTime getCurrentTimoout() const { return mCurrentTimeout; }
|
||||
inline Poco::DateTime getCurrentTimeout() const { return mCurrentTimeout; }
|
||||
std::string getCurrentTimeoutString() const;
|
||||
inline Poco::UInt64 getSequenceNumber() const { return mSequenceNumber; }
|
||||
inline Poco::DateTime getUpdated() const { return mUpdated; }
|
||||
std::string getUpdatedString() const;
|
||||
|
||||
inline void setTopicHederaID(Poco::UInt32 topidHederaId) { mTopicHederaId = topidHederaId;}
|
||||
inline void setSequeceNumber(Poco::UInt64 sequenceNumber) { mSequenceNumber = sequenceNumber; }
|
||||
@ -32,6 +39,7 @@ namespace model {
|
||||
|
||||
protected:
|
||||
Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::string& fieldName);
|
||||
Poco::Data::Statement _loadAllFromDB(Poco::Data::Session session);
|
||||
Poco::Data::Statement _loadIdFromDB(Poco::Data::Session session);
|
||||
Poco::Data::Statement _insertIntoDB(Poco::Data::Session session);
|
||||
|
||||
|
||||
@ -204,5 +204,29 @@ namespace model {
|
||||
|
||||
return Poco::DateTime(Poco::Timestamp());
|
||||
}
|
||||
|
||||
std::string ModelBase::secondsToReadableDuration(Poco::UInt64 seconds)
|
||||
{
|
||||
Poco::UInt64 value = 0;
|
||||
std::string result;
|
||||
std::string unit_name;
|
||||
|
||||
if (seconds <= 60) {
|
||||
return std::to_string(seconds) + " seconds";
|
||||
}
|
||||
else if (seconds <= 60 * 60) {
|
||||
Poco::UInt64 minutes = round(seconds / 60);
|
||||
return "~" + std::to_string(minutes) + " minutes";
|
||||
}
|
||||
else if (seconds <= 60 * 60 * 24) {
|
||||
Poco::UInt64 hours = round(seconds / 60 / 60);
|
||||
return "~" + std::to_string(hours) + " hours";
|
||||
}
|
||||
else {
|
||||
Poco::UInt64 days = round(seconds / 60 / 60 / 24);
|
||||
return "~" + std::to_string(days) + " days";
|
||||
}
|
||||
return "<unknown error>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,6 +58,8 @@ namespace model {
|
||||
|
||||
static Poco::DateTime parseElopageDate(std::string dateString);
|
||||
|
||||
static std::string secondsToReadableDuration(Poco::UInt64 seconds);
|
||||
|
||||
// for poco auto ptr
|
||||
void duplicate();
|
||||
void release();
|
||||
@ -158,20 +160,24 @@ namespace model {
|
||||
Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex);
|
||||
|
||||
auto cm = ConnectionManager::getInstance();
|
||||
Poco::Data::Statement select = _loadAllFromDB(cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER));
|
||||
select, Poco::Data::Keywords::into(results);
|
||||
try {
|
||||
Poco::Data::Statement select = _loadAllFromDB(cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER));
|
||||
select, Poco::Data::Keywords::into(results);
|
||||
|
||||
size_t resultCount = 0;
|
||||
try {
|
||||
resultCount = select.execute();
|
||||
size_t resultCount = 0;
|
||||
try {
|
||||
resultCount = select.execute();
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
addError(new ParamError(getTableName(), "mysql error by selecting all", ex.displayText().data()));
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
lock();
|
||||
addError(new ParamError(getTableName(), "mysql error by selecting all", ex.displayText().data()));
|
||||
unlock();
|
||||
addError(new Error(getTableName(), "loadAllFromDB not implemented!"));
|
||||
return results;
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
template<class WhereFieldType, class Tuple>
|
||||
|
||||
@ -263,18 +263,20 @@
|
||||
%>
|
||||
<div class="row">
|
||||
<div class="cell c2"><%= (*it)->getHederaId()->getModel()->toString() %></div>
|
||||
<div class="cell c3"><%= hedera_account_model->getBalanceDouble() %> hbar</div>
|
||||
<div class="cell c3"><%= hedera_account_model->getBalanceString() %></div>
|
||||
<div class="cell c2"><%= model::table::HederaAccount::hederaNetworkTypeToString(hedera_account_model->getNetworkType()) %></div>
|
||||
<div class="cell c3 <%= isEncrypted ? "success-color" : "alert-color"%>"><%= isEncrypted ? "Ja": "Nein" %></div>
|
||||
<div class="cell c3"><%= hedera_account_model->getUpdatedString() %></div>
|
||||
<button class="form-button" title="Anfrage an Hedera, aktuell kostenlos" onclick="window.location.href='<%= updateUrl %>'" >
|
||||
Update Balance
|
||||
</button>
|
||||
<% if(changeEncryption != "") { %>
|
||||
<button class="form-button" title="Ändere den Verschlüsselungsstatus des Private Keys in der Datenbank" onclick="window.location.href='<%= changeEncryption %>'">
|
||||
Change Encryption
|
||||
<div class="cell c5">
|
||||
<button class="form-button" title="Anfrage an Hedera, aktuell kostenlos" onclick="window.location.href='<%= updateUrl %>'" >
|
||||
Update Balance
|
||||
</button>
|
||||
<% } %>
|
||||
<% if(changeEncryption != "") { %>
|
||||
<button class="form-button" title="Ändere den Verschlüsselungsstatus des Private Keys in der Datenbank" onclick="window.location.href='<%= changeEncryption %>'">
|
||||
Change Encryption
|
||||
</button>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
|
||||
@ -6,10 +6,12 @@
|
||||
<%@ header include="SessionHTTPRequestHandler.h" %>
|
||||
<%!
|
||||
#include "../controller/HederaAccount.h"
|
||||
#include "../controller/HederaTopic.h"
|
||||
#include "../controller/Group.h"
|
||||
#include "../SingletonManager/SessionManager.h"
|
||||
#include "../ServerConfig.h"
|
||||
#include "../lib/DataTypeConverter.h"
|
||||
#include "Poco/Timespan.h"
|
||||
%>
|
||||
<%%
|
||||
const char* pageName = "Topic";
|
||||
@ -60,6 +62,7 @@
|
||||
|
||||
|
||||
auto hedera_accounts = controller::HederaAccount::load("user_id", user->getModel()->getID());
|
||||
//std::vector<Poco::AutoPtr<controller::HederaAccount>> hedera_accounts;
|
||||
|
||||
auto groups = controller::Group::listAll();
|
||||
std::map<int, int> group_indices;
|
||||
@ -69,8 +72,10 @@
|
||||
count++;
|
||||
}
|
||||
|
||||
auto hedera_topics = controller::HederaTopic::listAll();
|
||||
//std::vector<Poco::AutoPtr<controller::HederaTopic>> hedera_topics;
|
||||
|
||||
%><%@ include file="header.cpsp" %>
|
||||
%><%@ include file="header_large.cpsp" %>
|
||||
<style type="text/css">
|
||||
.center-form-form .input-40 {
|
||||
margin-left:0;
|
||||
@ -84,6 +89,54 @@
|
||||
<h1>Topic Admin Page</h1>
|
||||
</div>
|
||||
<div class="center-form-container">
|
||||
<div class="content-list">
|
||||
<div class="content-list-title">
|
||||
<h2>Hedera Topics</h2>
|
||||
</div>
|
||||
<div class="content-list-table">
|
||||
<div class="row">
|
||||
<div class="cell header-cell c2">Topic ID</div>
|
||||
<div class="cell header-cell c3">Name</div>
|
||||
<div class="cell header-cell c3">Network Type</div>
|
||||
<div class="cell header-cell c4">Auto Renew Account Balance</div>
|
||||
<div class="cell header-cell c4">Auto Renew Period</div>
|
||||
<div class="cell header-cell c3">Group ID</div>
|
||||
<div class="cell header-cell c3">Current Timeout</div>
|
||||
<div class="cell header-cell c2">Sequence Number</div>
|
||||
<div class="cell header-cell c3" title="Last Time Get update from Hedera">Last Updated</div>
|
||||
<div class="cell header-cell c5">Aktionen</div>
|
||||
</div>
|
||||
<% for(auto it = hedera_topics.begin(); it != hedera_topics.end(); it++) {
|
||||
auto hedera_topic_model = (*it)->getModel();
|
||||
auto updateUrl = ServerConfig::g_serverPath + "/topic?action=getTopicInfos&topic_id=" + std::to_string(hedera_topic_model->getID());
|
||||
auto auto_renew_account = (*it)->getAutoRenewAccount();
|
||||
auto renew_account_model = auto_renew_account->getModel();
|
||||
std::string timeout_color = "success-color";
|
||||
if(hedera_topic_model->getCurrentTimeout() < Poco::DateTime()) {
|
||||
timeout_color = "alert-color";
|
||||
} else if(hedera_topic_model->getCurrentTimeout() - Poco::DateTime() > Poco::Timespan(2,0,0,0,0)) {
|
||||
timeout_color = "orange-color";
|
||||
}
|
||||
%>
|
||||
<div class="row">
|
||||
<div class="cell c2"><%= (*it)->getTopicHederaId()->getModel()->toString() %></div>
|
||||
<div class="cell c3"><%= hedera_topic_model->getName() %></div>
|
||||
<div class="cell c3"><%= model::table::HederaAccount::hederaNetworkTypeToString(renew_account_model->getNetworkType()) %></div>
|
||||
<div class="cell c4"><%= renew_account_model->getBalanceString() %></div>
|
||||
<div class="cell c4"><%= hedera_topic_model->getAutoRenewPeriodString() %></div>
|
||||
<div class="cell c3"><%= hedera_topic_model->getGroupId() %></div>
|
||||
<div class="cell c3 <%= timeout_color %>"><%= hedera_topic_model->getCurrentTimeoutString() %></div>
|
||||
<div class="cell c2"><%= hedera_topic_model->getSequenceNumber() %></div>
|
||||
<div class="cell c3"><%= hedera_topic_model->getUpdatedString() %></div>
|
||||
<div class="cell c5">
|
||||
<button class="form-button" title="Query on Hedera, cost some fees" onclick="window.location.href='<%= updateUrl %>'" >
|
||||
get topic infos
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-form-title">
|
||||
<h3>Ein neues Topic anlegen</h3>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user