Пример #1
0
        public List <BE.Usuario> GetUsuariosFamilia(BE.Familia familia)
        {
            List <BE.Usuario> listaUsuarios = new List <BE.Usuario>();

            string sql = $@"SELECT u.* FROM usuario u 
                           INNER JOIN patenteusuario pu ON pu.id_usuario=u.id
                           WHERE id_patente = {familia.id};";

            var reader = _acceso.GetReader(sql);

            while (reader.Read())
            {
                BE.Usuario usuario = new BE.Usuario();
                usuario.id         = int.Parse(reader["id"].ToString());
                usuario.usuario    = reader["usuario"].ToString();
                usuario.contrasena = reader["contrasena"].ToString();
                usuario.contador   = int.Parse(reader["contador"].ToString());
                usuario.estado     = int.Parse(reader["estado"].ToString());
                usuario.email      = reader["email"].ToString();
                usuario.dvh        = long.Parse(reader["dvh"].ToString());
                listaUsuarios.Add(usuario);
            }
            _acceso.CloseReader(reader);

            return(listaUsuarios);
        }
Пример #2
0
 public ModificarFamilia(BE.Familia f)
 {
     familia         = f;
     _permisoBll     = new BLL.Permiso();
     _listaAsignados = f.Hijos.ToList();
     InitializeComponent();
 }
Пример #3
0
        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");
            }
        }
Пример #4
0
        public void GuardarFamilia(BE.Familia f)
        {
            _permisosDAL.InsertarFamilia(f);
            Bitacora _bitacoraBll    = new Bitacora();
            var      usuarioRegistra = Services.SessionManager.GetInstance.Usuario;

            _bitacoraBll.RegistrarBitacora(usuarioRegistra, $@"Se creo la familia = {f.nombre}", 1);
        }
Пример #5
0
 public void ListarFamiliaPatentes(BE.Familia familia)
 {
     familia.VaciarHijos();
     foreach (var item in GetAll("=" + familia.id))
     {
         familia.AgregarHijo(item);
     }
 }
Пример #6
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);
        }
Пример #7
0
        private BE.Familia MapDataReaderFam(SqlDataReader dataReader)
        {
            BE.Familia familia = new BE.Familia();
            familia.id          = dataReader.GetInt32(0);
            familia.descripcion = dataReader.GetString(1);
            familia.activo      = dataReader.GetBoolean(2);

            return(familia);
        }
Пример #8
0
        public bool FamiliaEnUso(BE.Familia familia)
        {
            Empleado _empleadoBll   = new Empleado();
            var      listaEmpleados = _empleadoBll.ListarEmpleados();
            bool     enUso          = false;

            if (familia.Hijos.Count() != 0)
            {
                foreach (BE.Permiso patente in familia.Hijos)
                {
                    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);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                enUso = true;
            }
            return(enUso);
        }
Пример #9
0
 private void btn_habilitar_Click(object sender, EventArgs e)
 {
     if (dgv_familias.SelectedRows.Count == 1)
     {
         BE.Familia famAhabilitar = new BE.Familia();
         famAhabilitar.id = Convert.ToInt32(dgv_familias.CurrentRow.Cells[0].Value);
         familia_BLL.Habilitar(famAhabilitar);
         this.ActualizarGrilla();
         MessageBox.Show("Se habilitó el registro seleccionado");
         bitacora_BAJA.RegistrarEnBitacora(this.usuario_logueado, DateTime.Now, "Se habilitó una Familia");
     }
     else
     {
         MessageBox.Show("Se debe seleccionar un registro a inhabilitar");
     }
 }
Пример #10
0
        private void btnDesasignar_Click(object sender, EventArgs e)
        {
            BE.Familia familia = lboxFamAsignadas.SelectedItem as BE.Familia;
            _permisoBll.FillFamilyComponents(familia);
            bool enUso = _permisoBll.FamiliaEnUso(familia);

            if (enUso)
            {
                _listaAsignados.Remove(familia);
                ActualizarlistAsignados(_listaAsignados);
            }
            else
            {
                MessageBox.Show("No se puede desasignar la familia ya que hay permisos que no estarian asignados");
            }
        }
Пример #11
0
        public List <BE.Familia> GetFamilias(int idUsuario)
        {
            string query = "SELECT Familia.id_familia, Familia.descripcion, Familia.activo FROM FamiliaUsuario INNER JOIN Familia ON FamiliaUsuario.id_familia = Familia.id_familia WHERE id_usuario = " + idUsuario + "";

            using (SqlDataReader dataReader = helper.ExecuteReader(query))
            {
                List <BE.Familia> familia_list = new List <BE.Familia>();
                while (dataReader.Read())
                {
                    BE.Familia familiaUsuario = MapDataReaderFam(dataReader);
                    familia_list.Add(familiaUsuario);
                }

                return(familia_list);
            }
        }
Пример #12
0
        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);
        }
Пример #13
0
        private void btnEliminarFamilia_Click(object sender, EventArgs e)
        {
            int indice        = (int)grillaFamilias.CurrentRow.Cells[0].Value;
            var listaFamilias = _permisoBLL.GetAllFamilias();

            BE.Familia familia = listaFamilias.Where(i => i.id == indice).FirstOrDefault();
            _permisoBLL.FillFamilyComponents(familia);
            try
            {
                _permisoBLL.EliminarFamilia(familia);
                MessageBox.Show("Familia eliminada correctamente");
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }

            CargarFamilias();
        }
