private void chkListProfile_ItemCheck(object sender, ItemCheckEventArgs e) { try { treeProfile.Nodes.Clear(); this.Entity.Description = txtDescription.Text; if (e.NewValue == CheckState.Checked) { //Agrega a la lista de elegidos, los permisos seleccionados del listado de permisos disponibles ProfileBM selection = (ProfileBM)((CheckedListBox)sender).SelectedItem; ProfileBM result = GetPermissionHierarchy(selection); this.Entity.AddPermission(result); } else { //Elimina del listado de permisos a agregar, aquel que coincida con el código ProfileBM selection = (ProfileBM)((CheckedListBox)sender).SelectedItem; this.Entity.DeletePermission(selection.code); } PopulateTree(treeProfile, this.Entity); treeProfile.ExpandAll(); } catch (Exception exception) { MessageBox.Show("Se ha producido el siguiente error: " + exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
private void treeProfile_AfterCheck(object sender, TreeViewEventArgs e) { //Cuando el check es true, implica que no se quiere excluir ProfileBM profile = e.Node.Tag as ProfileBM; profile.excluded = !e.Node.Checked; }
private void PopulateTree(TreeView component, ProfileBM element, TreeNode fatherNode = null) { if (fatherNode == null) { //Si no posee padre, significa que es root fatherNode = new TreeNode(element.Description); //se utiliza el tag para almacenar el permiso fatherNode.Tag = element; component.Nodes.Add(fatherNode); fatherNode.Checked = true; } if (element.IsFather()) { foreach (ProfileBM permission in element.GetChildren()) { //Creo un nodo y lo vinculo con su padre TreeNode childNode = new TreeNode(permission.Description); fatherNode.Nodes.Add(childNode); //se utiliza el tag para almacenar el permiso childNode.Tag = permission; childNode.Checked = !permission.excluded; PopulateTree(component, permission, childNode); } } }
/// <summary> /// Crea un perfil en base al modelo recibido, considerando únicamente los hijos del primer nivel. /// </summary> /// <param name="profile"></param> /// <returns></returns> public ResultBM CreateProfile(ProfileBM profile) { try { log.AddLogInfo("Creando perfil", "Creando perfil.", this); ProfileDAL profileDal = new ProfileDAL(); ResultBM isValidResult = IsValid(profile); if (!isValidResult.IsValid()) { return(isValidResult); } //Se agrega el root PermissionDTO root = new PermissionDTO(profile.fatherCode, profile.code, profile.Description); profileDal.SaveProfile(root); CreateRelation(profile); log.AddLogInfo("Creando perfil", "El perfil se ha creado exitosamente.", this); return(new ResultBM(ResultBM.Type.OK, "Perfil creado: " + profile.Description)); } catch (Exception exception) { log.AddLogCritical("Recuperando perfil", exception.Message, this); return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("SAVING_ERROR") + " " + exception.Message, exception)); } }
/// <summary> /// Devuelve la jerarquía de permisos para el elemento seleccionado /// </summary> /// <param name="sender"></param> /// <returns></returns> private ProfileBM GetPermissionHierarchy(ProfileBM selection) { ProfileBLL profileBll = new ProfileBLL(); ResultBM result = profileBll.GetProfile(selection.code); if (!result.IsValid()) { MessageBox.Show(result.description, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } return(result.GetValue() as ProfileBM); }
private ResultBM IsValid(ProfileBM profile) { if (profile.Description.Length == 0) { return(new ResultBM(ResultBM.Type.INCOMPLETE_FIELDS, SessionHelper.GetTranslation("EMPTY_FIELD_ERROR") + " (PROFILE NAME)")); } if (profile.GetChildren().Count == 0) { return(new ResultBM(ResultBM.Type.INCOMPLETE_FIELDS, SessionHelper.GetTranslation("NO_PERMISSION_ASSIGNED_ERROR"))); } return(new ResultBM(ResultBM.Type.OK)); }
/// <summary> /// Inicia la sesión, lo que implica almacenar los datos del usuario y su configuración (idioma y permisos). /// </summary> /// <param name="user"></param> /// <returns></returns> public static SessionHelper StartSession(UserBM userMdl, ProfileBM profileMdl, LanguageBM languageBm) { if (instance == null) { instance = new SessionHelper(); instance.userMdl = userMdl; instance.profileMdl = profileMdl; instance.languageBm = languageBm; instance.suscriptorsToTranslate = new Dictionary <object, string>(); ConvertIntoList(languageBm); } //No sé si se necesita porque no opero actualmente con la sesion return(instance); }
private void chkListProfile_SelectedIndexChanged(object sender, EventArgs e) { //Muestra la composición jerárquica del permiso seleccionado try { //Se le asigna el valor el entity para tenerlo disponible al momento de guardado ProfileBM selection = (ProfileBM)((CheckedListBox)sender).SelectedItem; ProfileBM result = GetPermissionHierarchy(selection); treeDescription.Nodes.Clear(); PopulateTree(treeDescription, result); treeDescription.ExpandAll(); } catch (Exception exception) { MessageBox.Show("Se ha producido el siguiente error: " + exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// <summary> /// Inserta las relaciones en la base de datos /// </summary> /// <param name="relations"></param> private void CreateRelation(ProfileBM root) { List <PermissionDTO> permissions = new List <PermissionDTO>(); ProfileDAL profileDal = new ProfileDAL(); List <ProfileBM> toAnalyse = null; List <PermissionDTO> toExclude = new List <PermissionDTO>(); List <ProfileBM> relations = root.GetChildren(); log.AddLogDebug("Creando relaciones", "Creando relaciones para el perfil " + root.Description + ".", this); //Cada elemento de primer nivel, representan los roots de las distintas jerarquías de los permisos //La relación con los hijos es por exclusion, es decir, se mostrarán todos a menos que se encuentren en la tabla de exclusiones foreach (ProfileBM permission in relations) { //Creo la relación con el padre inmediato permissions.Add(new PermissionDTO(permission.fatherCode, permission.code, permission.Description)); } log.AddLogDebug("Creando relaciones", "Agregando relaciones Perfil - Permisos.", this); profileDal.SaveProfileRelation(permissions); foreach (ProfileBM permission in relations) { toAnalyse = permission.GetAlldescendants(); //Agrego al padre en la lista que debe ser analizada para la exclusión toAnalyse.Add(permission); foreach (ProfileBM item in toAnalyse) { if (item.excluded) { toExclude.Add(new PermissionDTO(item.fatherCode, item.code, item.Description)); } } if (toExclude.Count > 0) { log.AddLogDebug("Creando relaciones", "Agregando relaciones Perfil - Exclusiones.", this); profileDal.SaveProfileExclusionRelation(root.Code, toExclude); } } }
public ResultBM UpdateProfile(ProfileBM profile) { try { log.AddLogInfo("Actualizando perfil", "Creando perfil.", this); ProfileDAL profileDal = new ProfileDAL(); ResultBM isValidResult = IsValid(profile); if (!isValidResult.IsValid()) { return(isValidResult); } profileDal.DeleteRelation(profile.code); CreateRelation(profile); log.AddLogInfo("Actualizando perfil", "El perfil se ha actualizado exitosamente.", this); return(new ResultBM(ResultBM.Type.OK, "Perfil actualizado.")); } catch (Exception exception) { log.AddLogCritical("Recuperando perfil", exception.Message, this); return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("UPDATING_ERROR") + " " + exception.Message, exception)); } }