/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.rjconsultores.ventaboletos.service.impl; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.UsuarioDAO; import com.rjconsultores.ventaboletos.dao.UsuarioPerfilDAO; import com.rjconsultores.ventaboletos.entidad.Empleado; import com.rjconsultores.ventaboletos.entidad.Perfil; import com.rjconsultores.ventaboletos.entidad.Usuario; import com.rjconsultores.ventaboletos.entidad.UsuarioPerfil; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.service.UsuarioService; import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.utilerias.seguridad.ContrasenaUtileria; /** * * @author Administrador */ @Service("usuarioService") public class UsuarioServiceImpl implements UsuarioService, UserDetailsService { @Autowired private UsuarioDAO usuarioDAO; @Autowired private UsuarioPerfilDAO usuarioPerfilDAO; public List buscarPeloNome(String nome) { return usuarioDAO.buscarPeloNome(nome); } public List obtenerTodos() { return usuarioDAO.obtenerTodos(); } public Usuario obtenerID(Integer id) { return usuarioDAO.obtenerID(id); } @Transactional(rollbackFor = BusinessException.class) @Override public Usuario suscribirActualizar(Usuario entidad,String senha,Perfil perfil) throws BusinessException { //validación duplicado List lsUsuario = this.buscarPelaCveUsuario(entidad.getClaveUsuario()); boolean podeSalvar = false; if (lsUsuario.isEmpty()) { podeSalvar = true; } else { if (entidad.getUsuarioId() != null){ for (Usuario u : lsUsuario) { if (u.getUsuarioId().equals(entidad.getUsuarioId())) { podeSalvar = true; } } } } if (!podeSalvar) { throw new BusinessException("MSG.Registro.Existe"); } if (senha != null){ //validación complejidad contrasena if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()){ ContrasenaUtileria.validarContrasenaCompleja(senha); } //encriptación contrasena entidad.setSenha(ContrasenaUtileria.encriptarContrasena(senha)); } //Perfil UsuarioPerfil up = new UsuarioPerfil(); up.setUsuario(entidad); up.setPerfil(perfil); up.setActivo(Boolean.TRUE); up.setFecmodif(Calendar.getInstance().getTime()); up.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); if (entidad.getUsuarioId() != null) { List lsUsuarioPerfil = usuarioPerfilDAO.obtenerPorUsuario(entidad); for (UsuarioPerfil up2 : lsUsuarioPerfil) { usuarioPerfilDAO.borrar(up2); } } List lsUp = new ArrayList(); lsUp.add(up); entidad.setUsuarioPerfilList(lsUp); entidad.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.TRUE); if (entidad.getUsuarioId() == null){ return usuarioDAO.suscribir(entidad); }else{ return usuarioDAO.actualizacion(entidad); } } @Transactional public void borrar(Usuario entidad) { entidad = obtenerID(entidad.getUsuarioId()); for (UsuarioPerfil up : entidad.getUsuarioPerfilList()) { up.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); up.setFecmodif(Calendar.getInstance().getTime()); up.setActivo(Boolean.FALSE); } entidad.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.FALSE); usuarioDAO.actualizacion(entidad); } public Usuario buscarPeloNomeSenha(String stUsuario, String senha) { return usuarioDAO.buscarPeloNomeSenha(stUsuario, senha); } @Override public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException, DataAccessException { if (login == null) { throw new UsernameNotFoundException("Usuario não encontrado"); } List list = usuarioDAO.buscarPelaCveUsuario(login.toUpperCase()); if (list.isEmpty()) { throw new UsernameNotFoundException("Usuario não encontrado"); } return list.get(0); } public List buscarPorEmpleado(Empleado empleado) { return usuarioDAO.buscarPorEmpleado(empleado); } public List buscarPelaCveUsuario(String cveUsuario) { return usuarioDAO.buscarPelaCveUsuario(cveUsuario); } }