AdmMono/src/com/rjconsultores/ventaboletos/service/impl/UsuarioServiceImpl.java

220 lines
6.7 KiB
Java
Raw Blame History

/*
* 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.authentication.CredentialsExpiredException;
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<Usuario> buscarPeloNome(String nome) {
return usuarioDAO.buscarPeloNome(nome);
}
public List<Usuario> 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<63>n duplicado
List<Usuario> 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<63>n complejidad contrasena
if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()) {
ContrasenaUtileria.validarContrasenaCompleja(senha);
}
// encriptaci<63>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<UsuarioPerfil> lsUsuarioPerfil = usuarioPerfilDAO.obtenerPorUsuario(entidad);
for (UsuarioPerfil up2 : lsUsuarioPerfil) {
usuarioPerfilDAO.borrar(up2);
}
}
List<UsuarioPerfil> lsUp = new ArrayList<UsuarioPerfil>();
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(rollbackFor = BusinessException.class)
@Override
public Usuario cambiarContrasena(Usuario entidad, String senha) throws BusinessException {
// validaci<63>n duplicado
List<Usuario> 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<63>n complejidad contrasena
if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()) {
ContrasenaUtileria.validarContrasenaCompleja(senha);
}
// encriptaci<63>n contrasena
entidad.setSenha(ContrasenaUtileria.encriptarContrasena(senha));
}
entidad.setFecContrasena(Calendar.getInstance().getTime());
entidad.setUsuariomodifId(entidad.getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.TRUE);
if (entidad.getUsuarioId() != null) {
return usuarioDAO.actualizacion(entidad);
} else {
throw new BusinessException("MSG.Registro.Existe");
}
}
@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) {
senha = ContrasenaUtileria.encriptarContrasena(senha);
return usuarioDAO.buscarPeloNomeSenha(stUsuario, senha);
}
@Override
public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException, DataAccessException, CredentialsExpiredException {
if (login == null) {
throw new UsernameNotFoundException("Usuario n<>o encontrado");
}
List<Usuario> list = usuarioDAO.buscarPelaCveUsuario(login.toUpperCase());
if (list.isEmpty()) {
throw new UsernameNotFoundException("Usuario n<>o encontrado");
}
Usuario user = list.get(0);
if (ApplicationProperties.getInstance().contrasenaValidaComplejidad()) {
if (!user.isCredentialsNonExpired()) {
throw new CredentialsExpiredException("Senha Expirada");
}
}
return user;
}
public List<Usuario> buscarPorEmpleado(Empleado empleado) {
return usuarioDAO.buscarPorEmpleado(empleado);
}
public List<Usuario> buscarPelaCveUsuario(String cveUsuario) {
return usuarioDAO.buscarPelaCveUsuario(cveUsuario);
}
@Override
public List<Usuario> buscarPeloNomeLike(String nome) {
return usuarioDAO.buscarPeloNomeLike(nome);
}
}