/*
   * Inserta un registro nuevo en la tabla ESTATUS_LABORAL
   * toma los valores del objeto de entrada
   */
  public void insert(EstatusLaboral objSeleccionado) {

    // Establece una nueva conexion con la base de datos
    con = new ConnectionDB();
    con.connect();

    // Sentencia SQL para insertar registros
    // TODO: Cuando se maneje registro de usuarios del sistema
    // (usuario y contraseña) se debe indicar el ID del usuario registrado
    String sql =
        "INSERT INTO ESTATUS_LABORAL ("
            + "ESTATUS, "
            + "ID_USUARIO_MODIFICA) "
            + "VALUES ('"
            + objSeleccionado.getEstatus().toUpperCase()
            + "', '"
            + objSeleccionado.getIdUsuarioModifica().getId()
            + "') ";

    // Ejecuta la consulta
    con.execute(sql);

    // Cierra la conexion con la base de datos
    con.close();
  }
  /*
   * Ejecuta una sentencia SQL para recuperar registros de la tabla ESTATUS_LABORAL
   */
  public List<EstatusLaboral> findAll(String sql) {

    // Establece una nueva conexion con la base de datos
    con = new ConnectionDB();
    con.connect();

    // Define la Lista que se va a retornar
    List<EstatusLaboral> list = new ArrayList<>();

    // Ejecuta la consulta
    try {

      // Ejecuta la consulta y la asigna a un conjunto de resultados ResultSet
      ResultSet rs = con.query(sql);

      // Recorre cada una de las filas del resultado y crea los objetos correspondientes
      while (rs.next()) {
        // Crea el nuevo objeto
        EstatusLaboral estatusLaboral = new EstatusLaboral();

        // Asigna los valores al nuevo objeto
        estatusLaboral.setId(rs.getInt("ID"));
        estatusLaboral.setEstatus(rs.getString("ESTATUS"));

        Seguridad seguridad =
            (Seguridad) new SeguridadDAO().findOne(rs.getInt("ID_USUARIO_MODIFICA")).get(0);
        estatusLaboral.setIdUsuarioModifica(seguridad);

        estatusLaboral.setFechaModifica(rs.getDate("FECHA_MODIFICA"));

        // Adiciona el nuevo objeto a la lista que Retorna
        list.add((EstatusLaboral) estatusLaboral);
      }
    } catch (SQLException e) {

      // Si tiene problemas ejecuntando la consutla SQL es administrada
      // por el siguiente manejador de eventos devolviendo el error y la
      // consulta que falló
      // Asigna el error al mensaje que va a salir en pantalla
      msgEx = e.getMessage();
      FacesMessage message =
          new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error Consulta: " + sql, msgEx);
      FacesContext.getCurrentInstance().addMessage(null, message);
      FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);

      // Cierra la conexion con la base de datos
      con.close();

    } finally {

      // Si ejecuta la consulta SQL con exito ejecuta las siguientes
      // sentencias para finalizar el proceso
      // Si la lista esta vacia, genera un objeto vacio
      if (list.isEmpty()) {
        EstatusLaboral estatusLaboral = new EstatusLaboral();
        list.add((EstatusLaboral) estatusLaboral);
      }

      // Cierra la conexion con la base de datos
      con.close();
    }

    // Devuelve la lista
    return list;
  }