//NOTA: retornar una lista sin repetir de las patentes del usuario (individuales + familia) public List <BE.Patente> GetPatentesUsuario(int id_usuario) { string query = @"declare @idUsuario Int = " + id_usuario + @" select distinct up.id_patente, p.descripcion, p.activo from usuario u INNER JOIN UsuarioPatente up on u.id_usuario = up.id_usuario INNER JOIN Patente p on up.id_patente = p.id_patente where u.id_usuario = @idUsuario UNION select distinct p.id_patente, p. descripcion, p.activo from usuario u INNER JOIN FamiliaUsuario fu on u.id_usuario = fu.id_usuario INNER JOIN Familia f on fu.id_familia = f.id_familia INNER JOIN FamiliaPatente fp on fu.id_familia = fp.id_familia INNER JOIN Patente p on fp.id_patente = p.id_patente where u.id_usuario = @idUsuario"; using (SqlDataReader dataReader = helper.ExecuteReader(query)) { List <BE.Patente> patente_list = new List <BE.Patente>(); while (dataReader.Read()) { BE.Patente usuarioPatentes = MapDataReaderPat(dataReader); patente_list.Add(usuarioPatentes); } return(patente_list); } }
private bool validarUsoPatentesSeleccionadas() { /* * VALIDAR REGLA DE USO DE PATENTES * Solo para las patentes que la familia ya tenía asignadas en la DB y fueron seleccionadas */ bool validacionUsoPatente = false; List <BE.Patente> patSeleccionadasAvalidar = new List <BE.Patente>(); foreach (DataGridViewRow fila in dgv_patentesAsociadasAfamilia.SelectedRows) { if (this.familiaPatentesDB.Any(pu => pu.id == (int)fila.Cells[0].Value)) { BE.Patente patSeleccionada = (BE.Patente) this.familiaPatentesDB.Where(pu => pu.id == (int)fila.Cells[0].Value).FirstOrDefault(); patSeleccionadasAvalidar.Add(patSeleccionada); } } if (BLL.Services.VerificarUsoPatente(0, patSeleccionadasAvalidar, (int)familia_seleccionada.Cells[0].Value) != 0) { validacionUsoPatente = true; } return(validacionUsoPatente); }
private BE.Patente MapDataReaderPat(SqlDataReader dataReader) { BE.Patente patente = new BE.Patente(); patente.id = dataReader.GetInt32(0); patente.descripcion = dataReader.GetString(1); patente.activo = dataReader.GetBoolean(2); return(patente); }
private bool verificarRepeticionUsuarioPatente() { /* * VERIFICACION REGLA DE USO DE PATENTES * Validación extra para confirmar si el usuario tiene asignada x patente individualmente y por familia */ bool validacionRepeticion = false; List <BE.Patente> patentesAvalidar = new List <BE.Patente>(); //CONDICION: validación de repetición al desasociar patentes foreach (DataGridViewRow fila in dgv_patentesAsociadas.SelectedRows) { if (this.patentesUsuarioDB.Any(pu => pu.id == (int)fila.Cells[0].Value)) { BE.Patente patSeleccionada = (BE.Patente) this.patentesUsuarioDB.Where(pu => pu.id == (int)fila.Cells[0].Value).FirstOrDefault(); patentesAvalidar.Add(patSeleccionada); } } //CONDICION: validación de repetición al desasociar familia/s //1) Familias seleccionadas a validar List <BE.Familia> famSeleccionadasAValidar = new List <BE.Familia>(); foreach (DataGridViewRow fila in dgv_familiasAsociadas.SelectedRows) { if (this.familiasUsuarioDB.Any(fu => fu.id == (int)fila.Cells[0].Value)) { BE.Familia famSeleccionada = (BE.Familia) this.familiasUsuarioDB.Where(fu => fu.id == (int)fila.Cells[0].Value).FirstOrDefault(); if (famSeleccionada.activo) { famSeleccionadasAValidar.Add(famSeleccionada); } } } //2) Patentes de las familias a validar foreach (BE.Familia fam in famSeleccionadasAValidar) { foreach (BE.Patente pat in famPat_BLL.GetPatentesFamilia(fam.id)) { if (!patentesAvalidar.Any(p => p.id == pat.id)) { patentesAvalidar.Add(pat); } } } //VALIDACION DE REPETICIÓN if (BLL.Services.VerificarAsignacionRepetida((int)usuario_seleccionado.Cells[0].Value, patentesAvalidar)) { validacionRepeticion = true; } return(validacionRepeticion); }
public bool PatenteEnUso(BE.Patente patente, BE.Empleado empleado) { Empleado _empleadoBll = new Empleado(); var listaEmpleados = _empleadoBll.ListarEmpleados(); var listaFamilias = GetAllFamilias(); bool enUso = false; foreach (BE.Empleado emp in listaEmpleados) { if (emp.estado == 1 && emp.usuario.id != empleado.usuario.id) { foreach (BE.Permiso p in emp.usuario.Permisos) { if (p.Hijos.Count == 0) { if (patente.id == p.id) { enUso = true; return(enUso); } } else { foreach (BE.Permiso pFam in p.Hijos) { if (patente.id == pFam.id) { enUso = true; return(enUso); } } } } } } foreach (BE.Familia familia in listaFamilias) { FillFamilyComponents(familia); foreach (BE.Permiso pFam in familia.Hijos) { if (patente.id == pFam.id) { enUso = true; return(enUso); } } } return(enUso); }
private void btnDesasignar_Click(object sender, EventArgs e) { BE.Patente patente = lboxPatAsignadas.SelectedItem as BE.Patente; bool enUso = _permisoBll.PatenteEnUso(patente, _empleado); if (enUso) { _listaAsignados.Remove(patente); ActualizarlistAsignados(_listaAsignados); } else { MessageBox.Show("No se puede desasignar el permiso, quedaria sin uso y eso no es posible"); } }
private void btnDesasignar_Click(object sender, EventArgs e) { BE.Patente patente = lboxPatAsig.SelectedItem as BE.Patente; bool enUso = _permisoBll.PatenteEnUso(patente, familia); if (enUso) { _listaAsignados.Remove(patente); ActualizarlistAsignados(_listaAsignados); } else { MessageBox.Show("No se puede remover el permiso, ya que no esta siendo utilizado por ninguna familia de permisos o usuario"); } }
private void btn_habilitar_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count == 1) { BE.Patente patAhabilitar = new BE.Patente(); patAhabilitar.id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value); pat_BLL.Habilitar(patAhabilitar); this.ActualizarGrilla(); MessageBox.Show("Se habilitó el registro seleccionado"); bitacora_BAJA.RegistrarEnBitacora(this.usuario_logueado, DateTime.Now, "Se habilitó una Patente"); } else { MessageBox.Show("Se debe seleccionar un registro a habilitar"); } }
public List <BE.Patente> GetPatentesFamilia(int id_familia) { string query = "SELECT Patente.id_patente, Patente.descripcion, Patente.activo FROM FamiliaPatente INNER JOIN Patente ON FamiliaPatente.id_patente = Patente.id_patente WHERE id_familia =" + id_familia + ""; { using (SqlDataReader dataReader = helper.ExecuteReader(query)) { List <BE.Patente> patente_list = new List <BE.Patente>(); while (dataReader.Read()) { BE.Patente usuarioPatentes = MapDataReaderPat(dataReader); patente_list.Add(usuarioPatentes); } return(patente_list); } } }
//NOTA: retornar una lista sin repetir de las patentes del usuario (sólo las individuales) public List <BE.Patente> GetPatentesIndividuales(int id_usuario) { string query = "SELECT Patente.id_patente, Patente.descripcion, Patente.activo FROM UsuarioPatente INNER JOIN Patente ON UsuarioPatente.id_patente = Patente.id_patente WHERE id_usuario =" + id_usuario + ""; //string query = $"SELECT Patente.id_patente, Patente.descripcion, Patente.activo FROM UsuarioPatente INNER JOIN Patente ON UsuarioPatente.id_patente = Patente.id_patente WHERE id_usuario = {id_usuario}"; using (SqlDataReader dataReader = helper.ExecuteReader(query)) { List <BE.Patente> patente_list = new List <BE.Patente>(); while (dataReader.Read()) { BE.Patente usuarioPatentes = MapDataReaderPat(dataReader); patente_list.Add(usuarioPatentes); } return(patente_list); } }
private void btnAsignar_Click(object sender, EventArgs e) { BE.Patente patente = lboxPatDisponibles.SelectedItem as BE.Patente; int repetido = 0; foreach (BE.Patente pat in _listaAsignados) { if (pat.id.Equals(patente.id)) { repetido = 1; } } if (repetido == 0) { _listaAsignados.Add(patente); } ActualizarlistAsignados(_listaAsignados); }
public IList <BE.Patente> GetAllPatentes() { string sql = "select * from patente p where p.es_familia = 0;"; DataTable tb = _acceso.ExecuteReader(sql); var lista = new List <BE.Patente>(); foreach (DataRow row in tb.Rows) { BE.Patente c = new BE.Patente(); c.id = int.Parse(row["id"].ToString()); c.nombre = row["nombre"].ToString(); c.esFamilia = bool.Parse(row["es_familia"].ToString()) ? 1 : 0; lista.Add(c); } return(lista); }
public void LlenarUsuarioPermisos(BE.Usuario u) { string sql = string.Format(@"select p.* from PatenteUsuario up inner join patente p on up.id_patente=p.id where up.id_usuario={0};", u.id); DataTable tb = _acceso.ExecuteReader(sql); u.Permisos.Clear(); foreach (DataRow row in tb.Rows) { int idpat = int.Parse(row["id"].ToString()); string nombrepat = row["nombre"].ToString(); int esFamiliaPat = bool.Parse(row["es_familia"].ToString()) ? 1 : 0; BE.Permiso permiso; if (esFamiliaPat != 1) { permiso = new BE.Patente(); permiso.id = idpat; permiso.nombre = nombrepat; permiso.esFamilia = esFamiliaPat; u.Permisos.Add(permiso); } else { permiso = new BE.Familia(); permiso.id = idpat; permiso.nombre = nombrepat; permiso.esFamilia = esFamiliaPat; var familia = GetAll("=" + idpat); foreach (var p in familia) { permiso.AgregarHijo(p); } u.Permisos.Add(permiso); } } }
public bool PatenteEnUso(BE.Patente patente, BE.Familia familia) { Empleado _empleadoBll = new Empleado(); var listaEmpleados = _empleadoBll.ListarEmpleados(); bool enUso = false; foreach (BE.Empleado emp in listaEmpleados) { if (emp.estado == 1) { foreach (BE.Permiso p in emp.usuario.Permisos) { if (p.Hijos.Count == 0) { if (patente.id == p.id) { enUso = true; return(enUso); } } else { if (p.id != familia.id) { foreach (BE.Permiso pFam in p.Hijos) { if (patente.id == pFam.id) { enUso = true; return(enUso); } } } } } } } return(enUso); }
public IList <BE.Permiso> GetAll(string familia) { string condicion = "is NULL"; if (!String.IsNullOrEmpty(familia)) { condicion = familia; } string sql = $@"select com2.id_familia,p.id,p.nombre, p.es_familia from compuesto com2 inner join patente p on com2.id_patente = p.id where com2.id_familia {condicion};"; var reader = _acceso.GetReader(sql); var lista = new List <BE.Permiso>(); while (reader.Read()) { int id_padre = 0; if (reader["id_familia"] != DBNull.Value) { id_padre = int.Parse(reader["id_familia"].ToString()); } int id = int.Parse(reader["id"].ToString()); string nombre = reader["nombre"].ToString(); int esFamilia = bool.Parse(reader["es_familia"].ToString()) ? 1 : 0; BE.Permiso p; if (esFamilia == 1)//usamos este campo para identificar. Solo las patentes van a tener un permiso del sistema relacionado { p = new BE.Familia(); } else { p = new BE.Patente(); } p.id = id; p.nombre = nombre; /*if (!string.IsNullOrEmpty(permiso)) * c.Permiso = (TipoPermiso)Enum.Parse(typeof(TipoPermiso), permiso);*/ p.esFamilia = esFamilia; var padre = GetPermiso(id_padre, lista); if (padre == null) { lista.Add(p); } else { padre.AgregarHijo(p); } } _acceso.CloseReader(reader); return(lista); }
private void btnDesasignar_Click(object sender, EventArgs e) { BE.Patente patente = lboxPatAsig.SelectedItem as BE.Patente; _listaAsignados.Remove(patente); ActualizarlistAsignados(_listaAsignados); }