From 03eb781a988689e79c46c122340df4b7b6584e30 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Sat, 16 Mar 2024 22:40:36 +0100 Subject: [PATCH] added start_booking, see #14 --- build.gradle | 16 ++++---- .../module/admin/AdminRepository.java | 12 ++++-- .../module/admin/model/CampBean.java | 19 +++++++++ .../registration/RegistrationRepository.java | 9 +++-- .../module/registration/model/CampBean.java | 31 +++++++++++++++ .../resources/templates/admin/camp_edit.html | 39 ++++++++----------- .../templates/fragments/camplist.html | 9 ++++- .../templates/registration/registration.html | 9 +++-- 8 files changed, 101 insertions(+), 43 deletions(-) diff --git a/build.gradle b/build.gradle index 7cf7ed8..d935318 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = 'de.jottyfan.camporganizer' -version = '0.7.6' +version = '0.7.7' description = """CampOrganizer2""" @@ -41,12 +41,12 @@ war { } dependencies { - implementation 'org.jooq:jooq:3.19.1' - implementation 'de.jottyfan:COJooq:2024.02.23' + implementation 'org.jooq:jooq:3.19.6' + implementation 'de.jottyfan:COJooq:2024.03.16c' - implementation 'org.apache.logging.log4j:log4j-api:2.22.0' - implementation 'org.apache.logging.log4j:log4j-core:2.22.0' - implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.22.0' + implementation 'org.apache.logging.log4j:log4j-api:2.23.1' + implementation 'org.apache.logging.log4j:log4j-core:2.23.1' + implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.23.1' implementation 'org.webjars:bootstrap:5.3.2' implementation 'org.webjars:font-awesome:6.5.1' @@ -58,8 +58,8 @@ dependencies { implementation 'net.sf.biweekly:biweekly:0.6.7' // for using the keycloak rest interface - implementation 'org.keycloak:keycloak-server-spi:23.0.3' - implementation 'org.keycloak:keycloak-admin-client:23.0.3' + implementation 'org.keycloak:keycloak-server-spi:24.0.1' + implementation 'org.keycloak:keycloak-admin-client:24.0.1' implementation 'org.jboss.resteasy:resteasy-client:6.2.6.Final' // backward compatibility until the complete registration is converted to keycloak diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java index 6de8e92..79e735f 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/AdminRepository.java @@ -25,7 +25,7 @@ import org.jooq.DeleteConditionStep; import org.jooq.Field; import org.jooq.InsertResultStep; import org.jooq.InsertReturningStep; -import org.jooq.InsertValuesStep15; +import org.jooq.InsertValuesStep16; import org.jooq.InsertValuesStep3; import org.jooq.Record4; import org.jooq.Record5; @@ -435,10 +435,12 @@ public class AdminRepository { jooq.transaction(t -> { LocalDate arriveDate = bean.getArrive(); LocalDate departDate = bean.getDepart(); + LocalDate startBookingDate = bean.getStartBooking(); LocalDateTime arrive = arriveDate == null ? null : arriveDate.atStartOfDay(); LocalDateTime depart = departDate == null ? null : departDate.atStartOfDay(); + LocalDateTime startBooking = startBookingDate == null ? null : startBookingDate.atStartOfDay(); if (bean.getPk() == null) { - InsertValuesStep15 sql = DSL + InsertValuesStep16 sql = DSL .using(t) // @formatter:off .insertInto(T_CAMP, @@ -456,10 +458,11 @@ public class AdminRepository { T_CAMP.BEDS_FEMALE, T_CAMP.BEDS_MALE, T_CAMP.BLOCKED_BEDS_FEMALE, - T_CAMP.BLOCKED_BEDS_MALE) + T_CAMP.BLOCKED_BEDS_MALE, + T_CAMP.START_BOOKING) .values(arrive, bean.getCountries(), depart, bean.getFkDocument(), bean.getFkLocation(), bean.getFkProfile(), bean.getLockSales() != null ? bean.getLockSales() : false, bean.getMaxAge(), bean.getMinAge(), bean.getName(), bean.getPrice(), - bean.getBedsFemale(), bean.getBedsMale(), bean.getBlockedBedsFemale(), bean.getBlockedBedsMale()); + bean.getBedsFemale(), bean.getBedsMale(), bean.getBlockedBedsFemale(), bean.getBlockedBedsMale(), startBooking); // @formatter:on LOGGER.debug(sql.toString()); sql.execute(); @@ -482,6 +485,7 @@ public class AdminRepository { .set(T_CAMP.BEDS_MALE, bean.getBedsMale()) .set(T_CAMP.BLOCKED_BEDS_FEMALE, bean.getBlockedBedsFemale()) .set(T_CAMP.BLOCKED_BEDS_MALE, bean.getBlockedBedsMale()) + .set(T_CAMP.START_BOOKING, startBooking) .where(T_CAMP.PK.eq(bean.getPk())); // @formatter:on LOGGER.debug(sql.toString()); diff --git a/src/main/java/de/jottyfan/camporganizer/module/admin/model/CampBean.java b/src/main/java/de/jottyfan/camporganizer/module/admin/model/CampBean.java index df355b8..d70a0f5 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/admin/model/CampBean.java +++ b/src/main/java/de/jottyfan/camporganizer/module/admin/model/CampBean.java @@ -57,6 +57,9 @@ public class CampBean implements Serializable { @NotNull @Min(value = 0) private Integer blockedBedsMale; + @NotNull + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate startBooking; /** * generate a camp bean out of r @@ -71,6 +74,7 @@ public class CampBean implements Serializable { CampBean bean = new CampBean(); LocalDateTime arrive = r.getArrive(); LocalDateTime depart = r.getDepart(); + LocalDateTime startBooking = r.getStartBooking(); bean.setArrive(arrive == null ? null : arrive.toLocalDate()); bean.setCountries(r.getCountries()); bean.setDepart(depart == null ? null : depart.toLocalDate()); @@ -87,6 +91,7 @@ public class CampBean implements Serializable { bean.setBedsMale(r.getBedsMale()); bean.setBlockedBedsFemale(r.getBlockedBedsFemale()); bean.setBlockedBedsMale(r.getBlockedBedsMale()); + bean.setStartBooking(startBooking == null ? null : startBooking.toLocalDate()); return bean; } @@ -344,4 +349,18 @@ public class CampBean implements Serializable { public void setBlockedBedsMale(Integer blockedBedsMale) { this.blockedBedsMale = blockedBedsMale; } + + /** + * @return the startBooking + */ + public LocalDate getStartBooking() { + return startBooking; + } + + /** + * @param startBooking the startBooking to set + */ + public void setStartBooking(LocalDate startBooking) { + this.startBooking = startBooking; + } } diff --git a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationRepository.java b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationRepository.java index 8bfebbe..47e56fb 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationRepository.java +++ b/src/main/java/de/jottyfan/camporganizer/module/registration/RegistrationRepository.java @@ -6,6 +6,7 @@ import static de.jottyfan.camporganizer.db.jooq.Tables.T_PERSONDOCUMENT; import static de.jottyfan.camporganizer.db.jooq.Tables.T_PROFILE; import static de.jottyfan.camporganizer.db.jooq.Tables.T_PROFILEROLE; import static de.jottyfan.camporganizer.db.jooq.Tables.T_RSS; +import static de.jottyfan.camporganizer.db.jooq.Tables.V_CAMP; import java.time.LocalDate; import java.time.LocalDateTime; @@ -42,11 +43,11 @@ import org.springframework.transaction.annotation.Transactional; import de.jottyfan.camporganizer.db.jooq.enums.EnumCamprole; import de.jottyfan.camporganizer.db.jooq.enums.EnumSex; -import de.jottyfan.camporganizer.db.jooq.tables.records.TCampRecord; import de.jottyfan.camporganizer.db.jooq.tables.records.TPersonRecord; import de.jottyfan.camporganizer.db.jooq.tables.records.TPersondocumentRecord; import de.jottyfan.camporganizer.db.jooq.tables.records.TProfileRecord; import de.jottyfan.camporganizer.db.jooq.tables.records.TRssRecord; +import de.jottyfan.camporganizer.db.jooq.tables.records.VCampRecord; import de.jottyfan.camporganizer.module.camplist.model.BookingBean; import de.jottyfan.camporganizer.module.camplist.model.LambdaResultWrapper; import de.jottyfan.camporganizer.module.registration.model.CampBean; @@ -73,15 +74,17 @@ public class RegistrationRepository { * @return the camp bean or null */ public CampBean getCamp(Integer pk) { - SelectConditionStep sql = jooq.selectFrom(T_CAMP).where(T_CAMP.PK.eq(pk)); + SelectConditionStep sql = jooq.selectFrom(V_CAMP).where(V_CAMP.PK.eq(pk)); LOGGER.debug(sql.toString()); - TCampRecord r = sql.fetchOne(); + VCampRecord r = sql.fetchOne(); if (r != null) { CampBean bean = new CampBean(); bean.setPk(r.getPk()); bean.setName(r.getName()); LocalDateTime arrive = r.getArrive(); bean.setYear(arrive == null ? null : arrive.getYear()); + bean.setBookingHasStarted(r.getBookingHasStarted()); + bean.setStartBooking(r.getStartBooking()); return bean; } else { return null; diff --git a/src/main/java/de/jottyfan/camporganizer/module/registration/model/CampBean.java b/src/main/java/de/jottyfan/camporganizer/module/registration/model/CampBean.java index aff863d..c5bb088 100644 --- a/src/main/java/de/jottyfan/camporganizer/module/registration/model/CampBean.java +++ b/src/main/java/de/jottyfan/camporganizer/module/registration/model/CampBean.java @@ -1,6 +1,7 @@ package de.jottyfan.camporganizer.module.registration.model; import java.io.Serializable; +import java.time.LocalDateTime; /** * @@ -13,6 +14,8 @@ public class CampBean implements Serializable { private Integer pk; private String name; private Integer year; + private LocalDateTime startBooking; + private Boolean bookingHasStarted; /** * @return the pk @@ -55,4 +58,32 @@ public class CampBean implements Serializable { public void setYear(Integer year) { this.year = year; } + + /** + * @return the bookingHasStarted + */ + public Boolean getBookingHasStarted() { + return bookingHasStarted; + } + + /** + * @param bookingHasStarted the bookingHasStarted to set + */ + public void setBookingHasStarted(Boolean bookingHasStarted) { + this.bookingHasStarted = bookingHasStarted; + } + + /** + * @return the startBooking + */ + public LocalDateTime getStartBooking() { + return startBooking; + } + + /** + * @param startBooking the startBooking to set + */ + public void setStartBooking(LocalDateTime startBooking) { + this.startBooking = startBooking; + } } diff --git a/src/main/resources/templates/admin/camp_edit.html b/src/main/resources/templates/admin/camp_edit.html index b5e6190..f1a7df1 100644 --- a/src/main/resources/templates/admin/camp_edit.html +++ b/src/main/resources/templates/admin/camp_edit.html @@ -105,8 +105,8 @@
- -
+ +
[[${error}]]
+ +
+ [[${error}]]
+
+ +
+ [[${error}]]
-
-
-
- [[${error}]]
- +
+ [[${error}]]
-
-
-
- [[${error}]]
- +
+ [[${error}]]
-
-
-
- [[${error}]]
- +
+ [[${error}]]
diff --git a/src/main/resources/templates/fragments/camplist.html b/src/main/resources/templates/fragments/camplist.html index 3f105bb..2760b0f 100644 --- a/src/main/resources/templates/fragments/camplist.html +++ b/src/main/resources/templates/fragments/camplist.html @@ -37,7 +37,7 @@
-
+
+
+ +
- diff --git a/src/main/resources/templates/registration/registration.html b/src/main/resources/templates/registration/registration.html index 9907a22..c118c8d 100644 --- a/src/main/resources/templates/registration/registration.html +++ b/src/main/resources/templates/registration/registration.html @@ -9,7 +9,10 @@

Anmeldung

-
+
+ Die Anmeldung wird erst am freigeschaltet. +
+

Teilnehmeranmeldung

@@ -143,8 +146,8 @@ $("#phone").val(j.phone); $("#email").val(j.email); $("#sex").val(j.sex); - $("#birthDate").val(j.birthDate); - } + $("#birthDate").val(j.birthDate); + }