/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package mx.edu.um.mateo.rh.dao.impl;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sql.DataSource;
import mx.edu.um.mateo.contabilidad.facturas.model.ProveedorFacturas;
import mx.edu.um.mateo.general.dao.BaseDao;
import mx.edu.um.mateo.general.model.Usuario;
import mx.edu.um.mateo.general.utils.Constantes;
import mx.edu.um.mateo.rh.dao.EmpleadoDao;
import mx.edu.um.mateo.rh.dao.TraspasoDatosEmpleadoDao;
import mx.edu.um.mateo.rh.model.ClaveEmpleado;
import mx.edu.um.mateo.rh.model.Empleado;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
/**
*
* @author develop
*/
@Repository
@Transactional
public class TraspasoDatosEmpleadoDaoHibernate extends BaseDao implements TraspasoDatosEmpleadoDao {
@Autowired
@Qualifier("dataSource2")
private DataSource dataSource2;
@Autowired
private EmpleadoDao dao;
public void traspaso(Usuario usuario) {
String COMANDO = "select "
+ "e.id, e.clave, e.nombre, e.appaterno, e.apmaterno, e.fechanacimiento, e.direccion, e.genero,e.status, "
+ "e.nacionalidad, ep.estadocivil, ep.conyuge, ep.fechamatrimonio, ep.madre, ep.padre, ep.finado_padre, ep.finado_madre, "
+ "ep.iglesia, ep.responsabilidad, el.cuenta, el.curp, el.escalafon, el.imms, el.rfc, el.turno, el.fecha_baja, "
+ "el.antiguedad_base,el.fecha_antiguedad_base, el.fecha_alta, el.antiguedad_fiscal, el.modalidad, "
+ "el.experiencia_fuera_um, el.ife, el.rango, el.adventista, ap.username, ap.email "
+ "from "
+ "aron.empleado e, aron.empleadopersonales ep, aron.empleadolaborales el, noe.app_user ap, noe.user_relacion ur "
+ "where e.id=ep. id "
+ "and e.id=el.id "
+ "and e.id=ur.empleado_id "
+ "and ap.id=ur.id ";
log.debug("Entrando a metodo de paso de proveedores");
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List<Empleado> empleados = new ArrayList<Empleado>();
try {
conn = dataSource2.getConnection();
stmt = conn.prepareStatement(COMANDO);
rs = stmt.executeQuery();
while (rs.next()) {
Empleado empleado = new Empleado();
try {
if (!rs.getString("adventista").isEmpty() && rs.getString("adventista").equals("Y")) {
empleado.setAdventista(true);
}
} catch (NullPointerException e) {
empleado.setAdventista(false);
}
try {
if (rs.getInt("finado_padre") == 1) {
empleado.setFinadoMadre(true);
}
} catch (NullPointerException e) {
empleado.setFinadoMadre(false);
}
try {
if (rs.getInt("finado_madre") == 1) {
empleado.setFinadoPadre(true);
}
} catch (NullPointerException e) {
empleado.setFinadoPadre(false);
}
try {
if (rs.getString("modalidad").isEmpty() || rs.getString("modalidad") == null) {
empleado.setModalidad("D");
log.debug("asignando modalidad vasia");
} else {
empleado.setModalidad(rs.getString("modalidad"));
}
} catch (NullPointerException e) {
log.debug("asignando modalidad {}", rs.getString("modalidad"));
empleado.setModalidad("D");
}
try {
if (rs.getString("rango").isEmpty() || rs.getString("rango") == null) {
log.debug("asignando rango vasio");
empleado.setRango("A");
} else {
empleado.setRango(rs.getString("rango"));
}
} catch (NullPointerException e) {
log.debug("asignando rango {}", rs.getString("rango"));
empleado.setRango("A");
}
try {
if (rs.getString("imms").isEmpty() || rs.getString("imms") == null) {
log.debug("asignando rango vasio");
empleado.setImms("imms");
} else {
empleado.setImms(rs.getString("imms"));
}
} catch (NullPointerException e) {
log.debug("asignando rango {}", rs.getString("rango"));
empleado.setImms("imms");
}
empleado.setApMaterno(rs.getString("appaterno"));
empleado.setApPaterno(rs.getString("apmaterno"));
empleado.setClave(rs.getString("clave"));
empleado.setConyuge(rs.getString("conyuge"));
empleado.setCorreo(rs.getString("email"));
empleado.setUsername(rs.getString("email"));
empleado.setCuenta(rs.getString("cuenta"));
empleado.setCurp(rs.getString("curp"));
empleado.setDireccion(rs.getString("direccion"));
empleado.setEscalafon(rs.getInt("escalafon"));
empleado.setEstadoCivil(rs.getString("estadocivil"));
empleado.setExperienciaFueraUm(new BigDecimal(rs.getInt("experiencia_fuera_um")));
empleado.setFechaAlta(rs.getDate("fecha_alta"));
empleado.setFechaBaja(rs.getDate("fecha_baja"));
empleado.setFechaMatrimonio(rs.getDate("fechamatrimonio"));
empleado.setFechaNacimiento(rs.getDate("fechanacimiento"));
empleado.setGenero(rs.getString("genero"));
empleado.setId(rs.getLong("id"));
empleado.setIfe(rs.getString("ife"));
empleado.setIglesia(rs.getString("iglesia"));
empleado.setMadre(rs.getString("madre"));
empleado.setNombre(rs.getString("nombre"));
empleado.setPadre(rs.getString("padre"));
empleado.setResponsabilidad(rs.getString("responsabilidad"));
empleado.setRfc(rs.getString("rfc"));
empleado.setStatus(rs.getString("status"));
empleado.setTipoEmpleado(null);
empleado.setTurno(rs.getInt("turno"));
empleado.setPassword(rs.getString("nombre"));
empleados.add(empleado);
}
} catch (SQLException ex) {
Logger.getLogger(TraspasoDatosEmpleadoDaoHibernate.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
stmt.close();
rs.close();
conn.close();
} catch (SQLException ex) {
log.error("{}", ex);
stmt = null;
conn = null;
rs = null;
}
}
for (Empleado e : empleados) {
log.debug("proveedorFacturas{}", e.toString());
log.debug("proveedorFacturasCorreo{}", e.getCorreo().toString());
ClaveEmpleado clave = new ClaveEmpleado();
clave.setClave(e.getClave());
clave.setEmpleado(e);
clave.setEmpresa(usuario.getEmpresa());
clave.setFecha(new Date());
clave.setFechaAlta(new Date());
clave.setObservaciones("clave de empleado");
clave.setStatus(Constantes.STATUS_ACTIVO);
clave.setUsuarioAlta(usuario);
dao.saveEmpleado(e, usuario, clave);
}
}
}