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; import org.springframework.web.bind.annotation.ResponseBody; @Service("userService") public class UserServiceImpl implements UserService { @Resource private UserRepository userRepository; @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 findDettesByUsername(String username) { return userRepository.findDettesByUsername(username); } @Override @Transactional(readOnly = true) public List findAll() { return userRepository.findAll(); } @Override @Transactional public boolean addDette(String username, String sommeDette) { //Get the holder of debt User user = userRepository.findByUsername(username); //Get connected user // Authentication auth = SecurityContextHolder.getContext().getAuthentication(); String connectedUsername = securityService.findLoggedInUsername(); User connectedUser = userRepository.findByUsername(connectedUsername); //Set dette List dettes = user.getDettes(); List newDettes = user.getDettes(); Dette d = new Dette(); Double dSomme = Double.parseDouble(sommeDette); d.setSommeDette(dSomme); d.setHolderOfDebt(connectedUser); d.setDueToUser(user); newDettes.add(d); connectedUser.setDettes(newDettes); return true; } }