public void AddUsersToRoles(string[] usernames, string[] roleNames)
 {
     lock (MDB)
     {
         try
         {
             foreach (var u in usernames)
             {
                 var user = MDB.UserProfiles.Single(x => x.UserName == u);
                 foreach (var r in roleNames)
                 {
                     var role = MDB.webpages_Roles.Single(x => x.RoleName == r);
                     var pp   = new DB.webpages_UsersInRole()
                     {
                         UserProfile   = user,
                         webpages_Role = role
                     };
                     MDB.webpages_UsersInRoles.InsertOnSubmit(pp);
                 }
             }
             MDB.SubmitChanges();
         }
         catch (Exception ex)
         {
             HandleMyException(ex);
         }
     }
 }
        public void AddRoleToUser(IHasUserId user, RoleContract[] roles, int modifiedByUserId)
        {
            try
            {
                lock (MDB)
                {
                    var profile = MDB.UserProfiles.FirstOrDefault(p => p.UserId == user.UserId);
                    if (profile == null)
                    {
                        throw new Xxception("User was not found by id")
                              {
                                  Tag = new XDocument(new XElement("UserId", user.UserId))
                              }
                    }
                    ;
                    foreach (var newRole in roles)
                    {
                        if (!profile.webpages_UsersInRoles.Any(r => r.RoleId == newRole.Role.RoleId || r.webpages_Role.RoleName == newRole.Role.RoleName))
                        {
                            var dbRole = MDB.webpages_Roles.FirstOrDefault(r => r.RoleId == newRole.Role.RoleId || r.RoleName == newRole.Role.RoleName);
                            if (dbRole == null)
                            {
                                dbRole = new DB.webpages_Role()
                                {
                                    RoleId = newRole.Role.RoleId, RoleName = newRole.Role.RoleName
                                };
                                MDB.webpages_Roles.InsertOnSubmit(dbRole);
                            }

                            var dbUserInRole = new DB.webpages_UsersInRole()
                            {
                                RoleId = newRole.Role.RoleId, webpages_Role = dbRole
                            };
                            profile.webpages_UsersInRoles.Add(dbUserInRole);

                            MDB.webpages_UsersInRolesAudits.InsertOnSubmit(new DB.webpages_UsersInRolesAudit()
                            {
                                Action           = Convert.ToByte(AddRemoveOptions.Add),
                                ModificationTime = DateTime.UtcNow,
                                ModifiedBy       = modifiedByUserId,
                                RoleId           = newRole.Role.RoleId,
                                UserId           = user.UserId
                            });
                        }
                    }
                    MDB.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                HandleMyException(ex);
            }
        }
 public void InsertWebpagesUsersInRole(WebpagesUsersInRolesContract[] d)
 {
     lock (MDB)
     {
         try
         {
             foreach (var x in d)
             {
                 var pp = new DB.webpages_UsersInRole();
                 x.WebpagesUsersInRoles.CopyTo(pp);
                 MDB.webpages_UsersInRoles.InsertOnSubmit(pp);
             }
             MDB.SubmitChanges();
         }
         catch (Exception ex)
         {
             HandleMyException(ex);
         }
     }
 }