in openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java [141:240]
protected void onInitialize() {
header(new ResourceModel("815"));
size(Size.Large);
add(form = new AppointmentForm("appForm", getModel()));
addButton(save = new BootstrapAjaxButton(BUTTON_MARKUP_ID, new ResourceModel("144"), form, Buttons.Type.Outline_Primary) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target) {
Appointment a = form.getModelObject();
a.setRoom(form.createRoom ? form.appRoom : form.groom.getModelObject());
final List<MeetingMember> mms = a.getMeetingMembers() == null ? new ArrayList<>() : a.getMeetingMembers();
Set<Long> currentIds = new HashSet<>();
List<User> users = new ArrayList<>();
if (InviteeType.GROUP == rdi.getModelObject()) {
//lets iterate through all group users
for (Group g : groups.getModelObject()) {
for (GroupUser gu : groupUserDao.get(g.getId(), 0, Integer.MAX_VALUE)) {
User u = gu.getUser();
if (!currentIds.contains(u.getId())) {
users.add(u);
currentIds.add(u.getId());
}
}
}
} else {
users = new ArrayList<>(attendees.getModelObject());
for (User u : users) {
if (u.getId() != null) {
currentIds.add(u.getId());
}
}
}
//remove users
for (Iterator<MeetingMember> i = mms.iterator(); i.hasNext();) {
MeetingMember m = i.next();
if (!currentIds.contains(m.getUser().getId())) {
i.remove();
}
}
Set<Long> originalIds = new HashSet<>();
for (MeetingMember m : mms) {
originalIds.add(m.getUser().getId());
}
//add users
for (User u : users) {
if (u.getId() == null || !originalIds.contains(u.getId())) {
MeetingMember mm = new MeetingMember();
mm.setUser(u);
mm.setDeleted(false);
mm.setAppointment(a);
mms.add(mm);
}
}
a.setMeetingMembers(mms);
a.setStart(getDate(form.start.getModelObject()));
a.setEnd(getDate(form.end.getModelObject()));
a.setCalendar(form.cals.getModelObject());
if (a.getCalendar() != null) {
// Updates on the remote server and sets the href. Should be before dao update
calendarPanel.updatedeleteAppointment(target, CalendarDialog.DIALOG_TYPE.UPDATE_APPOINTMENT, a);
}
apptDao.update(a, getUserId());
target.add(feedback);
calendarPanel.refresh(target);
close(target);
}
@Override
protected void onError(AjaxRequestTarget target) {
target.add(feedback);
}
});
save.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
addButton(enterRoom = new BootstrapAjaxLink<>(BUTTON_MARKUP_ID, null, Buttons.Type.Outline_Success, new ResourceModel("lbl.enter")) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget handler) {
RoomEnterBehavior.roomEnter((MainPage)getPage(), handler, AppointmentDialog.this.getModelObject().getRoom().getId());
}
});
enterRoom.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
enterRoom.add(AttributeModifier.append("data-bs-dismiss", "modal"));
delete = new BootstrapAjaxLink<>(BUTTON_MARKUP_ID, null, Buttons.Type.Outline_Danger, new ResourceModel("80")) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget handler) {
deleteAppointment(handler);
AppointmentDialog.this.close(handler);
}
};
delete.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
addButton(delete.add(newOkCancelDangerConfirm(this, getString("833"))));
addButton(OmModalCloseButton.of());
super.onInitialize();
}