/*
* 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;
}
}
}