Erweiterungen

This commit is contained in:
2025-09-09 15:15:26 +02:00
parent f796b268c1
commit 3062061813

View File

@@ -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<String> {
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<String> {
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<String> {
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();