package mx.edu.um.mateo.rh.dao;
import java.util.List;
import java.util.Map;
import mx.edu.um.mateo.general.model.Usuario;
import mx.edu.um.mateo.rh.model.ClaveEmpleado;
import mx.edu.um.mateo.rh.model.Empleado;
/**
*
* @author osoto@um.edu.mx
*/
public interface EmpleadoDao {
/**
* Regresa una lista de todos los empleados
*
* @param params
* @return
*/
public Map<String, Object> lista(Map<String, Object> params);
/**
* Regresa al empleado correspondiente al id
*
* @param id
* @return
*/
public Empleado obtiene(Long id);
/**
* Graba un empleado con su empresa, la cual obtiene del usuario
*
* @param empleado
* @param usuario
* @return
*/
public Empleado graba(Empleado empleado, Usuario usuario, ClaveEmpleado clave);
/**
* Graba un empleado, SIN empresa. Este metodo se utiliza para pruebas DAO
*
* @param empleado
* @return
*/
public Empleado graba(Empleado empleado);
/**
* Gets empleado's information based on parameter values
*
* @param empleado
* @return empleado populated empleado object
*/
public Empleado getEmpleado(final Empleado empleado);
public Empleado getEmpleado(String clave);
/**
* Saves a empleado's information
*
* @param empleado the object to be saved
*/
public void saveEmpleado(Empleado empleado);
/**
* Saves a empleado's information
*
* @param empleado the object to be saved
* @param usuario the object that contains Empresa
*/
public void saveEmpleado(Empleado empleado, Usuario usuario, ClaveEmpleado ce);
/**
* An employee cannot be deleted Removes a empleado from the database by id
*
* @param id the empleado's id
*/
// public void removeEmpleado(final Empleado empleado);
/**
* Retrieves empleados by nombre, apellido or clave
*
* @param empleado
* @return
*/
public List<Empleado> searchEmpleado(final Empleado empleado);
/**
* Retrieves empleados by month of fechaNacimiento
*
* @param empleado
* @return
*/
public List<Empleado> getEmpleadosBday(final Empleado empleado);
public Empleado getEmpleadoClave(Empleado empleado);
public List<Empleado> searchEmpleadoByClaveOrApPaterno(Empleado empleado);
/**
* Filtra empleados por contabilidad o centro de costo
*
* @param ccosto
* @return
*/
//public List searchEmpleadoByCCosto(EmpleadoPuesto puesto);
/**
* Filtra empleados por contabilidad, modalidad y tipo de empleado
*
* @param puesto Puede contener la contabilidad deseada
* @param emp Puede contener la modalidad y el tipo de empleado
* @return
*/
//public List searchEmpleadoByCCostoModalidadTipoEmpleado(EmpleadoPuesto puesto,Empleado emp,String sChecked []);
/**
* Regresa las percepciones y deducciones del empleado
*
* @param empleado
* @return
*/
//public Set getEmpleadoPerDeds(Empleado empleado);
public void actualiza(Empleado empleado);
}