Пример #14
0
        private void btnAsignar_Click(object sender, EventArgs e)
        {
            BE.Familia familia  = lboxFamDisponibles.SelectedItem as BE.Familia;
            int        repetido = 0;

            foreach (BE.Familia fam in _listaAsignados)
            {
                if (fam.id.Equals(familia.id))
                {
                    repetido = 1;
                }
            }
            if (repetido == 0)
            {
                _listaAsignados.Add(familia);
            }

            ActualizarlistAsignados(_listaAsignados);
        }
Пример #15
0
        public void InsertarFamilia(BE.Familia familia)
        {
            try
            {
                var sql = string.Format(@"delete from compuesto where id_familia={0};", familia.id);
                _acceso.ExecuteNonQuery(sql);

                foreach (var item in familia.Hijos)
                {
                    sql = string.Format(@"insert into compuesto (id_familia,id_patente) values ({0},{1})", familia.id, item.id);

                    _acceso.ExecuteNonQuery(sql);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #16
0
        public IList <BE.Familia> GetAllFamilias()
        {
            string    sql = @"select * from patente p where p.es_familia = 1;";
            DataTable tb  = _acceso.ExecuteReader(sql);

            var lista = new List <BE.Familia>();

            foreach (DataRow row in tb.Rows)
            {
                BE.Familia c = new BE.Familia();

                c.id        = int.Parse(row["id"].ToString());;
                c.nombre    = row["nombre"].ToString();
                c.esFamilia = bool.Parse(row["es_familia"].ToString()) ? 1 : 0;
                c.dvh       = long.Parse(row["dvh"].ToString());
                lista.Add(c);
            }

            return(lista);
        }
Пример #17
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);
                }
            }
        }
Пример #18
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            string nombreFamilia = txtNombre.Text;

            BE.Familia familia = new BE.Familia();
            familia.nombre = nombreFamilia;
            foreach (BE.Patente patente in _listaAsignados)
            {
                familia.AgregarHijo(patente);
            }
            long dvh = BLL.DigitoVerificador.CalcularDV(familia, "Patente");

            familia.dvh       = dvh;
            familia.esFamilia = 1;
            _permisoBll.GuardarPermiso(familia);
            _permisoBll.GuardarFamilia(familia);
            var opcion = MessageBox.Show("Familia creada con exito");

            if (opcion == DialogResult.OK)
            {
                CerrarVentana();
            }
        }
Пример #19
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);
        }
Пример #20
0
        public void EliminarFamilia(BE.Familia familia)
        {
            string sql = $@"DELETE FROM patente where id = {familia.id}";

            _acceso.ExecuteNonQuery(sql);
        }
Пример #21
0
 public void FillFamilyComponents(BE.Familia f)
 {
     _permisosDAL.ListarFamiliaPatentes(f);
 }
Пример #22
0
        public void EliminarFamilia(BE.Familia familia)
        {
            var                  listaFamilias      = GetAllFamilias();
            var                  listaPatentes      = GetAllPatentes();
            Empleado             _empleadoBll       = new Empleado();
            var                  listaEmpleados     = _empleadoBll.ListarEmpleados();
            HashSet <BE.Permiso> permisosUtilizados = new HashSet <BE.Permiso>();

            DAL.Usuario _usuarioDal = new DAL.Usuario();
            //List<BE.Usuario> listaUsuarios = _usuarioDal.GetUsuariosFamilia(familia);

            foreach (BE.Permiso p in listaPatentes)
            {/*
              * foreach (BE.Permiso fam in listaFamilias)
              * {
              *     if(familia.id != fam.id)
              *     {
              *         foreach(BE.Permiso pFam in fam.Hijos)
              *         {
              *             if(p.id == pFam.id)
              *             {
              *                 permisosUtilizados.Add(p);
              *             }
              *         }
              *     }
              * }*/
                foreach (BE.Empleado emp in listaEmpleados)
                {
                    foreach (BE.Permiso pEmp in emp.usuario.Permisos)
                    {
                        if (pEmp.Hijos.Count == 0)
                        {
                            if (p.id == pEmp.id)
                            {
                                permisosUtilizados.Add(p);
                            }
                        }
                        else
                        {
                            if (pEmp.id != familia.id)
                            {
                                foreach (BE.Permiso phijo in pEmp.Hijos)
                                {
                                    if (p.id == phijo.id)
                                    {
                                        permisosUtilizados.Add(p);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            /*if (listaUsuarios.Count > 0)
             * {
             *  throw new Exception("La familia tiene usuarios asignados, por favor desasigne la familia del o los usuarios y vuelva a intentar");
             * }*/

            if (listaPatentes.Count() == permisosUtilizados.Count())
            {
                familia.VaciarHijos();
                GuardarFamilia(familia);
                _permisosDAL.EliminarFamilia(familia);
            }
            else
            {
                throw new Exception("No se puede borrar la familia porque hay permisos que quedarian sin utilizar");
            }
        }