<%@ page class="CheckTransactionPage" %> <%@ page baseClass="SessionHTTPRequestHandler" %> <%@ page ctorArg="Session*" %> <%@ header include="SessionHTTPRequestHandler.h" %> <%@ page form="true" %> <%@ page compressed="true" %> <%! #include "../SingletonManager/SessionManager.h" #include "../SingletonManager/SingletonTaskObserver.h" #include "../SingletonManager/EmailManager.h" #include "../model/gradido/TransactionCreation.h" #include "../model/gradido/TransactionTransfer.h" #include "Poco/Thread.h" enum PageState { PAGE_TRANSACTION_CREATION, PAGE_TRANSACTION_TRANSFER, PAGE_NO_TRANSACTIONS, PAGE_USER_DATA_CORRUPTED }; %> <%% const char* pageName = gettext("Überprüfe Transaktion"); auto account_user = mSession->getNewUser(); auto user_model = account_user->getModel(); auto em = EmailManager::getInstance(); auto userBalance = account_user->getBalance(); std::string memo = ""; bool hasErrors = false; bool enableLogout = true; PageState state = PAGE_NO_TRANSACTIONS; if(!user_model->isEmailChecked()) { addError(new Error(gettext("E-Mail Aktivierung"), gettext("E-Mail wurde noch nicht aktiviert, du kannst leider noch keine Transaktionen ausführen!"))); hasErrors = true; } bool transaction_finalize_run = false; bool transaction_finalize_result = false; if(!form.empty()) { auto ok = form.get("ok", ""); auto abort = form.get("abort", ""); auto back = form.get("back", ""); if(abort != "") { transaction_finalize_result = mSession->finalizeTransaction(false, true); transaction_finalize_run = true; } else if(ok != "") { if(!account_user->hasPassword()) { auto pwd = form.get("sign-password", ""); auto loginResult = account_user->login(pwd); switch(loginResult) { case 0: addError(new Error(gettext("Passwort"), gettext("Das Passwort stimmt nicht. Bitte verwende dein Passwort von der Registrierung"))); hasErrors = true; break; case -1: case -2: addError(new Error(gettext("Passwort"), gettext("Gespeicherte Daten sind korrupt!"))); hasErrors = true; state = PAGE_USER_DATA_CORRUPTED; break; case -3: addError(new Error(gettext("Passwort"), gettext("Passwortprüfung läuft schon, bitte versuche es in 1-2 Minuten erneut."))); hasErrors = true; break; } } if(!hasErrors) { transaction_finalize_result = mSession->finalizeTransaction(true, false); transaction_finalize_run = true; } } else if(back == "back") { auto lastExternReferer = mSession->getLastReferer(); //lastExternReferer = ""; if(lastExternReferer != "" && lastExternReferer.find("transaction-send-coins") == std::string::npos) { //printf("last extern referer: %s\n", lastExternReferer.data()); response.redirect(lastExternReferer); } else { response.redirect(ServerConfig::g_php_serverPath + "state-balances/overview"); } return; } } size_t notReadyTransactions = 0; size_t sumTransactions = mSession->getProcessingTransactionCount(); if(sumTransactions == 0 && !transaction_finalize_run) { /*auto observer = SingletonTaskObserver::getInstance(); auto emailHash = DRMakeStringHash(mSession->getUser()->getEmail()); int breakCount = 0; while(observer->getTaskCount(emailHash, TASK_OBSERVER_SIGN_TRANSACTION) > 0) { if(breakCount > 100) break; breakCount++; Poco::Thread::sleep(10); }*/ auto lastExternReferer = mSession->getLastReferer(); //lastExternReferer = ""; if(lastExternReferer != "" && lastExternReferer.find("transaction-send-coins") == std::string::npos) { //printf("last extern referer: %s\n", lastExternReferer.data()); response.redirect(lastExternReferer); } else { response.redirect(ServerConfig::g_php_serverPath + "state-balances/overview"); } return; } // skip transactions with errors Poco::AutoPtr processingTransaction; Poco::AutoPtr transaction_body; do { processingTransaction = mSession->getNextReadyTransaction(¬ReadyTransactions); transaction_body = processingTransaction->getTransactionBody(); } while(!processingTransaction.isNull() && transaction_body.isNull()); if(sumTransactions > 0) { enableLogout = false; } if(PAGE_NO_TRANSACTIONS == state && !processingTransaction.isNull() && !transaction_body.isNull()) { auto transactionType = transaction_body->getType(); switch(transactionType) { case model::gradido::TRANSACTION_CREATION: state = PAGE_TRANSACTION_CREATION; break; case model::gradido::TRANSACTION_TRANSFER: state = PAGE_TRANSACTION_TRANSFER; break; } } %><%@ include file="header_navi_chr.cpsp" %> <% if(transaction_finalize_run) { %>
    <% if(transaction_finalize_result) { %>
  • Transaktion erfolgreich
  • <% } else { %>
  • Transaktion fehlgeschlagen
  • <% } %>
