private void txtBuscar_TextChanged(object sender, EventArgs e)
        {
            if (txtBuscar.Text == "")
            {
                cargarGrilla();
                return;
            }

            if (cmbTipoUsuario.SelectedItem == null)
            {
                return;
            }

            string busqueda = txtBuscar.Text.ToUpper();

            switch ((TipoUsuario)cmbTipoUsuario.SelectedItem)
            {
            case TipoUsuario.Estudiante:
            {
                List <UsuarioAlumno> lista = UsuariosAlumnos.FindAll(x => x.Usuario.Deshabilitado == false || chbDeshabilitados.Checked);
                lista = lista.FindAll(x => x.Alumno.Id.ToString().Contains(busqueda) ||
                                      x.Alumno.ToString().ToUpper().Contains(busqueda) ||
                                      x.Usuario.Nombre.ToUpper().Contains(busqueda) ||
                                      x.Usuario.Contraseña.ToUpper().Contains(busqueda));

                dgvGrilla.DataSource = lista;
                dgvGrilla.Columns[dgvGrilla.Columns.Count - 1].Visible = chbDeshabilitados.Checked;
            } break;

            case TipoUsuario.Docente:
            {
                List <UsuarioProfesor> lista = UsuariosProfesores.FindAll(x => x.Usuario.Deshabilitado == false || chbDeshabilitados.Checked);
                lista = lista.FindAll(x => x.Profesor.Id.ToString().Contains(busqueda) ||
                                      x.Profesor.ToString().ToUpper().Contains(busqueda) ||
                                      x.Usuario.Nombre.ToUpper().Contains(busqueda) ||
                                      x.Usuario.Contraseña.ToUpper().Contains(busqueda));

                dgvGrilla.DataSource = lista;
                dgvGrilla.Columns[dgvGrilla.Columns.Count - 1].Visible = chbDeshabilitados.Checked;
            } break;

            case TipoUsuario.Administrador:
            {
                List <Usuario> lista = Usuarios.FindAll(x => x.TipoUsuario == TipoUsuario.Administrador && (x.Deshabilitado == false || chbDeshabilitados.Checked));
                lista = lista.FindAll(x => x.Nombre.ToUpper().Contains(busqueda) ||
                                      x.Contraseña.ToUpper().Contains(busqueda));

                dgvGrilla.DataSource = lista;
                dgvGrilla.Columns["Deshabilitado"].Visible = chbDeshabilitados.Checked;
            } break;
            }
        }
        private void cargarGrilla()
        {
            if (cmbTipoUsuario.SelectedItem == null)
            {
                return;
            }

            UsuarioService s = new UsuarioService();

            try
            {
                TipoUsuario tipo = (TipoUsuario)cmbTipoUsuario.SelectedItem;

                Usuarios           = s.GetAll();
                UsuariosAlumnos    = s.GetAllAlumnos();
                UsuariosProfesores = s.GetAllProfesores();

                dgvGrilla.Columns.Clear();
                dgvGrilla.DataSource          = null;
                dgvGrilla.AutoGenerateColumns = false;

                switch (tipo)
                {
                case TipoUsuario.Estudiante:
                {
                    dgvGrilla.DataSource = UsuariosAlumnos.FindAll(x => x.Alumno.Deshabilitado == false && (x.Usuario.Deshabilitado == false || chbDeshabilitados.Checked))
                                           .OrderBy(x => x.Alumno.Id).ToList();

                    DataGridViewTextBoxColumn dgvc;

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Alumno.Id"; dgvc.HeaderText = "Legajo";
                    dgvGrilla.Columns.Add(dgvc);

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Alumno"; dgvc.HeaderText = "Alumno";
                    dgvGrilla.Columns.Add(dgvc);

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Usuario.Nombre"; dgvc.HeaderText = "Nombre de usuario";
                    dgvGrilla.Columns.Add(dgvc);

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Usuario.Contraseña"; dgvc.HeaderText = "Contraseña";
                    dgvGrilla.Columns.Add(dgvc);

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Usuario.TipoUsuario"; dgvc.HeaderText = "Tipo de usuario";
                    dgvGrilla.Columns.Add(dgvc);

                    var checkBoxColumn = new DataGridViewCheckBoxColumn();
                    checkBoxColumn.DataPropertyName = "Usuario.Deshabilitado"; checkBoxColumn.HeaderText = "Deshabilitado";
                    checkBoxColumn.Visible          = chbDeshabilitados.Checked;
                    dgvGrilla.Columns.Add(checkBoxColumn);
                } break;

                case TipoUsuario.Docente:
                {
                    dgvGrilla.DataSource = UsuariosProfesores.FindAll(x => x.Profesor.Deshabilitado == false && (x.Usuario.Deshabilitado == false || chbDeshabilitados.Checked))
                                           .OrderBy(x => x.Profesor.Id).ToList();

                    DataGridViewTextBoxColumn dgvc;

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Profesor.Id"; dgvc.HeaderText = "Legajo";
                    dgvGrilla.Columns.Add(dgvc);

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Profesor"; dgvc.HeaderText = "Profesor";
                    dgvGrilla.Columns.Add(dgvc);

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Usuario.Nombre"; dgvc.HeaderText = "Nombre de usuario";
                    dgvGrilla.Columns.Add(dgvc);

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Usuario.Contraseña"; dgvc.HeaderText = "Contraseña";
                    dgvGrilla.Columns.Add(dgvc);

                    dgvc = new DataGridViewTextBoxColumn();
                    dgvc.DataPropertyName = "Usuario.TipoUsuario"; dgvc.HeaderText = "Tipo de usuario";
                    dgvGrilla.Columns.Add(dgvc);

                    var checkBoxColumn = new DataGridViewCheckBoxColumn();
                    checkBoxColumn.DataPropertyName = "Usuario.Deshabilitado"; checkBoxColumn.HeaderText = "Deshabilitado";
                    checkBoxColumn.Visible          = chbDeshabilitados.Checked;
                    dgvGrilla.Columns.Add(checkBoxColumn);
                } break;

                case TipoUsuario.Administrador:
                {
                    dgvGrilla.AutoGenerateColumns               = true;
                    dgvGrilla.DataSource                        = Usuarios.FindAll(x => x.TipoUsuario == tipo && (x.Deshabilitado == false || chbDeshabilitados.Checked));
                    dgvGrilla.Columns["Id"].Visible             = false;
                    dgvGrilla.Columns["Nombre"].HeaderText      = "Nombre de usuario";
                    dgvGrilla.Columns["TipoUsuario"].HeaderText = "Tipo de usuario";
                    dgvGrilla.Columns["Deshabilitado"].Visible  = chbDeshabilitados.Checked;
                } break;
                }
            }
            catch (Exception ex)
            {
                CommonHelper.ShowError(ex.Message);
            }
        }