Bugfixes im Dating und im Profil
Some checks failed
Host-Based Deploy (Java 21 Fix) / build-and-run (push) Has been cancelled

This commit is contained in:
2026-04-04 15:45:55 +02:00
parent d386f5a7a9
commit b81ad25c9f
427 changed files with 4796 additions and 324 deletions

View File

@@ -12,6 +12,7 @@ import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseCookie;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -94,6 +95,8 @@ public class UserController {
record DatingRequest(boolean datingAktiv, String datingStadt, Double datingLat, Double datingLon,
List<String> datingGeschlechter,
Integer datingMaxDistanzKm, Integer datingMinAlter, Integer datingMaxAlter) {}
record DatingFilterRequest(List<String> datingGeschlechter,
Integer datingMaxDistanzKm, Integer datingMinAlter, Integer datingMaxAlter) {}
record PrivacyRequest(
Sichtbarkeit sichtbarkeitGrunddaten,
Sichtbarkeit sichtbarkeitGalerie,
@@ -112,22 +115,51 @@ public class UserController {
}
var user = userService.requireUser(principal);
user.setDatingAktiv(request.datingAktiv());
user.setDatingStadt(request.datingAktiv() ? request.datingStadt().trim() : null);
user.setDatingLat(request.datingAktiv() ? request.datingLat() : null);
user.setDatingLon(request.datingAktiv() ? request.datingLon() : null);
if (request.datingGeschlechter() != null && !request.datingGeschlechter().isEmpty()) {
if (!request.datingAktiv()) {
// Alle Dating-Einstellungen zurücksetzen
user.setDatingStadt(null);
user.setDatingLat(null);
user.setDatingLon(null);
user.setDatingGeschlechter(null);
user.setDatingMaxDistanzKm(null);
user.setDatingMinAlter(null);
user.setDatingMaxAlter(null);
} else {
user.setDatingStadt(request.datingStadt().trim());
user.setDatingLat(request.datingLat());
user.setDatingLon(request.datingLon());
if (request.datingGeschlechter() != null && !request.datingGeschlechter().isEmpty()) {
String joined = request.datingGeschlechter().stream()
.filter(g -> { try { Geschlecht.valueOf(g); return true; } catch (IllegalArgumentException e) { return false; } })
.collect(Collectors.joining(","));
user.setDatingGeschlechter(joined.isBlank() ? null : joined);
} else {
user.setDatingGeschlechter(null);
}
if (request.datingMaxDistanzKm() != null) user.setDatingMaxDistanzKm(Math.max(1, Math.min(500, request.datingMaxDistanzKm())));
if (request.datingMinAlter() != null) user.setDatingMinAlter(Math.max(18, Math.min(99, request.datingMinAlter())));
if (request.datingMaxAlter() != null) user.setDatingMaxAlter(Math.max(18, Math.min(99, request.datingMaxAlter())));
}
userRepository.save(user);
LOGGER.info("User {} hat Dating-Einstellungen aktualisiert: aktiv={}", user.getUserId(), request.datingAktiv());
return ResponseEntity.ok().build();
}
@PutMapping("/me/dating-filter")
public ResponseEntity<Void> updateDatingFilter(@RequestBody DatingFilterRequest request, Principal principal) {
var user = userService.requireUser(principal);
if (!user.isDatingAktiv())
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
if (request.datingGeschlechter() != null) {
String joined = request.datingGeschlechter().stream()
.filter(g -> { try { Geschlecht.valueOf(g); return true; } catch (IllegalArgumentException e) { return false; } })
.collect(Collectors.joining(","));
user.setDatingGeschlechter(joined.isBlank() ? null : joined);
} else {
user.setDatingGeschlechter(null);
}
if (request.datingMaxDistanzKm() != null) user.setDatingMaxDistanzKm(Math.max(1, Math.min(500, request.datingMaxDistanzKm())));
if (request.datingMinAlter() != null) user.setDatingMinAlter(Math.max(18, Math.min(99, request.datingMinAlter())));
if (request.datingMaxAlter() != null) user.setDatingMaxAlter(Math.max(18, Math.min(99, request.datingMaxAlter())));
if (request.datingMinAlter() != null) user.setDatingMinAlter(Math.max(18, Math.min(99, request.datingMinAlter())));
if (request.datingMaxAlter() != null) user.setDatingMaxAlter(Math.max(18, Math.min(99, request.datingMaxAlter())));
userRepository.save(user);
LOGGER.info("User {} hat Dating-Einstellungen aktualisiert: aktiv={}", user.getUserId(), request.datingAktiv());
return ResponseEntity.ok().build();
}