public static async Task <ESGR_PermisoPerfil> Process(Type Formulario, string titleMensaje, string mensaje) { var result = await Task.Run(() => { var ListPrivileges = new List <ESGR_PermisoPerfil>(); try { string nameFormulario = Formulario.Name; ListPrivileges = new BSGR_PermisoPerfil().GetCollectionPermisoPerfil(SGRVariables.ESGR_Usuario.ESGR_Perfil.IdPerfil).ToList(); SGRVariables.ESGR_Usuario.ListESGR_PermisoPerfil = ListPrivileges; //Obtenemos prefijo var ArrayPrefijo = nameFormulario.Split("_".ToArray()); var prefijo = (ArrayPrefijo.Count() > 0) ? ArrayPrefijo[0] : string.Empty; prefijo = prefijo.Substring(prefijo.Length - 3, 3); var vrObjEPermisoPerfil = SGRVariables.ESGR_Usuario.ListESGR_PermisoPerfil.Where(x => x.ESGR_Formulario.ESGR_Modulo.Prefijo == prefijo && x.ESGR_Formulario.NombreFormulario == nameFormulario && x.Consulta).FirstOrDefault(); if (vrObjEPermisoPerfil == null) { bool StatusShowMessage = true; CmpMessageBox.Show(titleMensaje, mensaje, CmpButton.Aceptar, () => { StatusShowMessage = false; }); while (StatusShowMessage) { } } return(vrObjEPermisoPerfil); } catch (Exception) { throw; } }); return(result); }
private async void LoadPermisoPerfil() { var vrListFormulario = new List <ESGR_Formulario>(); var vrListEPermisoPerfil = new List <ESGR_PermisoPerfil>(); await Task.Factory.StartNew( () => { try { vrListFormulario = new BSGR_Formulario().ListGetAllFormulario(); if (ESGR_Perfil != null) { vrListEPermisoPerfil = new BSGR_PermisoPerfil().GetCollectionPermisoPerfil(ESGR_Perfil.IdPerfil).ToList(); ///Realizamos equivalencia foreach (var yy in vrListFormulario) { foreach (var ss in vrListEPermisoPerfil) { if (yy.CodFormulario == ss.ESGR_Formulario.CodFormulario) { yy.Consulta = ss.Consulta; yy.Nuevo = ss.Nuevo; yy.Editar = ss.Editar; yy.Eliminar = ss.Eliminar; } } } ///Obtenemos solo los nombres de los módulos var vrGetNombreModulo = vrListFormulario.Select(d => new { d.ESGR_Modulo.NombreModulo, d.ESGR_Modulo.IdModulo }) .Distinct() .OrderByDescending(d => d.NombreModulo).ToList(); Application.Current.Dispatcher.Invoke(() => { CollectionVMSGR_Modulo.Clear(); }); ///Recorremos la lista de los nombres de Módulo foreach (var tt in vrGetNombreModulo) { ///Listamos solo los formularios cuyo nombre sea igual al nombre del Módulo var vrItemsFomulario = vrListFormulario.Where(x => x.ESGR_Modulo.NombreModulo == tt.NombreModulo).ToList(); Application.Current.Dispatcher.Invoke(() => { CollectionVMSGR_Modulo.Add(new VMSGR_Modulo() { HeaderModulo = tt.NombreModulo, CollectionESGR_FormularioAll = new ObservableCollection <ESGR_Formulario>(vrItemsFomulario), IdModulo = tt.IdModulo }); }); } } } catch (Exception ex) { CmpMessageBox.Show(SGRMessage.TitleMessage, ex.Message, CmpButton.Aceptar); } }); }