protected void onInitialize()

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();
	}