<% } %>
<% if(sumTransactions > 0 && sumTransactions - notReadyTransactions != 1) { %> <% if(notReadyTransactions > 0) { %> <%= sumTransactions - notReadyTransactions %> <%= gettext("von") %> <%= sumTransactions %> <%= gettext("Transaktionen sind bereit zum bestätigen") %> <% } else { %> <%= sumTransactions %> <%= gettext("Transaktionen warten darauf bestätigt zu werden.") %> <% } %> <% } %> <% if(state == PAGE_NO_TRANSACTIONS) { %> <% if(sumTransactions == 0) { %> <%= gettext("Es gibt zurzeit keine Transaktionen zum bestätigen") %> <% } else { %> <%= gettext("Transaktion(en) werden noch vorbereitet, bitte lade die Seite in wenigen Augenblicken erneut.") %> <% } %> <% } %>

<%= gettext("Transaktion Unterzeichnen") %>

<% if(state == PAGE_TRANSACTION_TRANSFER) { auto transferTransaction = transaction_body->getTransferTransaction(); memo = transferTransaction->getMemo(); %>

<%= gettext("Überweisung") %>

<%= gettext("Konto") %> <%= gettext("Gradido") %>
<% for(int i = 0; i < transferTransaction->getKontoTableSize(); i++) { %> <% if((i+1) % 2 == 0) { %>
<% } else { %>
<% } %> <%= transferTransaction->getKontoNameCell(i) %> <%= transferTransaction->getAmountCell(i) %>
<% } %>
<% } else if(PAGE_TRANSACTION_CREATION == state) { auto creationTransaction = transaction_body->getCreationTransaction(); auto transactionUser = creationTransaction->getUser(); memo = creationTransaction->getMemo(); %>

<%= gettext("Schöpfung") %>

<%= gettext("Konto") %> <%= gettext("Zieldatum") %> <%= gettext("Gradido") %>
<% if(!transactionUser.isNull()) { auto user_model = transactionUser->getModel(); %> <%= user_model->getFirstName() %> <%= user_model->getLastName() %> <<%= user_model->getEmail() %>> <% } else { %> 0x<%= creationTransaction->getPublicHex() %> <% } %> <%= creationTransaction->getTargetDateString() %> <%= creationTransaction->getAmountString() %> GDD
<% } else if(PAGE_USER_DATA_CORRUPTED == state) { %>

<%= gettext("Es gibt ein Problem mit deinen gespeicherten Daten, bitte wende dich an den")%><%=gettext("Support") %>

<% } %>
Aktives Konto
<%= user_model->getNameWithEmailHtml() %>
Verwendungszweck
<%= memo %>
<% if(!account_user->hasPassword()) {%>
">
<% } %> <% if(PAGE_USER_DATA_CORRUPTED != state && user_model->isEmailChecked()) { %> <% } %> <% if(sumTransactions == 0) { %> <% } %>
<%@ include file="footer_chr.cpsp" %>