<%@ page class="UserUpdateGroupPage" %> <%@ page baseClass="SessionHTTPRequestHandler" %> <%@ page ctorArg="Session*" %> <%@ header include="SessionHTTPRequestHandler.h" %> <%@ page compressed="true" %> <%! #include "../controller/Group.h" #include "../SingletonManager/SessionManager.h" #include "../SingletonManager/PendingTasksManager.h" #include "../lib/DataTypeConverter.h" #include "../model/gradido/Transaction.h" enum PageState { PAGE_STATE_OVERVIEW, PAGE_STATE_REQUEST_IS_RUNNING, PAGE_STATE_NO_GROUPS }; %> <%% const char* pageName = gettext("Gruppe wählen"); auto user = mSession->getNewUser(); auto sm = SessionManager::getInstance(); auto pt = PendingTasksManager::getInstance(); PageState state = PAGE_STATE_OVERVIEW; auto groups = controller::Group::listAll(); if(!form.empty()) { auto group_id_string = form.get("group_id", ""); if(group_id_string == "") { addError(new Error(gettext("Fehler"), gettext("HTML Form Fehler"))); } else { int group_id = 0; if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(group_id_string, group_id)) { std::string group_alias = ""; Poco::AutoPtr choosen_group; for(auto it = groups.begin(); it != groups.end(); it++) { auto group_model = (*it)->getModel(); if(group_model->getID() == group_id) { choosen_group = *it; } } if(choosen_group.isNull()) { addError(new Error(gettext("Fehler"), gettext("Interner Fehler"))); } else { auto addGroupMemberTransaction = model::gradido::Transaction::createGroupMemberUpdate(user, choosen_group); response.redirect(ServerConfig::g_serverPath + "/checkTransactions"); return; state = PAGE_STATE_REQUEST_IS_RUNNING; } } else { addError(new Error(gettext("Fehler"), gettext("HTML Value Type Fehler"))); } } } else { if(groups.size() == 0) { if(user->getModel()->getRole() == model::table::ROLE_ADMIN) { response.redirect(ServerConfig::g_serverPath + "/groups"); return; } state = PAGE_STATE_NO_GROUPS; } else { auto referer = request.find("Referer"); std::string refererString; if (referer != request.end()) { refererString = referer->second; } pt->lock("userUpdateGroup Page"); auto has_pending_group_add_member_task = pt->hasPendingTask(user, model::table::TASK_TYPE_GROUP_ADD_MEMBER); auto referer_was_checkTransaction = refererString.find("checkTransactions") != std::string::npos; if(has_pending_group_add_member_task) { state = PAGE_STATE_REQUEST_IS_RUNNING; std::vector> tasks = pt->getPendingTasks(user, model::table::TASK_TYPE_GROUP_ADD_MEMBER); // should be only one Poco::AutoPtr transaction = tasks[0].cast(); if(transaction->getSignCount() == 0) { pt->unlock(); response.redirect(ServerConfig::g_serverPath + "/checkTransactions"); return; } } else if(referer_was_checkTransaction && user->getModel()->getGroupId()) { pt->unlock(); response.redirect(user->getGroupBaseUrl()); return; } pt->unlock(); } } %><%@ include file="header.cpsp" %> <%= getErrorsHtml() %>
<% if(PAGE_STATE_OVERVIEW == state ) { %>

<%= gettext("Gruppe wählen") %>

<%= gettext("Bitte wähle die Gruppe/Gemeinschaft aus, zu der du gehörst.") %>

<%= gettext("Du bekommst eine Bestätigungsmail, nachdem dein Beitritt bestätigt wurde.") %>

<%= gettext("Auswahl") %>
Name
Alias
Url
<%= gettext("Description") %>
<% for(auto it = groups.begin(); it != groups.end(); it++) { auto group_model = (*it)->getModel(); %>
<%= group_model->getName() %>
<%= group_model->getAlias() %>
<%= group_model->getUrl() %>
<%= group_model->getDescription()%>
<% } %> "/>
<% } else if(PAGE_STATE_REQUEST_IS_RUNNING == state) { %>

<%= gettext("Deine Beitrittsanfrage wird bearbeitet, du bekommst eine E-Mail wenn sie bestätigt oder abgelehnt wurde.") %>

<%= gettext("Abmelden") %>

<% } else if(PAGE_STATE_NO_GROUPS == state) { %>

<%= gettext("Noch keine Gruppen vorhanden, bitte warte bis der Admin welche hinzugefügt hat.") %> <% } %>

<%@ include file="footer.cpsp" %>