Files
MyINPulse/MyINPulse-back/src/main/java/enseirb/myinpulse/service/database/UserService.java
Pierre Tellier 66be0baca6
All checks were successful
Format / formatting (push) Successful in 6s
Build / build (push) Successful in 5m20s
CI / build (push) Successful in 11s
feat: created a better account creation flow
2025-04-09 17:39:43 +02:00

125 lines
4.0 KiB
Java

package enseirb.myinpulse.service.database;
import enseirb.myinpulse.model.User;
import enseirb.myinpulse.repository.UserRepository;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.server.ResponseStatusException;
import java.util.Optional;
@Service
public class UserService {
protected static final Logger logger = LogManager.getLogger();
private final UserRepository userRepository;
@Autowired
UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public Iterable<User> getAllUsers() {
return this.userRepository.findAll();
}
public User getUserById(long id) {
Optional<User> user = this.userRepository.findById(id);
if (user.isEmpty()) {
logger.error("getUserById : No user found with id {}", id);
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cet utilisateur n'existe pas");
}
return user.get();
}
// TODO
public User getUserByEmail(String email) {
Optional<User> opt_user = this.userRepository.findByPrimaryMail(email);
if (opt_user.isEmpty()) {
logger.error("getUserByEmail : No user found with email {}", email);
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cet utilisateur n'existe pas");
}
return opt_user.get();
}
public Iterable<User> allUsers() {
return this.userRepository.findAll();
}
public User addUser(@RequestBody User user) {
return this.userRepository.save(user);
}
public void updateUserSurname(long idUser, String surname) {
User user = getUserById(idUser);
user.setUserSurname(surname);
this.userRepository.save(user);
}
public void updateUserName(long idUser, String name) {
User user = getUserById(idUser);
user.setUserName(name);
this.userRepository.save(user);
}
public void updateUserPrimaryMail(long idUser, String primaryMail) {
User user = getUserById(idUser);
user.setPrimaryMail(primaryMail);
this.userRepository.save(user);
}
public void updateUserSecondaryMail(long idUser, String secondaryMail) {
User user = getUserById(idUser);
user.setSecondaryMail(secondaryMail);
this.userRepository.save(user);
}
public void updateUserPhoneNumber(long idUser, String phoneNumber) {
User user = getUserById(idUser);
user.setPhoneNumber(phoneNumber);
this.userRepository.save(user);
}
public User updateUser(
@PathVariable Long id,
String userSurname,
String userName,
String primaryMail,
String secondaryMail,
String phoneNumber) {
Optional<User> user = userRepository.findById(id);
if (user.isEmpty()) {
logger.error("updateUser : No user found with id {}", id);
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cet utilisateur n'existe pas");
}
if (userName != null) {
user.get().setUserName(userName);
}
if (userSurname != null) {
user.get().setUserSurname(userSurname);
}
if (primaryMail != null) {
user.get().setPrimaryMail(primaryMail);
}
if (secondaryMail != null) {
user.get().setSecondaryMail(secondaryMail);
}
if (phoneNumber != null) {
user.get().setPhoneNumber(phoneNumber);
}
return this.userRepository.save(user.get());
}
public Iterable<User> getPendingAccounts() {
return this.userRepository.findAllByPendingEquals(true);
}
}