diff --git a/src/main/java/org/olat/course/nodes/appointments/ParticipationSearchParams.java b/src/main/java/org/olat/course/nodes/appointments/ParticipationSearchParams.java index e7c8b8556bdc8d640a468ca95c1de9bc0268cf78..4dc53578e812e8a1a77ba2b5081cebd590e115b0 100644 --- a/src/main/java/org/olat/course/nodes/appointments/ParticipationSearchParams.java +++ b/src/main/java/org/olat/course/nodes/appointments/ParticipationSearchParams.java @@ -20,6 +20,7 @@ package org.olat.course.nodes.appointments; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.stream.Collectors; @@ -113,6 +114,10 @@ public class ParticipationSearchParams { .map(AppointmentRef::getKey) .collect(Collectors.toSet()); } + + public void setAppointment(AppointmentRef appointment) { + this.appointmentKeys = Collections.singletonList(appointment.getKey()); + } public Date getStartAfter() { return startAfter; diff --git a/src/main/java/org/olat/course/nodes/appointments/ui/AppointmentEditController.java b/src/main/java/org/olat/course/nodes/appointments/ui/AppointmentEditController.java index f8a8e9f895573c81998d5780df280d0d76af7a11..ee4140755595123e8c660861bd14983cd585ad23 100644 --- a/src/main/java/org/olat/course/nodes/appointments/ui/AppointmentEditController.java +++ b/src/main/java/org/olat/course/nodes/appointments/ui/AppointmentEditController.java @@ -56,6 +56,7 @@ public class AppointmentEditController extends FormBasicController { private Topic topic; private Appointment appointment; + private final boolean hasParticipations; @Autowired private AppointmentsService appointmentsService; @@ -63,12 +64,18 @@ public class AppointmentEditController extends FormBasicController { public AppointmentEditController(UserRequest ureq, WindowControl wControl, Topic topic) { super(ureq, wControl); this.topic = topic; + this.hasParticipations = false; initForm(ureq); } public AppointmentEditController(UserRequest ureq, WindowControl wControl, Appointment appointment) { super(ureq, wControl); this.appointment = appointment; + + ParticipationSearchParams params = new ParticipationSearchParams(); + params.setAppointment(appointment); + this.hasParticipations = appointmentsService.getParticipationCount(params).longValue() > 0; + initForm(ureq); } @@ -78,12 +85,14 @@ public class AppointmentEditController extends FormBasicController { startEl = uifactory.addDateChooser("appointment.start", start, formLayout); startEl.setDateChooserTimeEnabled(true); startEl.setMandatory(true); + startEl.setEnabled(!hasParticipations); startEl.addActionListener(FormEvent.ONCHANGE); Date end = appointment != null? appointment.getEnd(): null; endEl = uifactory.addDateChooser("appointment.end", end, formLayout); endEl.setDateChooserTimeEnabled(true); endEl.setMandatory(true); + endEl.setEnabled(!hasParticipations); String location = appointment != null? appointment.getLocation(): null; locationEl = uifactory.addTextElement("appointment.location", 128, location, formLayout);