package fr.la_banquise.backend.services; import fr.la_banquise.backend.data.model.RolesAsso; import fr.la_banquise.backend.data.model.User; import fr.la_banquise.backend.data.repository.JiRepository; import fr.la_banquise.backend.data.repository.UserRepository; import fr.la_banquise.backend.rest.request.BulkUserDelRequest; import fr.la_banquise.backend.rest.request.BulkUserPostRequest; import fr.la_banquise.backend.rest.request.UserDelRequest; import fr.la_banquise.backend.rest.request.UserRequest; import fr.la_banquise.backend.rest.response.BulkUserDelResponse; import fr.la_banquise.backend.rest.response.BulkUserPostResponse; import io.quarkus.elytron.security.common.BcryptUtil; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; import java.util.ArrayList; import java.util.List; /** * UserService */ @ApplicationScoped public class UserService { @Inject UserRepository userRepository; @Inject InstanceService instanceService; @Inject JiRepository jiRepository; public List getAllUsers() { return userRepository.listAll(); } public User getUser(Long id) { return userRepository.findById(id); } @Transactional public User createUser(UserRequest request) { User user = new User(request.name, BcryptUtil.bcryptHash(request.password), RolesAsso.NONE, new ArrayList<>()); userRepository.persist(user); return user; } @Transactional public void deleteUser(Long id) { userRepository.deleteById(id); } @Transactional // wtf ? this is get user no ? public User updateUser(Long id) { User user = userRepository.findById(id); return user; } @Transactional public void deleteUsers(Long[] ids) { for (Long id : ids) { userRepository.deleteById(id); } } @Transactional public BulkUserDelResponse deleteUsers(BulkUserDelRequest request) { BulkUserDelResponse response = new BulkUserDelResponse(); User userToDel; for (UserDelRequest requestName : request.usernames) { try { userToDel = userRepository.find("name", requestName.name).firstResult(); userRepository.delete(userToDel); response.success_names.add(requestName.name); } catch (Exception e) { response.failed_names.add(requestName.name); response.failed_reasons.add(e.toString()); } } return response; } @Transactional public BulkUserPostResponse createUsers(BulkUserPostRequest usersRequest) { BulkUserPostResponse response = new BulkUserPostResponse(); if (jiRepository.findById(usersRequest.jiId) != null) { for (UserRequest user : usersRequest.users) { try { createUser(user); response.success_names.add(user.name); } catch (Exception e) { response.already_created.add(user.name); } } } return response; } public RolesAsso fromString(String role_str) { return switch (role_str) { case "ROOT" -> RolesAsso.ROOT; case "MODO" -> RolesAsso.MODO; case "PINGOUIN" -> RolesAsso.PINGOUIN; case "JI" -> RolesAsso.JI; default -> throw new Error("Wrong role str"); }; } }