Bugfixes im Dating und im Profil
Some checks failed
Host-Based Deploy (Java 21 Fix) / build-and-run (push) Has been cancelled
Some checks failed
Host-Based Deploy (Java 21 Fix) / build-and-run (push) Has been cancelled
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user