/** @brief Método que realiza la setencia SQL para reestablece la contraseña de un recurso humano especìfico que se encuentran en la Base de Datos.
  * @param nombre_usuario del recuros humano que se desea consultar.
  * @param nueva_contrasena que tendrá el recurso humano.
  * @return 0 si la operación se realizó con éxito, números negativos si pasó algún error con la Base de Datos.
 */
 public int cambiar_contrasena(RecursoHumano recurso_humano)
 {
     SqlCommand comando = new SqlCommand("CAMBIAR_CONTRASENA");
     comando.CommandType = CommandType.StoredProcedure;
     comando.Parameters.Add("@username", SqlDbType.VarChar).Value = recurso_humano.usuario;
     comando.Parameters.Add("@nueva_contrasena", SqlDbType.VarChar).Value = recurso_humano.contrasena;
     return m_data_base_adapter.ejecutar_consulta(comando);
 }
 /** @brief Método que asigna las operaciones necesarias para poder modificar un recurso humano.
  * @param datos vector que contiene los datos para poder crear un recurso humano.
  * @return 0 si la operación se realizó con éxito, números negativos si pasó algún error con la Base de Datos.
  */
 public int modificar_recurso_humano(Object[] datos)
 {
     RecursoHumano recurso_humano = new RecursoHumano(datos);
     return m_base_datos.modificar_recurso_humano(recurso_humano);
 }
 // Métodos
 /** @brief Método que asigna las operaciones necesarias para poder insertar un recurso humano.
  * @param datos vector que contiene los datos para poder crear un recurso humano.
  * @return 0 si la operación se realizó con éxito, números negativos si pasó algún error con la Base de Datos.
  */
 public int insertar_recurso_humano(Object[] datos)
 {
     RecursoHumano recurso_humano = new RecursoHumano(datos);
     return m_base_datos.insertar_recurso_humano(recurso_humano);
 }
 // Métodos auxiliares
 /** @brief Método auxiliar que rellena los parámetros de un recurso humano para poder realizar un procedimiento almacenado.
 *  @param comando comando sql que contendrá el procedimiento y sus respectivos parámetros. Se envía por referencia por lo tanto se va a modificar.
 *  @param recurso_humano recurso humano con la información necesaria para realizar el procedimiento.
 */
 private void rellenar_parametros_recurso_humano(ref SqlCommand comando, RecursoHumano recurso_humano)
 {
     comando.CommandType = CommandType.StoredProcedure;
     comando.Parameters.Add("@username", SqlDbType.VarChar).Value = recurso_humano.usuario;
     comando.Parameters.Add("@cedula", SqlDbType.VarChar).Value = recurso_humano.cedula;
     if (recurso_humano.es_administrador)
     {
         comando.Parameters.Add("@id_proyecto", SqlDbType.Int).Value = DBNull.Value;
         comando.Parameters.Add("@rol", SqlDbType.VarChar).Value = DBNull.Value;
     }
     else
     {
         comando.Parameters.Add("@id_proyecto", SqlDbType.Int).Value = recurso_humano.proyecto_asociado;
         comando.Parameters.Add("@rol", SqlDbType.VarChar).Value = recurso_humano.rol;
     }
     comando.Parameters.Add("@telefono", SqlDbType.VarChar).Value = recurso_humano.telefono;
     comando.Parameters.Add("@nombre", SqlDbType.VarChar).Value = recurso_humano.nombre;
     comando.Parameters.Add("@hashed", SqlDbType.VarChar).Value = recurso_humano.contrasena;
     comando.Parameters.Add("@correo", SqlDbType.VarChar).Value = recurso_humano.correo;
     comando.Parameters.Add("@admin", SqlDbType.Bit).Value = recurso_humano.es_administrador ? 1 : 0;
 }
 /** @brief Método que realiza la setencia SQL para modificar un recurso humano.
  * @param recurso_humano a guardar en la base de datos.
  * @return 0 si la operación se realizó con éxito, números negativos si pasó algún error con la Base de Datos.
  */
 public int modificar_recurso_humano(RecursoHumano recurso_humano)
 {
     // Procedimiento almacenado
     SqlCommand comando = new SqlCommand("MODIFICAR_RH");
     rellenar_parametros_recurso_humano(ref comando, recurso_humano);
     return m_data_base_adapter.ejecutar_consulta(comando);
 }