Refactoring et amélioration des endpoints friendship
This commit is contained in:
184
src/main/java/com/lions/dev/service/FriendshipService.java
Normal file
184
src/main/java/com/lions/dev/service/FriendshipService.java
Normal file
@@ -0,0 +1,184 @@
|
||||
package com.lions.dev.service;
|
||||
|
||||
import com.lions.dev.entity.friends.Friendship;
|
||||
import com.lions.dev.entity.friends.FriendshipStatus;
|
||||
import com.lions.dev.entity.users.Users;
|
||||
import com.lions.dev.exception.FriendshipNotFoundException;
|
||||
import com.lions.dev.exception.UserNotFoundException;
|
||||
import com.lions.dev.repository.FriendshipRepository;
|
||||
import com.lions.dev.repository.UsersRepository;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.transaction.Transactional;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Service de gestion des amitiés. Ce service gère l'envoi, l'acceptation, le rejet et la
|
||||
* suppression d'amitiés.
|
||||
*/
|
||||
@ApplicationScoped
|
||||
public class FriendshipService {
|
||||
|
||||
@Inject FriendshipRepository friendshipRepository;
|
||||
|
||||
@Inject UsersRepository usersRepository;
|
||||
|
||||
/**
|
||||
* Envoie une demande d'amitié entre deux utilisateurs.
|
||||
*
|
||||
* @param userId L'ID de l'utilisateur qui envoie la demande.
|
||||
* @param friendId L'ID de l'utilisateur qui reçoit la demande.
|
||||
* @return La relation d'amitié créée.
|
||||
* @throws UserNotFoundException Si l'un des utilisateurs n'est pas trouvé.
|
||||
*/
|
||||
@Transactional
|
||||
public Friendship sendFriendRequest(UUID userId, UUID friendId) {
|
||||
System.out.println(
|
||||
"[LOG] Envoi de demande d'amitié de l'utilisateur "
|
||||
+ userId
|
||||
+ " à l'utilisateur "
|
||||
+ friendId);
|
||||
|
||||
Users user = usersRepository.findById(userId);
|
||||
Users friend = usersRepository.findById(friendId);
|
||||
|
||||
if (user == null || friend == null) {
|
||||
System.out.println(
|
||||
"[ERROR] Utilisateur non trouvé pour l'ID : " + (user == null ? userId : friendId));
|
||||
throw new UserNotFoundException("L'utilisateur avec l'ID spécifié n'existe pas.");
|
||||
}
|
||||
|
||||
Optional<Friendship> existingFriendship = friendshipRepository.findByUsers(user, friend);
|
||||
if (existingFriendship.isPresent()) {
|
||||
System.out.println("[ERROR] Une relation d'amitié existe déjà entre ces deux utilisateurs.");
|
||||
throw new IllegalArgumentException("Relation d'amitié déjà existante.");
|
||||
}
|
||||
|
||||
Friendship friendship =
|
||||
Friendship.builder().user(user).friend(friend).status(FriendshipStatus.PENDING).build();
|
||||
|
||||
friendshipRepository.persist(friendship);
|
||||
System.out.println(
|
||||
"[LOG] Demande d'amitié envoyée de " + user.getEmail() + " à " + friend.getEmail());
|
||||
|
||||
return friendship;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accepte une demande d'amitié.
|
||||
*
|
||||
* @param friendshipId L'ID de la demande d'amitié.
|
||||
* @return La relation d'amitié acceptée.
|
||||
* @throws FriendshipNotFoundException Si la relation d'amitié n'est pas trouvée.
|
||||
*/
|
||||
@Transactional
|
||||
public Friendship acceptFriendRequest(UUID friendshipId) {
|
||||
System.out.println("[LOG] Acceptation de la demande d'amitié avec l'ID : " + friendshipId);
|
||||
|
||||
Friendship friendship =
|
||||
friendshipRepository
|
||||
.findById(friendshipId)
|
||||
.orElseThrow(() -> new FriendshipNotFoundException("Demande d'amitié introuvable."));
|
||||
|
||||
if (friendship.getStatus() == FriendshipStatus.ACCEPTED) {
|
||||
System.out.println("[ERROR] La demande d'amitié a déjà été acceptée.");
|
||||
throw new IllegalArgumentException("Cette demande d'amitié a déjà été acceptée.");
|
||||
}
|
||||
|
||||
friendship.setStatus(FriendshipStatus.ACCEPTED);
|
||||
friendshipRepository.persist(friendship);
|
||||
System.out.println(
|
||||
"[LOG] Demande d'amitié acceptée entre "
|
||||
+ friendship.getUser().getEmail()
|
||||
+ " et "
|
||||
+ friendship.getFriend().getEmail());
|
||||
|
||||
return friendship;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rejette une demande d'amitié.
|
||||
*
|
||||
* @param friendshipId L'ID de la demande d'amitié.
|
||||
* @throws FriendshipNotFoundException Si la relation d'amitié n'est pas trouvée.
|
||||
*/
|
||||
@Transactional
|
||||
public void rejectFriendRequest(UUID friendshipId) {
|
||||
System.out.println("[LOG] Rejet de la demande d'amitié avec l'ID : " + friendshipId);
|
||||
|
||||
Friendship friendship =
|
||||
friendshipRepository
|
||||
.findById(friendshipId)
|
||||
.orElseThrow(() -> new FriendshipNotFoundException("Demande d'amitié introuvable."));
|
||||
|
||||
friendship.setStatus(FriendshipStatus.REJECTED);
|
||||
friendshipRepository.persist(friendship);
|
||||
System.out.println(
|
||||
"[LOG] Demande d'amitié rejetée entre "
|
||||
+ friendship.getUser().getEmail()
|
||||
+ " et "
|
||||
+ friendship.getFriend().getEmail());
|
||||
}
|
||||
|
||||
/**
|
||||
* Supprime une relation d'amitié.
|
||||
*
|
||||
* @param friendshipId L'ID de la relation d'amitié à supprimer.
|
||||
* @throws FriendshipNotFoundException Si la relation d'amitié n'est pas trouvée.
|
||||
*/
|
||||
@Transactional
|
||||
public void removeFriend(UUID friendshipId) {
|
||||
System.out.println("[LOG] Suppression de la relation d'amitié avec l'ID : " + friendshipId);
|
||||
|
||||
Friendship friendship =
|
||||
friendshipRepository
|
||||
.findById(friendshipId)
|
||||
.orElseThrow(() -> new FriendshipNotFoundException("Amitié introuvable."));
|
||||
|
||||
friendshipRepository.deleteFriendship(friendship); // Appel à deleteFriendship
|
||||
System.out.println(
|
||||
"[LOG] Amitié supprimée entre "
|
||||
+ friendship.getUser().getEmail()
|
||||
+ " et "
|
||||
+ friendship.getFriend().getEmail());
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère la liste des amis d'un utilisateur avec pagination.
|
||||
*
|
||||
* @param userId L'ID de l'utilisateur.
|
||||
* @param page Le numéro de la page à récupérer.
|
||||
* @param size Le nombre d'éléments par page.
|
||||
* @return La liste paginée des relations d'amitié.
|
||||
* @throws UserNotFoundException Si l'utilisateur n'est pas trouvé.
|
||||
*/
|
||||
public List<Friendship> listFriends(UUID userId, int page, int size) {
|
||||
System.out.println(
|
||||
"[LOG] Récupération de la liste paginée des amis pour l'utilisateur avec l'ID : " + userId);
|
||||
|
||||
Users user = usersRepository.findById(userId);
|
||||
if (user == null) {
|
||||
System.out.println("[ERROR] Utilisateur non trouvé pour l'ID : " + userId);
|
||||
throw new UserNotFoundException("Utilisateur non trouvé.");
|
||||
}
|
||||
|
||||
return friendshipRepository.findFriendsByUser(user, page, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère toutes les demandes d'amitié avec un statut spécifique.
|
||||
*
|
||||
* @param user L'utilisateur.
|
||||
* @param status Le statut des demandes d'amitié à récupérer (PENDING, ACCEPTED, REJECTED).
|
||||
* @param page Le numéro de la page à récupérer.
|
||||
* @param size Le nombre d'éléments par page.
|
||||
* @return La liste paginée des relations d'amitié avec le statut spécifié.
|
||||
*/
|
||||
public List<Friendship> listFriendRequestsByStatus(Users user, FriendshipStatus status, int page, int size) {
|
||||
System.out.println("[LOG] Récupération des demandes d'amitié avec le statut : " + status);
|
||||
return friendshipRepository.findByUserAndStatus(user, status, page, size);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
package com.lions.dev.service;
|
||||
|
||||
import com.lions.dev.entity.users.Users;
|
||||
import com.lions.dev.repository.UsersRepository;
|
||||
import com.lions.dev.exception.UserNotFoundException;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Service de gestion des utilisateurs.
|
||||
* Ce service contient la logique métier pour la création, récupération et suppression des utilisateurs.
|
||||
*/
|
||||
@ApplicationScoped
|
||||
public class UserService {
|
||||
|
||||
@Inject
|
||||
UsersRepository usersRepository;
|
||||
|
||||
/**
|
||||
* Crée un nouvel utilisateur dans le système.
|
||||
*
|
||||
* @param userCreateRequestDTO Le DTO contenant les informations de l'utilisateur à créer.
|
||||
* @return L'utilisateur créé.
|
||||
*/
|
||||
public Users createUser(com.lions.dev.dto.request.users.UserCreateRequestDTO userCreateRequestDTO) {
|
||||
Users user = new Users();
|
||||
user.setNom(userCreateRequestDTO.getNom());
|
||||
user.setPrenoms(userCreateRequestDTO.getPrenoms());
|
||||
user.setEmail(userCreateRequestDTO.getEmail());
|
||||
user.setMotDePasse(userCreateRequestDTO.getMotDePasse()); // Hachage automatique
|
||||
|
||||
// Vérifier si le rôle est défini, sinon attribuer un rôle par défaut
|
||||
if (userCreateRequestDTO.getRole() == null || userCreateRequestDTO.getRole().isEmpty()) {
|
||||
user.setRole("USER"); // Assigner un rôle par défaut, par exemple "USER"
|
||||
} else {
|
||||
user.setRole(userCreateRequestDTO.getRole());
|
||||
}
|
||||
|
||||
usersRepository.persist(user);
|
||||
System.out.println("[LOG] Utilisateur créé : " + user.getEmail());
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Met à jour un utilisateur existant dans le système.
|
||||
*
|
||||
* @param user L'utilisateur à mettre à jour.
|
||||
* @return L'utilisateur mis à jour.
|
||||
*/
|
||||
public Users updateUser(Users user) {
|
||||
try {
|
||||
Users existingUser = usersRepository.findById(user.getId());
|
||||
if (existingUser == null) {
|
||||
System.out.println("[ERROR] Utilisateur non trouvé pour la mise à jour avec l'ID : " + user.getId());
|
||||
throw new UserNotFoundException("Utilisateur non trouvé avec l'ID : " + user.getId());
|
||||
}
|
||||
|
||||
// Mettre à jour les champs de l'utilisateur existant
|
||||
existingUser.setNom(user.getNom());
|
||||
existingUser.setPrenoms(user.getPrenoms());
|
||||
existingUser.setEmail(user.getEmail());
|
||||
existingUser.setMotDePasse(user.getMotDePasse()); // Hachage automatique si nécessaire
|
||||
existingUser.setRole(user.getRole());
|
||||
|
||||
usersRepository.persist(existingUser);
|
||||
System.out.println("[LOG] Utilisateur mis à jour avec succès : " + existingUser.getEmail());
|
||||
return existingUser;
|
||||
} catch (Exception e) {
|
||||
System.out.println("[ERROR] Erreur lors de la mise à jour de l'utilisateur : " + e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Authentifie un utilisateur avec son email et son mot de passe.
|
||||
*
|
||||
* @param email L'email de l'utilisateur.
|
||||
* @param motDePasse Le mot de passe de l'utilisateur.
|
||||
* @return L'utilisateur authentifié.
|
||||
* @throws UserNotFoundException Si l'utilisateur n'est pas trouvé ou si le mot de passe est incorrect.
|
||||
*/
|
||||
public Users authenticateUser(String email, String motDePasse) {
|
||||
Optional<Users> userOptional = usersRepository.findByEmail(email);
|
||||
if (userOptional.isEmpty() || !userOptional.get().verifierMotDePasse(motDePasse)) {
|
||||
System.out.println("[ERROR] Échec de l'authentification pour l'email : " + email);
|
||||
throw new UserNotFoundException("Utilisateur ou mot de passe incorrect.");
|
||||
}
|
||||
System.out.println("[LOG] Utilisateur authentifié : " + email);
|
||||
return userOptional.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère un utilisateur par son ID.
|
||||
*
|
||||
* @param id L'ID de l'utilisateur.
|
||||
* @return L'utilisateur trouvé.
|
||||
* @throws UserNotFoundException Si l'utilisateur n'est pas trouvé.
|
||||
*/
|
||||
public Users getUserById(UUID id) {
|
||||
Users user = usersRepository.findById(id);
|
||||
if (user == null) {
|
||||
System.out.println("[ERROR] Utilisateur non trouvé avec l'ID : " + id);
|
||||
throw new UserNotFoundException("Utilisateur non trouvé avec l'ID : " + id);
|
||||
}
|
||||
System.out.println("[LOG] Utilisateur trouvé avec l'ID : " + id);
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Supprime un utilisateur par son ID.
|
||||
*
|
||||
* @param id L'ID de l'utilisateur à supprimer.
|
||||
* @return true si l'utilisateur a été supprimé, false sinon.
|
||||
*/
|
||||
public boolean deleteUser(UUID id) {
|
||||
boolean deleted = usersRepository.deleteById(id);
|
||||
if (deleted) {
|
||||
System.out.println("[LOG] Utilisateur supprimé avec succès : " + id);
|
||||
} else {
|
||||
System.out.println("[ERROR] Échec de la suppression de l'utilisateur avec l'ID : " + id);
|
||||
}
|
||||
return deleted;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
191
src/main/java/com/lions/dev/service/UsersService.java
Normal file
191
src/main/java/com/lions/dev/service/UsersService.java
Normal file
@@ -0,0 +1,191 @@
|
||||
package com.lions.dev.service;
|
||||
|
||||
import com.lions.dev.dto.request.users.UserCreateRequestDTO;
|
||||
import com.lions.dev.entity.users.Users;
|
||||
import com.lions.dev.exception.UserNotFoundException;
|
||||
import com.lions.dev.repository.UsersRepository;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.transaction.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Service de gestion des utilisateurs.
|
||||
* Ce service contient la logique métier pour la création, récupération et suppression des utilisateurs.
|
||||
*/
|
||||
@ApplicationScoped
|
||||
public class UsersService {
|
||||
|
||||
@Inject
|
||||
UsersRepository usersRepository;
|
||||
|
||||
/**
|
||||
* Crée un nouvel utilisateur dans le système.
|
||||
*
|
||||
* @param userCreateRequestDTO Le DTO contenant les informations de l'utilisateur à créer.
|
||||
* @return L'utilisateur créé.
|
||||
*/
|
||||
public Users createUser(UserCreateRequestDTO userCreateRequestDTO) {
|
||||
Users user = new Users();
|
||||
user.setNom(userCreateRequestDTO.getNom());
|
||||
user.setPrenoms(userCreateRequestDTO.getPrenoms());
|
||||
user.setEmail(userCreateRequestDTO.getEmail());
|
||||
user.setMotDePasse(userCreateRequestDTO.getMotDePasse()); // Hachage automatique
|
||||
|
||||
// Vérifier si le profile image est défini, sinon attribuer une image par défaut
|
||||
if (userCreateRequestDTO.getProfileImageUrl() == null
|
||||
|| userCreateRequestDTO.getProfileImageUrl().isEmpty()) {
|
||||
user.setProfileImageUrl("https://via.placeholder.com/150"); // Assigner une image par défaut
|
||||
} else {
|
||||
user.setProfileImageUrl(userCreateRequestDTO.getProfileImageUrl());
|
||||
}
|
||||
|
||||
// Vérifier si le rôle est défini, sinon attribuer un rôle par défaut
|
||||
if (userCreateRequestDTO.getRole() == null || userCreateRequestDTO.getRole().isEmpty()) {
|
||||
user.setRole("USER"); // Assigner un rôle par défaut
|
||||
} else {
|
||||
user.setRole(userCreateRequestDTO.getRole());
|
||||
}
|
||||
|
||||
usersRepository.persist(user);
|
||||
System.out.println("[LOG] Utilisateur créé : " + user.getEmail());
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Met à jour un utilisateur existant dans le système.
|
||||
*
|
||||
* @param id L'ID de l'utilisateur à mettre à jour.
|
||||
* @param userCreateRequestDTO Les nouvelles informations de l'utilisateur.
|
||||
* @return L'utilisateur mis à jour.
|
||||
* @throws UserNotFoundException Si l'utilisateur n'est pas trouvé.
|
||||
*/
|
||||
@Transactional
|
||||
public Users updateUser(UUID id, UserCreateRequestDTO userCreateRequestDTO) {
|
||||
Users existingUser = usersRepository.findById(id);
|
||||
if (existingUser == null) {
|
||||
System.out.println("[ERROR] Utilisateur non trouvé avec l'ID : " + id);
|
||||
throw new UserNotFoundException("Utilisateur non trouvé avec l'ID : " + id);
|
||||
}
|
||||
|
||||
// Mettre à jour les champs de l'utilisateur existant
|
||||
existingUser.setNom(userCreateRequestDTO.getNom());
|
||||
existingUser.setPrenoms(userCreateRequestDTO.getPrenoms());
|
||||
existingUser.setEmail(userCreateRequestDTO.getEmail());
|
||||
existingUser.setMotDePasse(userCreateRequestDTO.getMotDePasse()); // Hachage automatique si nécessaire
|
||||
existingUser.setRole(userCreateRequestDTO.getRole());
|
||||
existingUser.setProfileImageUrl(userCreateRequestDTO.getProfileImageUrl());
|
||||
|
||||
usersRepository.persist(existingUser);
|
||||
System.out.println("[LOG] Utilisateur mis à jour avec succès : " + existingUser.getEmail());
|
||||
return existingUser;
|
||||
}
|
||||
/**
|
||||
* Met à jour l'image de profil d'un utilisateur existant dans le système.
|
||||
*
|
||||
* @param id L'ID de l'utilisateur à mettre à jour.
|
||||
* @param profileImageUrl Les nouvelles informations de l'utilisateur.
|
||||
* @return L'utilisateur mis à jour.
|
||||
* @throws UserNotFoundException Si l'utilisateur n'est pas trouvé.
|
||||
*/
|
||||
@Transactional
|
||||
public Users updateUserProfileImage(UUID id, String profileImageUrl) {
|
||||
Users existingUser = usersRepository.findById(id);
|
||||
if (existingUser == null) {
|
||||
System.out.println("[ERROR] Utilisateur non trouvé avec l'ID : " + id);
|
||||
throw new UserNotFoundException("Utilisateur non trouvé avec l'ID : " + id);
|
||||
}
|
||||
|
||||
// Mettre à jour les champs de l'utilisateur existant
|
||||
existingUser.setProfileImageUrl(profileImageUrl);
|
||||
|
||||
usersRepository.persist(existingUser);
|
||||
System.out.println("[LOG] L'image de profile de l\'Utilisateur mis à jour avec succès : " + existingUser.getEmail());
|
||||
return existingUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liste tous les utilisateurs avec pagination.
|
||||
*
|
||||
* @param page Le numéro de la page à récupérer.
|
||||
* @param size Le nombre d'utilisateurs par page.
|
||||
* @return La liste des utilisateurs paginée.
|
||||
*/
|
||||
public List<Users> listUsers(int page, int size) {
|
||||
return usersRepository.findAll().page(page - 1, size).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* Authentifie un utilisateur avec son email et son mot de passe.
|
||||
*
|
||||
* @param email L'email de l'utilisateur.
|
||||
* @param motDePasse Le mot de passe de l'utilisateur.
|
||||
* @return L'utilisateur authentifié.
|
||||
* @throws UserNotFoundException Si l'utilisateur n'est pas trouvé ou si le mot de passe est incorrect.
|
||||
*/
|
||||
public Users authenticateUser(String email, String motDePasse) {
|
||||
Optional<Users> userOptional = usersRepository.findByEmail(email);
|
||||
if (userOptional.isEmpty() || !userOptional.get().verifierMotDePasse(motDePasse)) {
|
||||
System.out.println("[ERROR] Échec de l'authentification pour l'email : " + email);
|
||||
throw new UserNotFoundException("Utilisateur ou mot de passe incorrect.");
|
||||
}
|
||||
System.out.println("[LOG] Utilisateur authentifié : " + email);
|
||||
return userOptional.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère un utilisateur par son ID.
|
||||
*
|
||||
* @param id L'ID de l'utilisateur.
|
||||
* @return L'utilisateur trouvé.
|
||||
* @throws UserNotFoundException Si l'utilisateur n'est pas trouvé.
|
||||
*/
|
||||
public Users getUserById(UUID id) {
|
||||
Users user = usersRepository.findById(id);
|
||||
if (user == null) {
|
||||
System.out.println("[ERROR] Utilisateur non trouvé avec l'ID : " + id);
|
||||
throw new UserNotFoundException("Utilisateur non trouvé avec l'ID : " + id);
|
||||
}
|
||||
System.out.println("[LOG] Utilisateur trouvé avec l'ID : " + id);
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Réinitialise le mot de passe d'un utilisateur.
|
||||
*
|
||||
* @param id L'ID de l'utilisateur.
|
||||
* @param newPassword Le nouveau mot de passe à définir.
|
||||
* @throws UserNotFoundException Si l'utilisateur n'est pas trouvé.
|
||||
*/
|
||||
@Transactional
|
||||
public void resetPassword(UUID id, String newPassword) {
|
||||
Users user = usersRepository.findById(id);
|
||||
if (user == null) {
|
||||
System.out.println("[ERROR] Utilisateur non trouvé avec l'ID : " + id);
|
||||
throw new UserNotFoundException("Utilisateur non trouvé.");
|
||||
}
|
||||
|
||||
user.setMotDePasse(newPassword); // Hachage automatique
|
||||
usersRepository.persist(user);
|
||||
System.out.println("[LOG] Mot de passe réinitialisé pour l'utilisateur : " + user.getEmail());
|
||||
}
|
||||
|
||||
/**
|
||||
* Supprime un utilisateur par son ID.
|
||||
*
|
||||
* @param id L'ID de l'utilisateur à supprimer.
|
||||
* @return true si l'utilisateur a été supprimé, false sinon.
|
||||
*/
|
||||
public boolean deleteUser(UUID id) {
|
||||
boolean deleted = usersRepository.deleteById(id);
|
||||
if (deleted) {
|
||||
System.out.println("[LOG] Utilisateur supprimé avec succès : " + id);
|
||||
} else {
|
||||
System.out.println("[ERROR] Échec de la suppression de l'utilisateur avec l'ID : " + id);
|
||||
}
|
||||
return deleted;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user