67 User existing = userRepository.findById(
id)
68 .orElseThrow(() ->
new RuntimeException(
"User not found"));
70 if (newData.getName() !=
null) {
71 existing.setName(newData.getName());
73 if (newData.getEmail() !=
null) {
74 existing.setEmail(newData.getEmail());
76 if (newData.getTelephoneNumber() !=
null) {
77 existing.setTelephoneNumber(newData.getTelephoneNumber());
79 if (newData.getAddress() !=
null) {
80 existing.setAddress(newData.getAddress());
82 if (newData.getDegreeType() !=
null) {
83 existing.setDegreeType(newData.getDegreeType());
85 if (newData.getDegreeYear() !=
null) {
86 existing.setDegreeYear(newData.getDegreeYear());
88 if (newData.getAverageRating() !=
null) {
89 existing.setAverageRating(newData.getAverageRating());
92 String rawPass = newData.getPassword();
93 if (rawPass !=
null && !rawPass.isBlank()) {
94 existing.setPassword(passwordEncoder.encode(rawPass));
97 Integer previousPenalties = existing.getPenalties();
98 Integer newPenalties = newData.getPenalties();
100 if (newPenalties !=
null) {
101 if (newPenalties > previousPenalties) {
102 notificationService.enviarCorreo(
105 "Your penalty count increased to " + newPenalties
108 existing.setPenalties(newPenalties);
110 existing.setPenalties(previousPenalties);
112 existing.setAdmin(newData.getAdmin());
114 return userRepository.save(existing);
141 public String
login(CredentialsDTO credentials) {
142 User user = userRepository.findByEmail(credentials.getEmail());
143 if (tokens.containsValue(user)) {
144 return "User already logged in";
145 }
else if (user !=
null && passwordEncoder.matches(credentials.getPassword(), user.getPassword())) {
146 String token = jwtUtil.generateToken(credentials.getEmail());
147 tokens.put(token, user);
150 return "Invalid credentials";