diff --git a/skeema/gradido_login/hedera_topics.sql b/skeema/gradido_login/hedera_topics.sql
index 8bf279f3b..3e0160daf 100644
--- a/skeema/gradido_login/hedera_topics.sql
+++ b/skeema/gradido_login/hedera_topics.sql
@@ -9,6 +9,8 @@ CREATE TABLE `hedera_topics` (
`submit_key_id` int unsigned DEFAULT NULL,
`current_timeout` DATETIME NOT NULL DEFAULT '2000-01-01 00:00:00',
`sequence_number` bigint unsigned DEFAULT '0',
+ `running_hash` VARBINARY(64) DEFAULT NULL,
+ `running_hash_version` int unsigned DEFAULT 0,
`updated` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `topic_hedera_id` (`topic_hedera_id`)
diff --git a/src/cpp/HTTPInterface/AdminTopicPage.cpp b/src/cpp/HTTPInterface/AdminTopicPage.cpp
index 728b91903..ccb33a5a2 100644
--- a/src/cpp/HTTPInterface/AdminTopicPage.cpp
+++ b/src/cpp/HTTPInterface/AdminTopicPage.cpp
@@ -124,7 +124,26 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
if(DataTypeConverter::strToInt(group_id_string, group_id) != DataTypeConverter::NUMBER_PARSE_OKAY) {
addError(new Error("Int convert error", "Error converting group_id to int"));
}
- }
+ }
+ //const std::string& name, int autoRenewAccountId, int autoRenewPeriod, int groupId
+
+ auto hedera_topic = controller::HederaTopic::create(name, auto_renew_account, auto_renew_period, group_id);
+ if(!hedera_topic->getModel()->insertIntoDB(true)) {
+ addError(new Error("Topic", "error saving into db"));
+ } else {
+ auto payer = controller::HederaAccount::load(auto_renew_account);
+ if(payer.isNull()) {
+ addError(new Error("Payer", "payer account not found"));
+ } else {
+ auto hedera_task = hedera_topic->createTopic(payer, user);
+ if(hedera_task.isNull()) {
+ addError(new Error("Create Topic", "Failed"));
+ getErrors(hedera_topic);
+ }
+ }
+ }
+
+
}
@@ -208,7 +227,7 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
responseStream << "\t}\n";
responseStream << "\t\n";
responseStream << "\n";
-#line 133 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( getErrorsHtml() );
responseStream << "\n";
responseStream << "
\n";
@@ -233,7 +252,7 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
responseStream << "\t\t\t\t
Aktionen
\n";
responseStream << "\t\t\t
\n";
responseStream << "\t\t\t";
-#line 155 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 174 "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());
@@ -245,58 +264,69 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
} else if((hedera_topic_model->getCurrentTimeout() - Poco::DateTime()) < Poco::Timespan(2,0,0,0,0)) {
timeout_color = "orange-color";
}
+ std::string topic_hedera_id_string = "";
+ auto topic_hedera_id = (*it)->getTopicHederaId();
+ if(!topic_hedera_id.isNull()) {
+ topic_hedera_id_string = topic_hedera_id->getModel()->toString();
+ }
+
responseStream << "\n";
responseStream << "\t\t\t\t\n";
responseStream << "\t\t\t\t\t
";
-#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
- responseStream << ( (*it)->getTopicHederaId()->getModel()->toString() );
+#line 193 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+ responseStream << ( topic_hedera_id_string );
responseStream << "
\n";
responseStream << "\t\t\t\t\t
";
-#line 169 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 194 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( hedera_topic_model->getName() );
responseStream << "
\n";
responseStream << "\t\t\t\t\t
";
-#line 170 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 195 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( model::table::HederaAccount::hederaNetworkTypeToString(renew_account_model->getNetworkType()) );
responseStream << "
\n";
responseStream << "\t\t\t\t\t
";
-#line 171 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( renew_account_model->getBalanceString() );
responseStream << "
\n";
responseStream << "\t\t\t\t\t
";
-#line 172 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( hedera_topic_model->getAutoRenewPeriodString() );
responseStream << "
\n";
responseStream << "\t\t\t\t\t
";
-#line 173 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 198 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( hedera_topic_model->getGroupId() );
responseStream << "
\n";
responseStream << "\t\t\t\t\t
";
-#line 174 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 199 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( hedera_topic_model->getCurrentTimeoutString() );
responseStream << "
\n";
responseStream << "\t\t\t\t\t
";
-#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( hedera_topic_model->getSequenceNumber() );
responseStream << "
\n";
responseStream << "\t\t\t\t\t
";
-#line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 201 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
responseStream << ( hedera_topic_model->getUpdatedString() );
responseStream << "
\n";
- responseStream << "\t\t\t\t\t
\n";
+ responseStream << "\t\t\t\t\t
";
+#line 202 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+ if(!topic_hedera_id.isNull()) { responseStream << "\n";
responseStream << "\t\t\t\t\t\t\n";
+ responseStream << "\t\t\t\t\t\t";
+#line 206 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+ } responseStream << "\n";
responseStream << "\t\t\t\t\t
\n";
responseStream << "\t\t\t\t
\n";
responseStream << "\t\t\t";
-#line 183 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
+#line 209 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminTopic.cpsp"
} responseStream << "\n";
responseStream << "\t\t
\n";
responseStream << "\t\n";
@@ -305,72 +335,72 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
responseStream << "\t\n";
responseStream << "\t