Fix Kalender-Page for multiple rooms

This commit is contained in:
mbremer
2021-08-02 16:57:01 +02:00
parent 0d4dcd4df4
commit a3db8c67d0
6 changed files with 26 additions and 7 deletions

6
TODO.md Normal file
View File

@@ -0,0 +1,6 @@
# TODO
- unpoly
- Feiertage mit Cache
- API via API-Key
- Verkehrsmodul via Google-Maps: E-Mail, Telegram

View File

@@ -67,7 +67,7 @@ public class KalenderResource {
User currentUser = userService.getCurrentUser();
Room room = currentUser.getRoom();
try {
KalenderTag tag = KalenderTag.find("day = ?1 and room = ?2", dayParsed, room).singleResult();
KalenderTag tag = KalenderTag.findByDayAndRoomId(dayParsed, room == null ? null : room.id);
if (kalenderForm.isInOffice() && tag.getInOffice() == null) {
tag.setInOffice(currentUser);
} else if (!kalenderForm.isInOffice() && currentUser.equals(tag.getInOffice())) {
@@ -76,7 +76,7 @@ public class KalenderResource {
} catch (NoResultException e) {
KalenderTag tag = new KalenderTag(dayParsed, room);
tag.setInOffice(currentUser);
tag.setRoom(currentUser.getRoom());
tag.setRoom(room);
tag.persist();
}

View File

@@ -6,6 +6,7 @@ import de.mbremer.secutity.UserService;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.persistence.NoResultException;
import java.time.LocalDate;
import java.util.List;
import java.util.stream.Collectors;
@@ -24,9 +25,12 @@ public class KalenderService {
return Stream.iterate(0, i -> i < 5, i -> ++i)
.map(d -> {
LocalDate day = montag.plusDays(d);
KalenderTag tag =
(KalenderTag) KalenderTag.find("day = ?1 and room = ?2", day, room).singleResultOptional()
.orElse(new KalenderTag(day, room));
KalenderTag tag;
try {
tag = KalenderTag.findByDayAndRoomId(day, room == null ? null : room.id);
} catch (NoResultException e) {
tag = new KalenderTag(day, room);
}
tag.setCurrentUserInOffice(currentUser.equals(tag.getInOffice()));
tag.setToday(LocalDate.now().equals(day));
return tag;

View File

@@ -32,4 +32,13 @@ public class KalenderTag extends PanacheEntity {
this.day = day;
this.room = room;
}
/**
* @throws javax.persistence.NoResultException
*/
public static KalenderTag findByDayAndRoomId(LocalDate day, Long roomId) {
return roomId == null ?
(KalenderTag) KalenderTag.find("day = ?1 and room_id is null", day).singleResult() :
(KalenderTag) KalenderTag.find("day = ?1 and room_id = ?2", day, roomId).singleResult();
}
}

View File

@@ -7,4 +7,4 @@ alter table users add column room_id bigint references room;
alter table kalendertag add column room_id bigint references room;
alter table kalendertag drop constraint kalendertag_day_key;
alter table kalendertag add constraint kalendertag_day_room_unique unique(day,room_id);

View File

@@ -21,7 +21,7 @@
</div>
<div class="mt-2">
<img src="/room/plan" alt="kein Raumplan vorhanden">
<img src="/room/plan" class="img-fluid" alt="kein Raumplan vorhanden">
</div>
{#if is_admin}