UserServiceImpl.java 2.42 KB
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<Role> 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<Dette> findDettesByUsername(String username) {
        return userRepository.findDettesByUsername(username);
    }

    @Override
    @Transactional(readOnly = true)
    public List<User> 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<Dette> dettes = user.getDettes();
        List<Dette> 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;
    }

}