From fc304a84dba54e732486aef0c30b42aa06ed278d Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Fri, 3 Apr 2020 17:34:30 +0200 Subject: [PATCH] OO-4621: count permanent meeting as infinite meeting for quota --- .../manager/BigBlueButtonMeetingDAO.java | 2 ++ .../EditBigBlueButtonMeetingController.java | 30 +++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonMeetingDAO.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonMeetingDAO.java index 6ec4098e313..8fff3484294 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonMeetingDAO.java +++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonMeetingDAO.java @@ -174,6 +174,8 @@ public class BigBlueButtonMeetingDAO { .append(" (meeting.startDate>=:startDate and meeting.endDate<=:endDate)") .append(" or") .append(" (meeting.startDate<=:startDate and meeting.endDate>=:endDate)") + .append(" or") + .append(" meeting.permanent=true") .append(")"); return dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), Long.class) diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java index 2f754ad6862..03f1caab3f0 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java @@ -199,6 +199,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { private void updateUI() { boolean permanent = permanentEl.isAtLeastSelected(1); + permanentEl.clearError(); startDateEl.setVisible(!permanent); leadTimeEl.setVisible(!permanent); endDateEl.setVisible(!permanent); @@ -288,9 +289,14 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { } // dates ok - if(allOk && (!permanentEl.isVisible() || !permanentEl.isAtLeastSelected(1))) { - allOk &= validateDuration(); - allOk &= validateSlot(); + permanentEl.clearError(); + if(allOk) { + if(permanentEl.isVisible() && permanentEl.isAtLeastSelected(1)) { + allOk &= validatePermanentSlot(); + } else { + allOk &= validateDuration(); + allOk &= validateSlot(); + } } nameEl.clearError(); @@ -353,6 +359,24 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { return allOk; } + private boolean validatePermanentSlot() { + boolean allOk = true; + + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.YEAR, 12); + Date endDate = cal.getTime(); + + BigBlueButtonMeetingTemplate template = getSelectedTemplate(); + boolean slotFree = bigBlueButtonManager.isSlotAvailable(meeting, template, + new Date(), 0, endDate, 0); + if(!slotFree) { + permanentEl.setErrorKey("server.overloaded", null); + allOk &= false; + } + + return allOk; + } + private BigBlueButtonMeetingTemplate getSelectedTemplate() { String selectedTemplateId = templateEl.getSelectedKey(); return templates.stream() -- GitLab