diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index c68ee6a9183b35b69a68c30435fe178850ce66e2..fdafc52707d4863afabe74b0a95033c5d1552ad8 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -18,6 +18,7 @@ */ package de.thm.arsnova.controller; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -36,6 +37,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; +import de.thm.arsnova.connector.model.Course; import de.thm.arsnova.entities.LoggedIn; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; @@ -91,13 +93,26 @@ public class SessionController extends AbstractController { @ResponseBody @ResponseStatus(HttpStatus.CREATED) public final Session postNewSession(@RequestBody final Session session, final HttpServletResponse response) { + if (session != null && session.isCourseSession()) { + List<Course> courses = new ArrayList<Course>(); + Course course = new Course(); + course.setId(session.getCourseId()); + courses.add(course); + int sessionCount = sessionService.countSessions(courses); + if (sessionCount > 0) { + String appendix = " (" + String.valueOf(sessionCount + 1) + ")"; + session.setName(session.getName() + appendix); + session.setShortName(session.getShortName() + appendix); + } + } Session newSession = sessionService.saveSession(session); - if (session != null) { - return newSession; + + if (newSession == null) { + response.setStatus(HttpStatus.SERVICE_UNAVAILABLE.value()); + return null; } - response.setStatus(HttpStatus.SERVICE_UNAVAILABLE.value()); - return null; + return newSession; } @RequestMapping(value = "/", method = RequestMethod.GET) diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index 24641cc7afd12cbba207fbaa0de59d155fd3f351..17ebdef324d22f4e7a92d888e6927ec0e93498c2 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -21,6 +21,7 @@ package de.thm.arsnova.services; import java.util.List; +import de.thm.arsnova.connector.model.Course; import de.thm.arsnova.entities.LoggedIn; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; @@ -41,4 +42,6 @@ public interface ISessionService { LoggedIn registerAsOnlineUser(User user, String sessionkey); int countActiveUsers(String sessionkey); + + int countSessions(List<Course> courses); } diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 61a85a0e2ef829a700deebdc03053ca6209796dc..d61533588469e85dd3f539f4b660b1cd42e3a7fd 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -32,6 +32,7 @@ import org.springframework.stereotype.Service; import de.thm.arsnova.annotation.Authenticated; import de.thm.arsnova.connector.client.ConnectorClient; +import de.thm.arsnova.connector.model.Course; import de.thm.arsnova.dao.IDatabaseDao; import de.thm.arsnova.entities.LoggedIn; import de.thm.arsnova.entities.Session; @@ -173,4 +174,13 @@ public class SessionService implements ISessionService { return session1.getShortName().compareToIgnoreCase(session2.getShortName()); } } + + @Override + public int countSessions(List<Course> courses) { + List<Session> sessions = databaseDao.getCourseSessions(courses); + if (sessions == null) { + return 0; + } + return sessions.size(); + } }