getWeek(int offsetInWeeks) {
+ User currentUser = userService.getCurrentUser();
+ LocalDate today = LocalDate.now();
+ LocalDate montag = today.minusDays(today.getDayOfWeek().getValue() - 1).plusDays(7 * offsetInWeeks);
+
+ return Stream.iterate(0, i -> i < 5, i -> ++i)
+ .map(d -> {
+ LocalDate day = montag.plusDays(d);
+ KalenderTag tag = (KalenderTag) KalenderTag.find("day", day).singleResultOptional().orElse(new KalenderTag(day));
+ tag.setCurrentUserInOffice(currentUser.equals(tag.getInOffice()));
+ tag.setToday(LocalDate.now().equals(day));
+ tag.setHolidayname(holidayService.getHolidayNiedersachsen(day));
+ return tag;
+ })
+ .collect(Collectors.toList());
+ }
+}
diff --git a/src/main/java/de/mbremer/kalender/KalenderTag.java b/src/main/java/de/mbremer/kalender/KalenderTag.java
index ba9bd2b..4eba25e 100644
--- a/src/main/java/de/mbremer/kalender/KalenderTag.java
+++ b/src/main/java/de/mbremer/kalender/KalenderTag.java
@@ -24,8 +24,18 @@ public class KalenderTag extends PanacheEntity {
private boolean currentUserInOffice;
@Transient
private boolean today;
+ @Transient
+ private String holidayname;
public KalenderTag(LocalDate day) {
this.day = day;
}
+
+ public boolean istHoliday() {
+ return holidayname != null;
+ }
+
+ public boolean isPast() {
+ return day.isBefore(LocalDate.now());
+ }
}
diff --git a/src/main/java/de/mbremer/secutity/UserResource.java b/src/main/java/de/mbremer/secutity/UserResource.java
index a01e2a2..06ea71f 100644
--- a/src/main/java/de/mbremer/secutity/UserResource.java
+++ b/src/main/java/de/mbremer/secutity/UserResource.java
@@ -9,6 +9,7 @@ import org.jboss.resteasy.annotations.providers.multipart.MultipartForm;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;
+import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.transaction.Transactional;
import javax.ws.rs.*;
@@ -21,6 +22,7 @@ import static de.mbremer.secutity.Role.ADMIN;
@Path("/user")
@RolesAllowed("ADMIN")
+@ApplicationScoped
public class UserResource {
@Inject
diff --git a/src/main/java/de/mbremer/secutity/UserService.java b/src/main/java/de/mbremer/secutity/UserService.java
new file mode 100644
index 0000000..368f67b
--- /dev/null
+++ b/src/main/java/de/mbremer/secutity/UserService.java
@@ -0,0 +1,19 @@
+package de.mbremer.secutity;
+
+import io.quarkus.security.identity.SecurityIdentity;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+
+@RequestScoped
+public class UserService {
+ @Inject
+ SecurityIdentity identity;
+
+ /**
+ * Returns the user currently logged in.
+ */
+ public User getCurrentUser() {
+ return User.find("username", identity.getPrincipal().getName()).singleResult();
+ }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index c189b11..47eac6c 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -2,6 +2,7 @@
%prod.quarkus.datasource.jdbc.url = jdbc:postgresql://${POSTGRES_HOST:db}:${POSTGRES_PORT:5432}/buerokalender
%prod.quarkus.datasource.username = ${POSTGRES_USER:buerokalender}
%prod.quarkus.datasource.password = ${POSTGRES_PASSWORD:buerokalender}
+# max JDBC pool size
%prod.quarkus.datasource.jdbc.max-size=16
quarkus.datasource.db-kind=postgresql
@@ -15,6 +16,10 @@ quarkus.http.auth.form.enabled=true
# 24h
quarkus.http.auth.form.timeout=86400
+# REST-CLient
+de.mbremer.holiday.HolidayRestClient/mp-rest/url=https://deutsche-feiertage-api.de
+de.mbremer.holiday.HolidayRestClient/mp-rest/scope=javax.inject.Singleton
+
# Deployment
quarkus.container-image.additional-tags= 1
quarkus.container-image.group = mattbremer
diff --git a/src/main/resources/templates/kalenderpage.html b/src/main/resources/templates/kalenderpage.html
index 46fb3db..339cd3e 100644
--- a/src/main/resources/templates/kalenderpage.html
+++ b/src/main/resources/templates/kalenderpage.html
@@ -40,6 +40,7 @@
@@ -48,6 +49,7 @@
{day.day.formatCommon}
|
+ {#if day.istHoliday}{day.holidayname}{/if}
{#if day.inOffice}{day.inOffice.username}{/if}
|
diff --git a/src/test/java/de/mbremer/kalender/KalenderResourceTest.java b/src/test/java/de/mbremer/kalender/KalenderResourceTest.java
index b9c90ae..4327c4e 100644
--- a/src/test/java/de/mbremer/kalender/KalenderResourceTest.java
+++ b/src/test/java/de/mbremer/kalender/KalenderResourceTest.java
@@ -22,6 +22,8 @@ class KalenderResourceTest {
@InjectMock
SecurityIdentity identity;
+ @InjectMock
+ KalenderService kalenderService;
@Test
@TestSecurity(authorizationEnabled = false)