/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ec.gob.mcds.seguridades.dao; import ec.gob.mcds.seguridades.generico.Generico; import ec.gob.mcds.seguridades.model.Persona; import ec.gob.mcds.seguridades.model.Rol; import ec.gob.mcds.seguridades.model.Usuario; import ec.gob.mcds.seguridades.model.UsuarioRol; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.NoResultException; import javax.persistence.Query; /** * * @author christian * @author wladdy */ @LocalBean @Stateless public class PersonaDao extends Generico<Persona> { @EJB UsuarioRolDao usuarioRolDao; @EJB UsuarioDao usuarioDao; public PersonaDao() { super(Persona.class); } /** * método que devuelve todas las personas activas de seguridades. * * @throws Exception * @return List */ public List<Persona> listarTodoActivo() throws Exception { String jpaQl = "SELECT p FROM Persona p" + " WHERE p.estado = true" + " ORDER BY p.apellidos"; Query query = getEntityManager().createQuery(jpaQl); return query.getResultList(); } /** * método que devuelve todas las personas de seguridades. * * @throws Exception * @return List */ public List<Persona> listarTodo() throws Exception { String jpaQl = "SELECT p FROM Persona p" + " ORDER BY p.apellidos"; Query query = getEntityManager().createQuery(jpaQl); return query.getResultList(); } public void guardarCargaMasiva(List<Persona> personas, Map<String, Rol> rolesUsuarios) throws Exception { List<Usuario> listaUsuarios = new ArrayList<Usuario>(); for (Persona obj : personas) { //crear personas y usuarios si estos no existen if (obj.getPerId() == null) { this.create(obj); } else { //Update Persona String jpaQl = "UPDATE sch_seguridades.persona" + " SET nombres = '" + obj.getNombres() + "'," + " apellidos = '" + obj.getApellidos() + "'," + " direccion = '" + obj.getDireccion() + "'," + " telefono_convencional = '" + obj.getTelefonoConvencional() + "'," + " telefono_celular = '" + obj.getTelefonoCelular() + "'," + " email = '" + obj.getEmail() + "'," + " ins_id = " + obj.getInstitucion().getInsId() + " WHERE cedula = '" + obj.getCedula() + "'"; Query query = getEntityManager().createNativeQuery(jpaQl); query.executeUpdate(); } listaUsuarios.add(obj.getUsuarioList().get(0)); } for (Usuario obj : listaUsuarios) { Usuario usuarioTmp = usuarioDao.listarPorLoginPassword(obj.getLogin(), obj.getClave()).get(0); //crear rolesxusuario for (Map.Entry<String, Rol> entry : rolesUsuarios.entrySet()) { Rol valor = entry.getValue(); UsuarioRol usuarioRol = new UsuarioRol(); usuarioRol.setRol(valor); usuarioRol.setUsuario(usuarioTmp); //Si no existe el rol y el usuario, crearlo if (usuarioRolDao.listarPorUsuarioRol(usuarioRol) == null) { usuarioRolDao.create(usuarioRol); } } } } public Persona findByCedula(String cedula) { try { String jpaQl = "SELECT p" + " FROM Persona p" + " WHERE p.cedula =:cedula"; Query query = getEntityManager().createQuery(jpaQl); query.setParameter("cedula", cedula); return (Persona) query.getSingleResult(); } catch (NoResultException e) { return null; } } }