diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java index fd4b020e..2c8f5ce1 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java @@ -29,8 +29,8 @@ import java.util.UUID; import static org.raddatz.familienarchiv.repository.DocumentSpecifications.*; @Service -@RequiredArgsConstructor // Lombok: Erzeugt Constructor für 'final' Felder (Dependency Injection) -@Slf4j // Lombok: Logging +@RequiredArgsConstructor +@Slf4j public class DocumentService { private final DocumentRepository documentRepository; @@ -102,8 +102,10 @@ public class DocumentService { .filter(s -> !s.isEmpty()) .toList(); } - updateDocumentTags(doc.getId(), tags); - doc = documentRepository.findById(doc.getId()).orElseThrow(); + UUID savedId = doc.getId(); + updateDocumentTags(savedId, tags); + doc = documentRepository.findById(savedId) + .orElseThrow(() -> DomainException.notFound(ErrorCode.DOCUMENT_NOT_FOUND, "Document not found after save: " + savedId)); // Sender if (dto.getSenderId() != null) { @@ -180,7 +182,8 @@ public class DocumentService { } public Document updateDocumentTags(UUID docId, List tagNames) { - Document doc = documentRepository.findById(docId).orElseThrow(); + Document doc = documentRepository.findById(docId) + .orElseThrow(() -> DomainException.notFound(ErrorCode.DOCUMENT_NOT_FOUND, "Document not found: " + docId)); Set newTags = new HashSet<>(); @@ -217,12 +220,11 @@ public class DocumentService { } // 1. Allgemeine Suche (für das Suchfeld im Frontend) - public List searchDocuments(String text, LocalDate from, LocalDate to, UUID sender, UUID reciever, List tags) { - log.info("Tags", tags); + public List searchDocuments(String text, LocalDate from, LocalDate to, UUID sender, UUID receiver, List tags) { Specification spec = Specification.where(hasText(text)) .and(isBetween(from, to)) .and(hasSender(sender)) - .and(hasReceiver(reciever)) + .and(hasReceiver(receiver)) .and(hasTags(tags)); // Immer sortiert nach Datum diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/UserService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/UserService.java index 897f19a7..8eb92ed9 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/UserService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/UserService.java @@ -30,49 +30,45 @@ public class UserService { private final UserGroupRepository groupRepository; private final PasswordEncoder passwordEncoder; -@Transactional -public AppUser createUserOrUpdate(CreateUserRequest request) { - log.info("Versuche neuen User anzulegen: {}", request.getUsername()); + @Transactional + public AppUser createUserOrUpdate(CreateUserRequest request) { + log.info("Creating or updating user: {}", request.getUsername()); - Set groups = new HashSet<>(); - if (request.getGroupIds() != null && !request.getGroupIds().isEmpty()) { - List foundGroups = groupRepository.findAllById(request.getGroupIds()); - groups.addAll(foundGroups); + Set groups = new HashSet<>(); + if (request.getGroupIds() != null && !request.getGroupIds().isEmpty()) { + groups.addAll(groupRepository.findAllById(request.getGroupIds())); + } + + Optional existingUser = userRepository.findByUsername(request.getUsername()); + AppUser user; + + if (existingUser.isPresent()) { + log.info("User exists, updating: {}", request.getUsername()); + user = existingUser.get().updateFromRequest(request, passwordEncoder, groups); + } else { + log.info("Creating new user: {}", request.getUsername()); + user = AppUser.builder() + .username(request.getUsername()) + .email(request.getEmail()) + .password(passwordEncoder.encode(request.getInitialPassword())) + .groups(groups) + .enabled(true) + .build(); + } + + return userRepository.save(user); } - log.info("GroupsIds {}", groups.toString()); - log.info("Groupds in DB {}", groupRepository.findAll().toString()); - Optional dbUser = userRepository.findByUsername(request.getUsername()); - AppUser user; - - if (dbUser.isPresent()) { - log.info("Found user in DB. Will update."); - user = dbUser.get().updateFromRequest(request, passwordEncoder, groups); - } else { - log.info("Creating new user."); - user = AppUser.builder() - .username(request.getUsername()) - .email(request.getEmail()) - .password(passwordEncoder.encode(request.getInitialPassword())) - .groups(groups) - .enabled(true) - .build(); - } - log.info("Saving new user {}", user.toString()); - return userRepository.save(user); -} @Transactional public void deleteUser(UUID userId) { - log.info("Delete user {}", userId); - AppUser user = userRepository.findById(userId) - .orElseThrow(() -> DomainException.notFound(ErrorCode.USER_NOT_FOUND, String.format("No user found for id %s", userId))); + .orElseThrow(() -> DomainException.notFound(ErrorCode.USER_NOT_FOUND, "No user found for id: " + userId)); userRepository.delete(user); } public AppUser findByUsername(String username) { - return userRepository.findByUsername(username).orElseThrow( - () -> DomainException.notFound(ErrorCode.USER_NOT_FOUND, String.format("No user found for username %s", username))); + return userRepository.findByUsername(username) + .orElseThrow(() -> DomainException.notFound(ErrorCode.USER_NOT_FOUND, "No user found for username: " + username)); } public List getAllUsers() {