Skip to content
Snippets Groups Projects
Commit c81de439 authored by srosse's avatar srosse
Browse files

OO-4336: send email after graduation from waiting list to participant

parent d662ce34
No related branches found
No related tags found
No related merge requests found
...@@ -1343,7 +1343,7 @@ public class BusinessGroupServiceImpl implements BusinessGroupService { ...@@ -1343,7 +1343,7 @@ public class BusinessGroupServiceImpl implements BusinessGroupService {
if (!businessGroupRelationDAO.hasRole(identity, currBusinessGroup, GroupRoles.participant.name()) ) { if (!businessGroupRelationDAO.hasRole(identity, currBusinessGroup, GroupRoles.participant.name()) ) {
// Identity is not in participant-list => move identity from waiting-list to participant-list // Identity is not in participant-list => move identity from waiting-list to participant-list
addParticipant(ureqIdentity, ureqRoles, identity, currBusinessGroup, mailing, events); addParticipant(ureqIdentity, ureqRoles, identity, currBusinessGroup, mailing, events);
removeFromWaitingList(ureqIdentity, identity, currBusinessGroup, mailing, events); removeFromWaitingList(ureqIdentity, identity, currBusinessGroup, null, events);
response.getAddedIdentities().add(identity); response.getAddedIdentities().add(identity);
// notification mail is handled in controller // notification mail is handled in controller
} else { } else {
......
...@@ -49,6 +49,7 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellR ...@@ -49,6 +49,7 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellR
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiColumnModel;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableReduceEvent;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableSearchEvent; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableSearchEvent;
import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent; import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent;
import org.olat.core.gui.components.form.flexible.impl.elements.table.StaticFlexiCellRenderer; import org.olat.core.gui.components.form.flexible.impl.elements.table.StaticFlexiCellRenderer;
...@@ -131,12 +132,15 @@ public abstract class AbstractMemberListController extends FormBasicController i ...@@ -131,12 +132,15 @@ public abstract class AbstractMemberListController extends FormBasicController i
protected FlexiTableElement membersTable; protected FlexiTableElement membersTable;
protected MemberListTableModel memberListModel; protected MemberListTableModel memberListModel;
protected final TooledStackedPanel toolbarPanel; protected final TooledStackedPanel toolbarPanel;
private FormLink editButton, mailButton, removeButton; private FormLink editButton;
private FormLink mailButton;
private FormLink removeButton;
private ToolsController toolsCtrl; private ToolsController toolsCtrl;
protected CloseableModalController cmc; protected CloseableModalController cmc;
private ContactFormController contactCtrl; private ContactFormController contactCtrl;
private DialogBoxController confirmSendMailBox; private DialogBoxController confirmSendMailChangesBox;
private DialogBoxController confirmSendMailGraduatesBox;
private UserInfoMainController visitingCardCtrl; private UserInfoMainController visitingCardCtrl;
private EditMembershipController editMembersCtrl; private EditMembershipController editMembersCtrl;
private MemberLeaveConfirmationController leaveDialogBox; private MemberLeaveConfirmationController leaveDialogBox;
...@@ -368,11 +372,11 @@ public abstract class AbstractMemberListController extends FormBasicController i ...@@ -368,11 +372,11 @@ public abstract class AbstractMemberListController extends FormBasicController i
} }
} else if(event instanceof FlexiTableSearchEvent) { } else if(event instanceof FlexiTableSearchEvent) {
String cmd = event.getCommand(); String cmd = event.getCommand();
if(FlexiTableSearchEvent.SEARCH.equals(event.getCommand()) || FlexiTableSearchEvent.QUICK_SEARCH.equals(event.getCommand())) { if(FlexiTableReduceEvent.SEARCH.equals(event.getCommand()) || FlexiTableReduceEvent.QUICK_SEARCH.equals(event.getCommand())) {
FlexiTableSearchEvent se = (FlexiTableSearchEvent)event; FlexiTableSearchEvent se = (FlexiTableSearchEvent)event;
String search = se.getSearch(); String search = se.getSearch();
doSearch(search); doSearch(search);
} else if(FlexiTableSearchEvent.RESET.getCommand().equals(cmd)) { } else if(FormEvent.RESET.getCommand().equals(cmd)) {
doResetSearch(); doResetSearch();
} }
} }
...@@ -441,15 +445,19 @@ public abstract class AbstractMemberListController extends FormBasicController i ...@@ -441,15 +445,19 @@ public abstract class AbstractMemberListController extends FormBasicController i
MemberPermissionChangeEvent e = (MemberPermissionChangeEvent)event; MemberPermissionChangeEvent e = (MemberPermissionChangeEvent)event;
doConfirmChangePermission(ureq, e, null); doConfirmChangePermission(ureq, e, null);
} }
} else if(confirmSendMailBox == source) { } else if(confirmSendMailChangesBox == source) {
boolean sendMail = DialogBoxUIFactory.isYesEvent(event) || DialogBoxUIFactory.isOkEvent(event); boolean sendMail = DialogBoxUIFactory.isYesEvent(event) || DialogBoxUIFactory.isOkEvent(event);
MailConfirmation confirmation = (MailConfirmation)confirmSendMailBox.getUserObject(); MailConfirmation confirmation = (MailConfirmation)confirmSendMailChangesBox.getUserObject();
MemberPermissionChangeEvent e =confirmation.getE(); MemberPermissionChangeEvent e =confirmation.getE();
if(e.getMember() != null) { if(e.getMember() != null) {
doChangePermission(ureq, e, sendMail); doChangePermission(ureq, e, sendMail);
} else { } else {
doChangePermission(ureq, e, confirmation.getMembers(), sendMail); doChangePermission(ureq, e, confirmation.getMembers(), sendMail);
} }
} else if(confirmSendMailGraduatesBox == source) {
boolean sendMail = DialogBoxUIFactory.isYesEvent(event) || DialogBoxUIFactory.isOkEvent(event);
GraduationConfirmation confirmation = (GraduationConfirmation)confirmSendMailGraduatesBox.getUserObject();
doGraduate(confirmation.getRows(), sendMail);
} else if (source == contactCtrl) { } else if (source == contactCtrl) {
if(cmc != null) { if(cmc != null) {
cmc.deactivate(); cmc.deactivate();
...@@ -602,8 +610,8 @@ public abstract class AbstractMemberListController extends FormBasicController i ...@@ -602,8 +610,8 @@ public abstract class AbstractMemberListController extends FormBasicController i
doChangePermission(ureq, e, members, true); doChangePermission(ureq, e, members, true);
} }
} else { } else {
confirmSendMailBox = activateYesNoDialog(ureq, null, translate("dialog.modal.bg.send.mail"), confirmSendMailBox); confirmSendMailChangesBox = activateYesNoDialog(ureq, null, translate("dialog.modal.bg.send.mail"), confirmSendMailChangesBox);
confirmSendMailBox.setUserObject(new MailConfirmation(e, members)); confirmSendMailChangesBox.setUserObject(new MailConfirmation(e, members));
} }
} }
...@@ -680,12 +688,23 @@ public abstract class AbstractMemberListController extends FormBasicController i ...@@ -680,12 +688,23 @@ public abstract class AbstractMemberListController extends FormBasicController i
listenTo(cmc); listenTo(cmc);
} }
protected void doGraduate(List<MemberRow> members) { protected void doConfirmGraduate(UserRequest ureq, List<MemberRow> members) {
boolean mailMandatory = groupModule.isMandatoryEnrolmentEmail(ureq.getUserSession().getRoles());
if(mailMandatory) {
doGraduate(members, true);
} else {
confirmSendMailGraduatesBox = activateYesNoDialog(ureq, null, translate("dialog.modal.bg.send.mail"), confirmSendMailGraduatesBox);
confirmSendMailGraduatesBox.setUserObject(new GraduationConfirmation(members));
}
}
protected void doGraduate(List<MemberRow> members, boolean sendEmail) {
MailPackage sendmailPackage = new MailPackage(sendEmail);
if(businessGroup != null) { if(businessGroup != null) {
List<Long> identityKeys = getMemberKeys(members); List<Long> identityKeys = getMemberKeys(members);
List<Identity> identitiesToGraduate = securityManager.loadIdentityByKeys(identityKeys); List<Identity> identitiesToGraduate = securityManager.loadIdentityByKeys(identityKeys);
businessGroupService.moveIdentityFromWaitingListToParticipant(getIdentity(), identitiesToGraduate, businessGroupService.moveIdentityFromWaitingListToParticipant(getIdentity(), identitiesToGraduate,
businessGroup, null); businessGroup, sendmailPackage);
} else { } else {
Map<Long, BusinessGroup> groupsMap = new HashMap<>(); Map<Long, BusinessGroup> groupsMap = new HashMap<>();
Map<BusinessGroup, List<Identity>> graduatesMap = new HashMap<>(); Map<BusinessGroup, List<Identity>> graduatesMap = new HashMap<>();
...@@ -716,7 +735,7 @@ public abstract class AbstractMemberListController extends FormBasicController i ...@@ -716,7 +735,7 @@ public abstract class AbstractMemberListController extends FormBasicController i
BusinessGroup fullGroup = entry.getKey(); BusinessGroup fullGroup = entry.getKey();
List<Identity> identitiesToGraduate = entry.getValue(); List<Identity> identitiesToGraduate = entry.getValue();
businessGroupService.moveIdentityFromWaitingListToParticipant(getIdentity(), identitiesToGraduate, businessGroupService.moveIdentityFromWaitingListToParticipant(getIdentity(), identitiesToGraduate,
fullGroup, null); fullGroup, sendmailPackage);
} }
} }
reloadModel(); reloadModel();
...@@ -841,6 +860,18 @@ public abstract class AbstractMemberListController extends FormBasicController i ...@@ -841,6 +860,18 @@ public abstract class AbstractMemberListController extends FormBasicController i
row.setChatLink(chatLink); row.setChatLink(chatLink);
} }
private class GraduationConfirmation {
private final List<MemberRow> rows;
public GraduationConfirmation(List<MemberRow> rows) {
this.rows = new ArrayList<>(rows);
}
public List<MemberRow> getRows() {
return rows;
}
}
private class MailConfirmation { private class MailConfirmation {
private final List<Identity> members; private final List<Identity> members;
private final MemberPermissionChangeEvent e; private final MemberPermissionChangeEvent e;
...@@ -924,7 +955,7 @@ public abstract class AbstractMemberListController extends FormBasicController i ...@@ -924,7 +955,7 @@ public abstract class AbstractMemberListController extends FormBasicController i
Link link = (Link)source; Link link = (Link)source;
String cmd = link.getCommand(); String cmd = link.getCommand();
if(TABLE_ACTION_GRADUATE.equals(cmd)) { if(TABLE_ACTION_GRADUATE.equals(cmd)) {
doGraduate(Collections.singletonList(row)); doConfirmGraduate(ureq, Collections.singletonList(row));
} else if(TABLE_ACTION_EDIT.equals(cmd)) { } else if(TABLE_ACTION_EDIT.equals(cmd)) {
openEdit(ureq, row); openEdit(ureq, row);
} else if(TABLE_ACTION_REMOVE.equals(cmd)) { } else if(TABLE_ACTION_REMOVE.equals(cmd)) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment