package fr.plil.sio.web.mvc; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.HashSet; import java.util.List; import java.util.Set; @Service("userService") public class UserServiceImpl implements UserService { @Resource private UserRepository userRepository; @Resource private DetteRepository detteRepository; @Resource private RoleRepository roleRepository; @Resource private PasswordEncoder passwordEncoder; @Resource private SecurityService securityService; @Override @Transactional public User createUser(String username, String password) { User user = new User(); user.setUsername(username); user.setPassword(passwordEncoder.encode(password)); Set roles = new HashSet<>(); roles.add(roleRepository.findByName("ROLE_USER")); user.setRoles(roles); userRepository.save(user); return user; } @Override @Transactional(readOnly = true) public User findByUsername(String username) { return userRepository.findByUsername(username); } @Override @Transactional(readOnly = true) public List findDettes() { String username = securityService.findLoggedInUsername(); User user = userRepository.findByUsername(username); return detteRepository.findByBorrower(user); } @Override @Transactional(readOnly = true) public List findAll() { return userRepository.findAll(); } @Override @Transactional public Dette addDette(String username, String sommeDette) { //Get the holder of debt User user = userRepository.findByUsername(username); String connectedUsername = securityService.findLoggedInUsername(); User connectedUser = userRepository.findByUsername(connectedUsername); Dette d = new Dette(); Double dSomme = Double.parseDouble(sommeDette); d.setSommeDette(dSomme); d.setBorrower(connectedUser); d.setCreditor(user); detteRepository.save(d); return d; } @Override @Transactional public String deleteDette(String id){ String dId = id.split("=")[1]; Dette d = detteRepository.findById(Long.parseLong(dId)); detteRepository.delete(d); return id; } }