package apap.tutorial.manpromanpro.restservice;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;

import apap.tutorial.manpromanpro.model.UserModel;
import apap.tutorial.manpromanpro.repository.UserDb;
import apap.tutorial.manpromanpro.restdto.request.CreateUserRequestDTO;
import apap.tutorial.manpromanpro.restdto.response.CreateUserResponseDTO;

@Service
public class UserRestServiceImpl implements UserRestService {
    @Autowired
    private UserDb userDb;

    @Autowired
    private RoleRestService roleService;

    @Override
    public CreateUserResponseDTO addUser(CreateUserRequestDTO requestDTO) {
        UserModel user = new UserModel();
        user.setName(requestDTO.getName());
        user.setUsername(requestDTO.getUsername());
        user.setRole(roleService.getRoleByRoleName(requestDTO.getRole()));
        user.setPassword(hashPassword(requestDTO.getPassword()));
        userDb.save(user);

        CreateUserResponseDTO responseDTO = new CreateUserResponseDTO();
        responseDTO.setId(user.getId());
        responseDTO.setName(user.getName());
        responseDTO.setRole(user.getRole().getRole());
        responseDTO.setUsername(user.getUsername());
        return responseDTO;
    }

    @Override
    public String hashPassword(String password) {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        return passwordEncoder.encode(password);
    }   
}