From 3062061813e1023e9b8ad36fc37b32a6f9b9825f Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Tue, 9 Sep 2025 15:15:26 +0200 Subject: [PATCH] Erweiterungen --- .../votianlt/pages/view/JobSummaryView.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/assecutor/votianlt/pages/view/JobSummaryView.java b/src/main/java/de/assecutor/votianlt/pages/view/JobSummaryView.java index 947a763..b3a1460 100644 --- a/src/main/java/de/assecutor/votianlt/pages/view/JobSummaryView.java +++ b/src/main/java/de/assecutor/votianlt/pages/view/JobSummaryView.java @@ -14,10 +14,12 @@ import com.vaadin.flow.theme.lumo.LumoUtility; import de.assecutor.votianlt.model.CargoItem; import de.assecutor.votianlt.model.Job; import de.assecutor.votianlt.model.TaskEntry; +import de.assecutor.votianlt.model.AppUser; import de.assecutor.votianlt.pages.base.ui.component.ViewToolbar; import de.assecutor.votianlt.repository.CargoItemRepository; import de.assecutor.votianlt.repository.JobRepository; import de.assecutor.votianlt.repository.TaskRepository; +import de.assecutor.votianlt.pages.service.AppUserService; import jakarta.annotation.security.RolesAllowed; import org.bson.types.ObjectId; @@ -33,15 +35,18 @@ public class JobSummaryView extends Main implements HasUrlParameter { private final JobRepository jobRepository; private final CargoItemRepository cargoItemRepository; private final TaskRepository taskRepository; + private final AppUserService appUserService; private VerticalLayout content; public JobSummaryView(JobRepository jobRepository, CargoItemRepository cargoItemRepository, - TaskRepository taskRepository) { + TaskRepository taskRepository, + AppUserService appUserService) { this.jobRepository = jobRepository; this.cargoItemRepository = cargoItemRepository; this.taskRepository = taskRepository; + this.appUserService = appUserService; setSizeFull(); addClassNames(LumoUtility.BoxSizing.BORDER, LumoUtility.Display.FLEX, @@ -157,7 +162,7 @@ public class JobSummaryView extends Main implements HasUrlParameter { infoBox.add(new Span("Digitale Abwicklung per App: aktiviert")); } if (job.getAppUser() != null && !job.getAppUser().isBlank()) { - infoBox.add(new Span("App-Nutzer: " + job.getAppUser())); + infoBox.add(new Span("App-Nutzer: " + resolveAppUserName(job.getAppUser()))); } cargoBox.setWidth("50%"); @@ -215,6 +220,22 @@ public class JobSummaryView extends Main implements HasUrlParameter { return nf.format(price); } + private String resolveAppUserName(String appUserIdString) { + try { + ObjectId id = new ObjectId(appUserIdString); + AppUser au = appUserService.findById(id); + if (au != null) { + String fn = au.getVorname(); + String ln = au.getNachname(); + String name = (fn != null ? fn : "").trim() + (fn != null && ln != null ? " " : "") + (ln != null ? ln : ""); + if (!name.isBlank()) return name; + if (au.getBezeichnung() != null && !au.getBezeichnung().isBlank()) return au.getBezeichnung(); + if (au.getEmail() != null && !au.getEmail().isBlank()) return au.getEmail(); + } + } catch (Exception ignored) { } + return appUserIdString; // Fallback: show raw string if lookup fails + } + private void addRouteMap(Job job) { // Baue Adress-Strings String origin = (concatAddress(job.getPickupStreet(), job.getPickupHouseNumber()) + ", " + concatZipCity(job.getPickupZip(), job.getPickupCity())).trim();