From 219be9cbdaadd2384ae210abd31ed32f5e5f2860 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Wed, 20 May 2020 09:06:43 +0200 Subject: [PATCH] OO-4630: Disable to move appointments that already have participations --- .../nodes/appointments/ParticipationSearchParams.java | 5 +++++ .../nodes/appointments/ui/AppointmentEditController.java | 9 +++++++++ 2 files changed, 14 insertions(+) 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 e7c8b8556bd..4dc53578e81 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 f8a8e9f8955..ee414075559 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); -- GitLab