/// <summary> /// Obtiene un StackPanel que para mostrar las /// pantallas pertenencientes al Catalogo /// </summary> /// <param name="indexFormularios"></param> /// <param name="descripcion"></param> /// <param name="acceso"></param> /// <returns></returns> private StackPanel ObtenerPanelItem(int indexFormularios, string descripcion, AccesoInfo acceso) { var chkLectura = new CheckBox { HorizontalAlignment = HorizontalAlignment.Stretch }; var chkEscritura = new CheckBox { HorizontalAlignment = HorizontalAlignment.Stretch }; var bindLectura = new Binding("AccesoId") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Source = acceso, Converter = new LecturaValueConverter(), ConverterParameter = 0 }; chkLectura.SetBinding(CheckBox.IsCheckedProperty, bindLectura); var bindEscritura = new Binding("AccesoId") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Source = acceso, Converter = new EscrituraValueConverter(), ConverterParameter = 0 }; chkEscritura.SetBinding(CheckBox.IsCheckedProperty, bindEscritura); Brush colorItem; if (indexFormularios % 2 == 0) { colorItem = new SolidColorBrush(Colors.LavenderBlush); } else { colorItem = new SolidColorBrush(Colors.White); } var grdDetalles = new Grid(); grdDetalles.SetValue(Grid.BackgroundProperty, colorItem); var columnaDescripcion = new ColumnDefinition { Width = new GridLength(300) }; var columnaLectura = new ColumnDefinition { Width = new GridLength(150) }; var columnaEscritura = new ColumnDefinition { Width = new GridLength(150) }; grdDetalles.ColumnDefinitions.Add(columnaDescripcion); grdDetalles.ColumnDefinitions.Add(columnaLectura); grdDetalles.ColumnDefinitions.Add(columnaEscritura); var row = new RowDefinition { Height = new GridLength(20) }; grdDetalles.RowDefinitions.Add(row); var lbl = new Label { Content = descripcion, }; Grid.SetColumn(lbl, 0); Grid.SetRow(lbl, 0); Grid.SetColumn(chkLectura, 1); Grid.SetRow(chkLectura, 0); Grid.SetColumn(chkEscritura, 2); Grid.SetRow(chkEscritura, 0); grdDetalles.Children.Add(lbl); grdDetalles.Children.Add(chkLectura); grdDetalles.Children.Add(chkEscritura); var stack = new StackPanel { HorizontalAlignment = HorizontalAlignment.Center, Width = 540, }; stack.Children.Add(grdDetalles); return(stack); }
/// <summary> /// Obtiene una entidad de GrupoFormulario por su GrupoID /// </summary> /// <param name="ds"></param> /// <returns></returns> internal static GrupoFormularioInfo ObtenerPorGrupoID(DataSet ds) { try { Logger.Info(); DataTable dtGrupo = ds.Tables[ConstantesDAL.DtGrupo]; DataTable dtFormulario = ds.Tables[ConstantesDAL.DtFormulario]; GrupoFormularioInfo resultado = (from grupo in dtGrupo.AsEnumerable() select new GrupoFormularioInfo { Grupo = new GrupoInfo { GrupoID = grupo.Field <int>("GrupoID"), Descripcion = grupo.Field <string>("Grupo"), Activo = grupo.Field <bool>("Activo").BoolAEnum(), }, }).FirstOrDefault(); if (resultado == null) { resultado = new GrupoFormularioInfo(); } resultado.ListaFormulario = (from pantallas in dtFormulario.AsEnumerable() select new FormularioInfo { FormularioID = pantallas.Field <int>("FormularioID"), Descripcion = pantallas.Field <string>("Formulario"), Modulo = new ModuloInfo { ModuloID = pantallas.Field <int>( "ModuloID"), Descripcion = pantallas.Field <string>("Modulo"), }, }).ToList(); List <FormularioInfo> accesos = (from acceso in ds.Tables[ConstantesDAL.DtAcceso].AsEnumerable() select new FormularioInfo { FormularioID = acceso.Field <int>("FormularioID"), Acceso = new AccesoInfo { AccesoId = acceso.Field <int>("AccesoID") }, }).ToList(); resultado.ListaFormulario.ForEach(formulario => { AccesoInfo accesoInfo = accesos.Where( ac => ac.FormularioID == formulario.FormularioID).Select( ac => ac.Acceso).FirstOrDefault(); if (accesoInfo == null) { accesoInfo = new AccesoInfo(); } formulario.Acceso = accesoInfo; }); return(resultado); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }