UserServiceImpl.java 2.79 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;

@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<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> findDettes() {
        String username = securityService.findLoggedInUsername();
        User user = userRepository.findByUsername(username);
        return detteRepository.findByBorrower(user);
    }

    @Override
    @Transactional(readOnly = true)
    public List<Dette> findCreances() {
        String username = securityService.findLoggedInUsername();
        User user = userRepository.findByUsername(username);
        return detteRepository.findByCreditor(user);
    }
    
    @Override
    @Transactional(readOnly = true)
    public List<User> 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;        
        
    }
    
}