public void Modificar_Usuario(Usuario unUsuario)
        {
            this.Controls.Clear();
            this.Controls.Add(this.menuStrip1);

            UserControlAgregarUsuario = new UserControl_Usuario(this);
            this.Controls.Add(UserControlAgregarUsuario);
            UserControlAgregarUsuario.Location = new System.Drawing.Point(0, 20);
            UserControlAgregarUsuario.Name = "UserControlAgregarUsuario";

            UserControlAgregarUsuario.Cargar_Usuario(unUsuario);
        }
        //Modifica un Huesped en DB
        static public bool Modificar_Huesped(Usuario unUsuario)
        {
            try
            {
                SqlConnection dbsession = DbManager.dbConnect();
                SqlCommand cmd = new SqlCommand("ENER_LAND.Modificar_Usuario", dbsession);

                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@idUsuario", unUsuario.idUsuario));
                cmd.Parameters.Add(new SqlParameter("@contraseña", unUsuario.password));
                cmd.Parameters.Add(new SqlParameter("@Nombre", unUsuario.Nombre));
                cmd.Parameters.Add(new SqlParameter("@Apellido", unUsuario.Apellido));
                cmd.Parameters.Add(new SqlParameter("@Tipo_Documento", unUsuario.Tipo_Documento));
                cmd.Parameters.Add(new SqlParameter("@Nro_Documento", unUsuario.Nro_Documento));
                cmd.Parameters.Add(new SqlParameter("@Mail", unUsuario.Mail));
                cmd.Parameters.Add(new SqlParameter("@Telefono", unUsuario.Telefono));
                cmd.Parameters.Add(new SqlParameter("@Calle", unUsuario.Calle));
                cmd.Parameters.Add(new SqlParameter("@Numero", unUsuario.Numero));

                if (unUsuario.Piso == -1)
                    cmd.Parameters.Add(new SqlParameter("@Piso", DBNull.Value));
                else
                    cmd.Parameters.Add(new SqlParameter("@Piso", unUsuario.Piso));

                if (unUsuario.Departamento == '\0')
                    cmd.Parameters.Add(new SqlParameter("@Departamento", DBNull.Value));
                else
                    cmd.Parameters.Add(new SqlParameter("@Departamento", unUsuario.Departamento));

                cmd.Parameters.Add(new SqlParameter("@idLocalidad", unUsuario.idLocalidad));
                cmd.Parameters.Add(new SqlParameter("@idPais", unUsuario.idPais));
                cmd.Parameters.Add(new SqlParameter("@Fecha_Nacimiento", unUsuario.Fecha_Nacimiento));
                if (unUsuario.Habilitado)
                    cmd.Parameters.Add(new SqlParameter("@Habilitado", 1));
                else
                    cmd.Parameters.Add(new SqlParameter("@Habilitado", Convert.ToChar("0")));

                SqlParameter ValorDeRetorno = cmd.Parameters.Add("returnParameter", SqlDbType.Int);
                ValorDeRetorno.Direction = ParameterDirection.ReturnValue;
                try
                {
                    cmd.ExecuteNonQuery();
                    int resultado = Convert.ToInt32(ValorDeRetorno.SqlValue.ToString());
                    if (resultado != 0)
                        return false;

                    return true;
                }
                catch (Exception e)
                {
                    MessageBox.Show("[ERROR] - " + e.ToString());
                    return false;
                    throw;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                return false;
            }

        }
        public void Cargar_Usuario(Usuario unUsuario)
        {
            flag_Modificacion = true;
            Usuario_A_Modificar = unUsuario;
            this.checkBox_Habilitado.Enabled = true;
            this.textBox_Usuario.Enabled = false;
            

            if (unUsuario.idLocalidad != -1)
            {
                DataRow[] Rows = TablaLocalidades.Select("idLocalidad = " + unUsuario.idLocalidad.ToString().Trim());
                this.ComboBox_Localidad.Text = Rows[0][1].ToString().Trim();
            }
            else
                this.ComboBox_Localidad.SelectedText = "Otro";

            if (unUsuario.idPais != -1)
            {
                DataRow[] Rows = TablaPaises.Select("idPais = " + unUsuario.idPais.ToString().Trim());
                this.ComboBox_PaisOrigen.Text = Rows[0][1].ToString().Trim();
            }
            else
                this.ComboBox_PaisOrigen.SelectedText = "Otro";

            this.textBox_Apellido.Text = unUsuario.Apellido;
            this.textBox_Calle.Text = unUsuario.Calle;
            if(unUsuario.Nro_Documento != -1)
                this.textBox_DNI.Text = unUsuario.Nro_Documento.ToString();
            
            this.textBox_mail.Text = unUsuario.Mail;
            this.textBox_Usuario.Text = unUsuario.username;
            this.textBox_Contraseña.Text = "******";
            this.textBox_Name.Text = unUsuario.Nombre;
            if(unUsuario.Numero != -1)
                this.textBox_Numero.Text = unUsuario.Numero.ToString();

            if (unUsuario.Piso != -1)
                if(unUsuario.Piso == 0)
                    this.textBox_Piso.Text = "PB";
                else
                    this.textBox_Piso.Text = unUsuario.Piso.ToString();

            if (unUsuario.Telefono != -1)
                this.textBox_Telefono.Text = unUsuario.Telefono.ToString();

            this.textBox_Departamento.Text = unUsuario.Departamento.ToString();

            this.ComboBox_TipoDoc.Text = unUsuario.Tipo_Documento;

            if (unUsuario.Habilitado)
                this.checkBox_Habilitado.CheckState = CheckState.Checked;
            else
                this.checkBox_Habilitado.CheckState = CheckState.Unchecked;

            this.ComboBox_FecNac.Value = unUsuario.Fecha_Nacimiento;

            string query_str = "SELECT * FROM ENER_LAND.Rol_Usuario WHERE idUsuario = " + unUsuario.idUsuario.ToString();
            DbResultSet rs;

            rs = DbManager.GetDataTable(query_str);
            if (rs.operationState == 1)
            {
                MessageBox.Show("ERROR al cargar roles para este usuario");
                ((GestionUsuarios)FormPadre).Load_Menu();
                this.Dispose();
                return;
            }

            TablaRolUsuario = rs.dataTable;

            foreach (DataRow Row in TablaRolUsuario.Rows)
            {
                int idRol = Convert.ToInt32(Row["idRol"]);
                DataRow[] Rows = TablaRoles.Select("idRol = '" + idRol.ToString() + "'");
                if (Rows.Length > 0)
                {
                    String Rol_Description = Rows[0]["Descripcion"].ToString().Trim();
                    int index = checkedListBox_Roles.Items.IndexOf(Rol_Description);
                    checkedListBox_Roles.SetItemChecked(index, true);
                }
                    
            }

            query_str = "SELECT * FROM ENER_LAND.Usuario_Hoteles WHERE idUsuario = " + unUsuario.idUsuario.ToString();

            rs = DbManager.GetDataTable(query_str);
            if (rs.operationState == 1)
            {
                MessageBox.Show("ERROR al cargar hoteles para este usuario");
                ((GestionUsuarios)FormPadre).Load_Menu();
                this.Dispose();
                return;
            }

            TablaHotelUsuario = rs.dataTable;

            foreach (DataRow Row in TablaHotelUsuario.Rows)
            {
                int idHotel = Convert.ToInt32(Row["idHotel"]);
                DataRow[] Rows = TablaHoteles.Select("idHotel = '" + idHotel.ToString() + "'");
                String Hotel_Description = Rows[0]["Nombre"].ToString().Trim();
                int index = checkedListBox_Hotel.Items.IndexOf(Hotel_Description);
                checkedListBox_Hotel.SetItemChecked(index, true);
            }

            cambiar_contraseña = false;
        }
        private Usuario CargarDatosUsuario(int fila)
        {
            Usuario unUsuario = new Usuario();

            unUsuario.Apellido = TablaUsuarios.Rows[fila]["Apellido"].ToString();
            unUsuario.Calle = TablaUsuarios.Rows[fila]["Calle"].ToString();

            if (!TablaUsuarios.Rows[fila]["Departamento"].ToString().Equals(""))
                unUsuario.Departamento = Convert.ToChar(TablaUsuarios.Rows[fila]["Departamento"].ToString());
            
            if(!TablaUsuarios.Rows[fila]["Fecha_Nacimiento"].ToString().Equals(""))
                unUsuario.Fecha_Nacimiento = Convert.ToDateTime(TablaUsuarios.Rows[fila]["Fecha_Nacimiento"].ToString());
            
            if (TablaUsuarios.Rows[fila]["Habilitado"].ToString().Trim().Equals("1"))
            {
                unUsuario.Habilitado = true;
            }
            else
            {
                unUsuario.Habilitado = false;
            }

            if (TablaUsuarios.Rows[fila]["idLocalidad"].ToString().Equals(""))
            {
                unUsuario.idLocalidad = -1;
            }
            else
            {
                unUsuario.idLocalidad = Convert.ToInt32(TablaUsuarios.Rows[fila]["idLocalidad"].ToString());
            }

            if (TablaUsuarios.Rows[fila]["idPais"].ToString().Equals(""))
            {
                unUsuario.idPais = -1;
            }
            else
            {
                unUsuario.idPais = Convert.ToInt32(TablaUsuarios.Rows[fila]["idPais"].ToString());
            }

            unUsuario.idUsuario = Convert.ToInt32(TablaUsuarios.Rows[fila]["idUsuario"].ToString());
            unUsuario.Mail = TablaUsuarios.Rows[fila]["Mail"].ToString();
            unUsuario.Nombre = TablaUsuarios.Rows[fila]["Nombre"].ToString();

            if(!TablaUsuarios.Rows[fila]["Nro_Documento"].ToString().Equals(""))
                unUsuario.Nro_Documento = Convert.ToInt32(TablaUsuarios.Rows[fila]["Nro_Documento"].ToString());

            if(!TablaUsuarios.Rows[fila]["Numero"].ToString().Equals(""))
                unUsuario.Numero = Convert.ToInt32(TablaUsuarios.Rows[fila]["Numero"].ToString());
            
            if (!TablaUsuarios.Rows[fila]["Piso"].ToString().Equals(""))
                unUsuario.Piso = Convert.ToInt32(TablaUsuarios.Rows[fila]["Piso"].ToString());

            if (TablaUsuarios.Rows[fila]["Telefono"].ToString().Equals(""))
            {
                unUsuario.Telefono = -1;
            }
            else
            {
                unUsuario.Telefono = Convert.ToInt32(TablaUsuarios.Rows[fila]["Telefono"].ToString());
            }

            unUsuario.Tipo_Documento = TablaUsuarios.Rows[fila]["Tipo_Documento"].ToString();

            unUsuario.username = TablaUsuarios.Rows[fila]["username"].ToString();

            unUsuario.password = TablaUsuarios.Rows[fila]["contraseña"].ToString();
            return unUsuario;
        }
        private void button_Save_Click(object sender, EventArgs e)
        {
            if (!CheckFields())
                return;            
            
            Usuario unUsuario = new Usuario();
            
            unUsuario.Apellido = textBox_Apellido.Text.Trim();
            unUsuario.Calle = textBox_Calle.Text.Trim();
            
            if (!textBox_Departamento.Text.Trim().Equals(""))
                unUsuario.Departamento = Convert.ToChar(textBox_Departamento.Text.Trim());

            unUsuario.Fecha_Nacimiento = this.ComboBox_FecNac.Value;
            
            if (this.checkBox_Habilitado.CheckState == CheckState.Checked)
                unUsuario.Habilitado = true;
            else
                unUsuario.Habilitado = false;

            if (!this.ComboBox_Localidad.Text.Equals("Otro"))
            {
                DataRow[] Rows = TablaLocalidades.Select("Nombre = '" + this.ComboBox_Localidad.Text.ToString().Trim() + "'");
                unUsuario.idLocalidad = Convert.ToInt32(Rows[0][0].ToString().Trim());
            }

            if (!this.ComboBox_PaisOrigen.Text.Equals("Otro"))
            {
                DataRow[] Rows = TablaPaises.Select("Nombre = '" + this.ComboBox_PaisOrigen.Text.ToString().Trim() + "'");
                unUsuario.idPais = Convert.ToInt32(Rows[0][0].ToString().Trim());
            }

            unUsuario.Mail = this.textBox_mail.Text.Trim();

            unUsuario.Nombre = textBox_Name.Text.Trim();
            unUsuario.Nro_Documento = Convert.ToInt32(textBox_DNI.Text.Trim());
            unUsuario.Numero = Convert.ToInt32(textBox_Numero.Text.Trim());
            if (cambiar_contraseña)
                unUsuario.password = Login.LoginForm.encriptar(textBox_Contraseña.Text.Trim());
            else
                unUsuario.password = Usuario_A_Modificar.password;
            
            if (!this.textBox_Piso.Text.Trim().Equals(""))
                if (this.textBox_Piso.Text.Trim().Equals("PB"))
                    unUsuario.Piso = 0;
                else
                    unUsuario.Piso = Convert.ToInt32(this.textBox_Piso.Text.Trim());

            unUsuario.Telefono = Convert.ToInt32(this.textBox_Telefono.Text.Trim());
            unUsuario.Tipo_Documento = this.ComboBox_TipoDoc.Text.Trim();

            unUsuario.username = textBox_Usuario.Text.Trim();

            DbResultSet rs;
            string query_str;
            int idRol;

            if (!flag_Modificacion)
            {
                int idUsuario = DbManager.Agregar_Usuario(unUsuario);
                unUsuario.idUsuario = idUsuario;
            }
            else
            {
                unUsuario.idUsuario = Usuario_A_Modificar.idUsuario;
                DbManager.Modificar_Huesped(unUsuario);

                query_str = "DELETE FROM ENER_LAND.Rol_Usuario  " +
                            "WHERE idUsuario = " + unUsuario.idUsuario.ToString();

                rs = DbManager.dbSqlStatementExec(query_str);

                if (rs.operationState == 1)
                {
                    MessageBox.Show("No se pudo Modificar el Rol para este Usuario. Posible fallo en la Base de Datos");
                    return;
                }

                query_str = "DELETE FROM ENER_LAND.Usuario_Hoteles  " +
                            "WHERE idUsuario = " + unUsuario.idUsuario.ToString();

                rs = DbManager.dbSqlStatementExec(query_str);

                if (rs.operationState == 1)
                {
                    MessageBox.Show("No se pudo Modificar el Hotel para este Usuario. Posible fallo en la Base de Datos");
                    return;
                }

            }

            // Carga de Roles
            foreach (var Rol in this.checkedListBox_Roles.CheckedItems)
            {
                
                DataRow[] Rows = TablaRoles.Select("Descripcion = '" + Rol.ToString().Trim() + "'");
                
                if (Rows.Length > 0)
                {
                    idRol = Convert.ToInt32(Rows[0][0].ToString().Trim());
                    query_str = "INSERT INTO ENER_LAND.Rol_Usuario ([idUsuario],[idRol]) " +
                                "VALUES( " + unUsuario.idUsuario.ToString() + ", " + idRol.ToString() + ")";


                    rs = DbManager.dbSqlStatementExec(query_str);
                    if (rs.operationState == 1)
                    {
                        MessageBox.Show("No se pudo ingresar el Rol para este Usuario. Posible fallo en la Base de Datos");
                        return;
                    }
                }
            }

            // Carga de Hoteles
            int idHotel;
            foreach (var Hotel in this.checkedListBox_Hotel.CheckedItems)
            {

                DataRow[] Rows = TablaHoteles.Select("Nombre = '" + Hotel.ToString().Trim() + "'");

                if (Rows.Length > 0)
                {
                    idHotel = Convert.ToInt32(Rows[0]["idHotel"].ToString().Trim());
                    query_str = "INSERT INTO ENER_LAND.Usuario_Hoteles ([idUsuario],[idHotel]) " +
                                "VALUES( " + unUsuario.idUsuario.ToString() + ", " + idHotel.ToString() + ")";


                    rs = DbManager.dbSqlStatementExec(query_str);
                    if (rs.operationState == 1)
                    {
                        MessageBox.Show("No se pudo ingresar el Hotel para este Usuario. Posible fallo en la Base de Datos");
                        return;
                    }
                }
            }

            ((GestionUsuarios)FormPadre).Load_Menu();

        }