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
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\n"; @@ -401,7 +431,7 @@ void AdminTopicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: // end include footer.cpsp responseStream << "\n"; responseStream << "\n"; responseStream << "