/// <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); } }); }