Beispiel #1
0
        /// <summary>
        /// Inserts the role permissions.
        /// </summary>
        /// <param name="roleId">The role identifier.</param>
        /// <param name="modules">The modules.</param>
        public void InsertRolePermissions(short roleId, List <byte> modules)
        {
            Logger.Current.Informational("Request for inserting Role-Permissions for a Role with ID :" + roleId);
            var db           = ObjectContextFactory.Create();
            var roleModuleDb = db.RoleModules.Where(r => r.RoleID == roleId).ToList();

            if (modules != null)
            {
                foreach (var module in modules)
                {
                    if (!(roleModuleDb.Exists(f => f.ModuleID == module)))
                    {
                        RoleModulesMapDb roleModuleMap = new RoleModulesMapDb();
                        roleModuleMap.RoleID   = (short)roleId;
                        roleModuleMap.ModuleID = module;
                        db.RoleModules.Add(roleModuleMap);
                        db.SaveChanges();
                    }
                }
                var deletedModules = roleModuleDb.Where(a => a.ModuleID != 0 && !modules.Contains(a.ModuleID)).ToList();
                foreach (var RoleModulesMapDb in deletedModules)
                {
                    db.RoleModules.Remove(RoleModulesMapDb);
                    db.SaveChanges();
                }
            }
        }
        /// <summary>
        /// Adds the role permissions.
        /// </summary>
        /// <param name="accountId">The account identifier.</param>
        /// <param name="newmoduleIds">The newmodule ids.</param>
        /// <param name="db">The database.</param>
        void addRolePermissions(int accountId, List <byte> newmoduleIds, CRMDb db)
        {
            var crmdb       = ObjectContextFactory.Create();
            var roleModules = crmdb.RoleModules.ToList();
            var adminRoleId = db.Roles.Where(r => r.AccountID == accountId)
                              .Join(db.RoleModules.Where(r => r.ModuleID == (byte)AppModules.AccountSettings), r => r.RoleID, rm => rm.RoleID, (o, i) => o)
                              .Select(s => s.RoleID).FirstOrDefault();

            newmoduleIds.ForEach(m =>
            {
                if (!(roleModules.Exists(rm => rm.ModuleID == m && rm.RoleID == adminRoleId)))
                {
                    RoleModulesMapDb roleModuleMap = new RoleModulesMapDb();
                    roleModuleMap.ModuleID         = m;
                    roleModuleMap.RoleID           = adminRoleId;
                    db.RoleModules.Add(roleModuleMap);
                }
            });
        }