diff --git a/src/main/java/de/jottyfan/camporganizer/module/common/IndexController.java b/src/main/java/de/jottyfan/camporganizer/module/common/IndexController.java index ba29166..58a6ab0 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/common/IndexController.java +++ b/src/main/java/de/jottyfan/camporganizer/module/common/IndexController.java @@ -35,7 +35,7 @@ public class IndexController extends CommonController { @GetMapping("/") public String index(Model model) { super.setupSession(model, request); - model.addAttribute("camps", service.getAllCamps()); + model.addAttribute("camps", service.getAllCamps(true)); return super.isLoggedIn(request) ? dashboard(model) : "/index"; } @@ -45,7 +45,7 @@ public class IndexController extends CommonController { model.addAttribute("mybookings", service.getBookingsOf(super.getCurrentUser(request))); model.addAttribute("bookingBean", new BookingBean()); model.addAttribute("keycloakProfileUrl", keycloak.getUserClientUrl()); - model.addAttribute("camps", service.getAllCamps()); + model.addAttribute("camps", service.getAllCamps(true)); return "/dashboard"; } diff --git a/src/main/java/de/jottyfan/camporganizer/module/common/IndexService.java b/src/main/java/de/jottyfan/camporganizer/module/common/IndexService.java index aba2b01..878d5c8 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/common/IndexService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/common/IndexService.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.stream.Stream; import org.jooq.Condition; +import org.jooq.impl.DSL; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -28,8 +29,8 @@ public class IndexService { * * @return the list of found camps */ - public List getAllCamps() { - Condition condition = V_CAMP.DEPART.greaterOrEqual(LocalDateTime.now()); + public List getAllCamps(Boolean upcomingOnly) { + Condition condition = upcomingOnly ? V_CAMP.DEPART.greaterOrEqual(LocalDateTime.now()) : DSL.trueCondition(); Stream stream = gateway.getAllCamps(condition); List list = new ArrayList<>(); stream.forEach(o -> list.add(o)); diff --git a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationController.java b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationController.java index dd67c19..8d75ba1 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationController.java +++ b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationController.java @@ -31,13 +31,17 @@ public class RegistrationController extends CommonController { @GetMapping("/registration/{fkCamp}") public String index(@PathVariable(name = "fkCamp", required = true) Integer fkCamp, Model model) { super.setupSession(model, request); - CampBean campBean = service.getCamp(fkCamp); - model.addAttribute("camp", campBean); - RegistrationBean bean = new RegistrationBean(); - bean.setFkCamp(fkCamp); - bean.setRegisterInKeycloak(true); // we want people to register generally - model.addAttribute("bean", bean); - return "/registration/registration"; + if (service.campIsNotYetOver(fkCamp)) { + CampBean campBean = service.getCamp(fkCamp); + model.addAttribute("camp", campBean); + RegistrationBean bean = new RegistrationBean(); + bean.setFkCamp(fkCamp); + bean.setRegisterInKeycloak(true); // we want people to register generally + model.addAttribute("bean", bean); + return "/registration/registration"; + } else { + return "/registration/isover"; + } } @PostMapping("/registration/register") diff --git a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationGateway.java b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationGateway.java index 4db7f11..e6ab202 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationGateway.java +++ b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationGateway.java @@ -239,4 +239,26 @@ public class RegistrationGateway { }); return lrw.getCounter(); } + + /** + * returns true if the end date of the camp is not yet over + * + * @param fkCamp the camp ID + * @return true or false + */ + public Boolean campIsNotYetOver(Integer fkCamp) { + SelectConditionStep> sql = jooq + // @formatter:off + .select(T_CAMP.DEPART) + .from(T_CAMP) + .where(T_CAMP.PK.eq(fkCamp)); + // @formatter:on + LOGGER.debug(sql.toString()); + for (Record1 r : sql.fetch()) { + LocalDateTime depart = r.get(T_CAMP.DEPART); + LocalDateTime now = LocalDateTime.now(); + return now.isBefore(depart); + } + return false; + } } diff --git a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationService.java b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationService.java index c40bda0..0b753e3 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationService.java +++ b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationService.java @@ -22,6 +22,16 @@ public class RegistrationService { @Autowired private KeycloakRepository keycloak; + /** + * return true if the camp is not yet over + * + * @param fkCamp the camp ID + * @return true or false + */ + public Boolean campIsNotYetOver(Integer fkCamp) { + return gateway.campIsNotYetOver(fkCamp); + } + /** * get the camp * diff --git a/src/main/resources/templates/dashboard.html b/src/main/resources/templates/dashboard.html index 92db3c1..2e6f86e 100644 --- a/src/main/resources/templates/dashboard.html +++ b/src/main/resources/templates/dashboard.html @@ -9,15 +9,6 @@ - @@ -30,12 +21,54 @@
+ +
+
+
+ +
+
+
+
+
+
+
+ +
+

+
+
+
+ ICON +
+
+
+ ICON +
+
+
+ ICON +
+
+ +
+
+
+
+
+
+ + -
Es wurden noch keine Anmeldungen für eine Freizeit hinterlegt.
+ +

diff --git a/src/main/resources/templates/registration/isover.html b/src/main/resources/templates/registration/isover.html new file mode 100644 index 0000000..8726a60 --- /dev/null +++ b/src/main/resources/templates/registration/isover.html @@ -0,0 +1,31 @@ + + + +Camp Organizer 2 + + + + + + + + + + +
+
+ Die Freizeit ist bereits vorbei. Du kannst dich nur zu Freizeiten anmelden, die noch nicht beendet worden sind. +
+ +
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/registration/registration.html b/src/main/resources/templates/registration/registration.html index c8423ea..1b0a0af 100644 --- a/src/main/resources/templates/registration/registration.html +++ b/src/main/resources/templates/registration/registration.html @@ -17,6 +17,7 @@
+ [[${error}]]