Erweiterungen

This commit is contained in:
2025-08-14 20:03:46 +02:00
parent 8b5c22d0b7
commit 2ef3a5d7d2
5 changed files with 9 additions and 18 deletions

View File

@@ -43,7 +43,6 @@ public final class MainLayout extends AppLayout {
}
private Div createHeader() {
// TODO Replace with real application logo and name
var appLogo = VaadinIcon.CUBES.create();
appLogo.addClassNames(TextColor.PRIMARY, IconSize.LARGE);
@@ -86,7 +85,7 @@ public final class MainLayout extends AppLayout {
SideNavItem statistics = new SideNavItem("Statistik", "6", new Icon(VaadinIcon.COG));
verwaltungContent.add(jobs, customers, appUsers, devices, invoices, statistics);
verwaltungDetails.setContent(verwaltungContent);
verwaltungDetails.add(verwaltungContent);
// Create Details component for "Verwaltung" with collapsible list
Details userDetails = new Details();
@@ -104,7 +103,7 @@ public final class MainLayout extends AppLayout {
SideNavItem imprint = new SideNavItem("Impressum", "9", new Icon(VaadinIcon.COG));
userContent.add(profile, myInvoices, imprint);
userDetails.setContent(userContent);
userDetails.add(userContent);
// Create a vertical layout to hold both regular menu items and collapsible sections
VerticalLayout navContainer = new VerticalLayout();

View File

@@ -68,8 +68,7 @@ public class AddJobService {
copy.setHeightMm(ci.getHeightMm());
return copy;
}).toList();
var savedItems = cargoItemRepository.saveAll(itemsWithJob);
var cargoIds = savedItems.stream().map(CargoItem::getId).toList();
cargoItemRepository.saveAll(itemsWithJob);
modified = true;
// Tasks separat speichern und referenzieren
if (transientTasks != null && !transientTasks.isEmpty()) {
@@ -78,8 +77,7 @@ public class AddJobService {
.filter(te -> te.getText() != null && !te.getText().isBlank())
.peek(te -> te.setJobId(jobId))
.toList();
var savedTasks = taskRepository.saveAll(prepared);
var taskIds = savedTasks.stream().map(de.assecutor.votianlt.model.TaskEntry::getId).toList();
taskRepository.saveAll(prepared);
modified = true;
}
}
@@ -169,7 +167,8 @@ public class AddJobService {
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss")));
}
Job savedDraft = jobRepository.save(draftJob);
jobRepository.save(draftJob);
log.info("Entwurf automatisch gespeichert für Benutzer: {}", currentUser);
} catch (Exception e) {

View File

@@ -2,7 +2,6 @@ package de.assecutor.votianlt.pages.service;
import de.assecutor.votianlt.model.Customer;
import de.assecutor.votianlt.pages.domain.CustomerRepository;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

View File

@@ -12,21 +12,20 @@ import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.auth.AnonymousAllowed;
import de.assecutor.votianlt.pages.service.RegisterService;
import de.assecutor.votianlt.pages.service.UserService;
import java.time.Clock;
@Route("register")
@PageTitle("Bei VotianLT registrieren")
@AnonymousAllowed
public class RegisterView extends VerticalLayout {
private final UserService userService;
private TextField emailField;
private PasswordField passwordField;
private PasswordField confirmPasswordField;
private Button submitButton;
public RegisterView() {
public RegisterView(UserService userService) {
this.userService = userService;
// Layout-Konfiguration für vollständige Zentrierung
setSizeFull();
setJustifyContentMode(FlexComponent.JustifyContentMode.CENTER);

View File

@@ -3,16 +3,11 @@ package de.assecutor.votianlt.security;
import de.assecutor.votianlt.model.User;
import de.assecutor.votianlt.pages.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Collections;
@Service
public class UserDetailsServiceImpl implements UserDetailsService {