Пример #1
0
        //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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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");
            }
        }
Пример #7
0
        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");
            }
        }
Пример #8
0
 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");
     }
 }
Пример #9
0
        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);
                }
            }
        }
Пример #10
0
        //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);
            }
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
                }
            }
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
 private void btnDesasignar_Click(object sender, EventArgs e)
 {
     BE.Patente patente = lboxPatAsig.SelectedItem as BE.Patente;
     _listaAsignados.Remove(patente);
     ActualizarlistAsignados(_listaAsignados);
 }