private void cargarGrillaPatentes(int id_familia) { dgv_patentesAsociadasAfamilia.DataSource = null; dgv_patentesDisponibles.DataSource = null; //CARGAR: patentes asociadas this.familiaPatentesDB = famPat_BLL.GetPatentesFamilia(id_familia); foreach (BE.Patente patente in familiaPatentesDB) { dgv_patentesAsociadasAfamilia.Rows.Add(patente.id, UTILITIES.Encriptador.Desencriptar(patente.descripcion), patente.activo); } //CARGAR: patentes disponibles List <BE.Patente> patentesUI = new List <BE.Patente>(); List <BE.Patente> patentesDB = pat_BLL.SelectAll(); foreach (BE.Patente patDB in patentesDB) { //(!) Validar si la patente ya no fue agregada if (!patentesUI.Any(f => f.id == patDB.id)) { //(!) Validar que la patente a agregar no la tenga el usuario if (!familiaPatentesDB.Any(f => f.id == patDB.id)) { patentesUI.Add(patDB); } } } foreach (BE.Patente patente in patentesUI) { dgv_patentesDisponibles.Rows.Add(patente.id, UTILITIES.Encriptador.Desencriptar(patente.descripcion), patente.activo); } }
private void btn_baja_Click(object sender, EventArgs e) { if (dgv_familias.SelectedRows.Count == 1) { int id_familia = Convert.ToInt32(dgv_familias.CurrentRow.Cells[0].Value); List <BE.Patente> patentes_familia = famPat_BLL.GetPatentesFamilia(id_familia); if (BLL.Services.VerificarUsoPatente(0, patentes_familia, id_familia) != 0) { BE.Familia famAinhabilitar = new BE.Familia(); famAinhabilitar.id = Convert.ToInt32(dgv_familias.CurrentRow.Cells[0].Value); familia_BLL.Delete(famAinhabilitar); this.ActualizarGrilla(); MessageBox.Show("Se inhabilitó el registro seleccionado"); bitacora_BAJA.RegistrarEnBitacora(this.usuario_logueado, DateTime.Now, "Se inhabilitó una Familia"); } else { MessageBox.Show("La operación no se puede realizar ya que viola la regla de verificación de uso de patente"); } } else { MessageBox.Show("Se debe seleccionar un registro a inhabilitar"); } }
private bool validarUsoPatentesFamSeleccionadas() { /* * VALIDAR REGLA DE USO DE PATENTES * Solo para las familias que el usuario ya tenía asignadas en la DB y fueron seleccionadas */ bool validacionUsoPatente = false; //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 List <BE.Patente> patentesAvalidar = new List <BE.Patente>(); 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); } } } //3) Validacion de la regla de uso de las patentes if (BLL.Services.VerificarUsoPatente((int)usuario_seleccionado.Cells[0].Value, patentesAvalidar, 0) != 0) { validacionUsoPatente = true; } return(validacionUsoPatente); }
public static void FijarPermisos(List <BE.UsuarioPatente> usuPatentes, List <BE.Patente> patentes, List <BE.Familia> familias) { //LISTA DEFINITVA: patentes de familias (1) + patentes individuales (2) //CONDICION: activas -Patente & Familia- (a nivel general) & no negadas -Patente- (a nivel usuario) //PASO 1: Patente-familia BLL.FamiliaPatente famPat_BLL = new BLL.FamiliaPatente(); foreach (BE.Familia familia in familias) { if (familia.activo) { foreach (BE.Patente patente in famPat_BLL.GetPatentesFamilia(familia.id)) { if (!BE.ConfigUsuario.permisos.Any(p => p.id == patente.id)) { if (patente.activo) { BE.ConfigUsuario.permisos.Add(patente); } } } } } //PASO 2: Patente-individual BE.ConfigUsuario.usuPatentes = usuPatentes; BLL.UsuarioPatente usuPat_BLL = new BLL.UsuarioPatente(); foreach (BE.Patente patente in patentes) { //QUITAR: Si la patente ya se agregó por la familia pero esta negada individualmente if (BE.ConfigUsuario.permisos.Any(p => p.id == patente.id)) { if (BLL.ConfigUsuario.estaNegada(patente.id)) { BE.ConfigUsuario.permisos.RemoveAll(p => p.id == patente.id); } } //AGREGAR: Si la patente individual no se agregó por la familia, no está negada y está activa else { if (patente.activo) { if (!BLL.ConfigUsuario.estaNegada(patente.id)) { BE.ConfigUsuario.permisos.Add(patente); } } } } }