Пример #1
0
        /// <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);
                }
            }
        }