/// <summary> /// 获取用户加群情况 /// </summary> /// <param name="joinType">加群类型</param> /// <returns>该类型下所加群的列表</returns> public List <Dictionary <string, object> > RequestUserJoinedGroup(UserGroupType joinType) { try { var body = string.Format("bkn={0}", BKN); var result = makeRequest(ApiType.RequestUserGroup.Value, body); switch (joinType) { case UserGroupType.Join: return(PostResponse(result, "join")); case UserGroupType.Manage: return(PostResponse(result, "manage")); default: return(null); } } catch { return(null); } }
private JsonResult GetUserGroups([DataSourceRequest] DataSourceRequest request, string ownerLevel, string ownerId, UserGroupType userGroupType) { var oLevel = ownerLevel.ToEnum <OwnerLevel>(); var accessLevels = new AccessLevel[] { AccessLevel.Contributor, AccessLevel.FullAccess }; var userQuery = _userGroupManager.GetUserGroupsAssignedToUserWithAccessLevelQuery(ownerId, accessLevels, userGroupType); var ownerQuery = _userGroupManager.GetUserGroupsOfOwnerAndTypeQuery(oLevel, ownerId, userGroupType); var userResults = userQuery.ToDataSourceResult(request); var ownerResults = ownerQuery.ToDataSourceResult(request); // note that the ToDataSourceResult function has issues with IQuereiables resulting from a Union function. var list = new List <UserGroup>(); list.AddRange(userResults.Data.Cast <UserGroup>()); foreach (UserGroup item in ownerResults.Data) { if (!list.Where(x => x.Id == item.Id).Any()) { list.Add(item); } } var result = list.ToDataSourceResult(request); return(Json(result)); }
private IEnumerable <UserGroup> GetUserGroupsOfUserContributor(DataSourceRequest request, UserGroupType userGroupType, UserContext userContext, OwnerLevel viewLevel) { var siteContext = _siteContextAccessor.GetContext(); var accessLevels = new AccessLevel[] { AccessLevel.Contributor, AccessLevel.FullAccess }; var list = new List <UserGroup>(); // Get the client and site groups that the user has a membership to. var userQuery = _userGroupManager.GetUserGroupsAssignedToUserWithAccessLevelQuery(userContext.UserId, accessLevels, userGroupType); var userResults = userQuery.ToDataSourceResult(request); list.AddRange(userResults.Data.Cast <UserGroup>()); // Get the groups that have been created by this user var ownerQuery = _userGroupManager.GetUserGroupsOfOwnerAndTypeQuery(OwnerLevel.User, userContext.UserId, userGroupType); var ownerResults = ownerQuery.ToDataSourceResult(request); list.AddRange(ownerResults.Data.Cast <UserGroup>()); var corpId = new CorpGlobalClaimValueResolver().Resolve(); if (viewLevel.Equals(OwnerLevel.Client)) { // Get the client groups if the user has that claim if (userContext.SecurityClaims.Find(ClientClaimTypes.AppNotificationsSend, siteContext.Client.Id) || userContext.SecurityClaims.Find(ClientClaimTypes.AppNotificationsSend, corpId) || userContext.SecurityClaims.Find(ClientClaimTypes.PrimaryAdmin, siteContext.Client.Id) || userContext.SecurityClaims.Find(ClientClaimTypes.PrimaryAdmin, corpId) || userContext.SecurityClaims.Find(CorpClaimTypes.CorpPrimaryAdmin, corpId)) { var clientQuery = _userGroupManager.GetUserGroupsOfOwnerAndTypeQuery(OwnerLevel.Client, siteContext.Client.Id, userGroupType); var clientResults = clientQuery.ToDataSourceResult(request); list.AddRange(clientResults.Data.Cast <UserGroup>()); } } if (viewLevel.Equals(OwnerLevel.Site)) { // Get the site groups if the user has that claim if (userContext.SecurityClaims.Find(SiteClaimTypes.SiteNotificationsSend, siteContext.Client.Id) || userContext.SecurityClaims.Find(SiteClaimTypes.SiteNotificationsSend, siteContext.SiteId) || userContext.SecurityClaims.Find(SiteClaimTypes.SiteNotificationsSend, corpId) || userContext.SecurityClaims.Find(SiteClaimTypes.SitePrimaryAdmin, siteContext.Client.Id) || userContext.SecurityClaims.Find(SiteClaimTypes.SitePrimaryAdmin, siteContext.SiteId) || userContext.SecurityClaims.Find(SiteClaimTypes.SitePrimaryAdmin, corpId) || userContext.SecurityClaims.Find(CorpClaimTypes.CorpPrimaryAdmin, corpId)) { var siteQuery = _userGroupManager.GetUserGroupsOfOwnerAndTypeQuery(OwnerLevel.Site, siteContext.SiteId, userGroupType); var siteResults = siteQuery.ToDataSourceResult(request); list.AddRange(siteResults.Data.Cast <UserGroup>()); } } var list2 = list.GroupBy(x => x.Id).Select(x => x.First()); return(list2.OrderBy(x => x.Name).ToList()); }
public IHttpActionResult GetUserGroup(UserGroupType userGroupType) { return(Ok(SetUpService.GetUserGroup(userGroupType))); }
public IQueryable <UserGroup> GetUserGroupsAssignedToUserWithAccessLevelQuery(string userId, AccessLevel[] accessLevels, UserGroupType userGroupType) { var memberships = _connectDb.UserGroupMemberships.AsNoTracking() .Where(x => x.UserId == userId) .Where(x => accessLevels.Contains(x.AccessLevel)); var assignedGroups = _connectDb.UserGroups.AsNoTracking() .Where(x => x.UserGroupType == userGroupType) .Join(memberships, g => g.Id, m => m.UserGroupId, (ug, gm) => ug ); return(assignedGroups); }
public IQueryable <UserGroup> GetUserGroupsOfOwnerAndTypeQuery(string ownerId, UserGroupType userGroupType) { var query = _connectDb.UserGroups.Where(x => (x.OwnerId == ownerId) && (x.UserGroupType == userGroupType)); return(query); }
public async Task <List <UserGroupMembership> > GetPublicUserGroupsForUserAndSiteAsync(string userId, string siteId, UserGroupType userGroupType) { var memberships = await _connectDb.UserGroupMemberships.AsNoTracking() .Where(m => m.UserId == userId) .Join(_connectDb.UserGroups.AsNoTracking() .Where(g => (g.OwnerId == siteId) && (g.OwnerLevel == OwnerLevel.Site) && (g.UserGroupType == userGroupType)), m => m.UserGroupId, g => g.Id, (m, g) => new UserGroupMembership() { UserGroupId = m.UserGroupId, UserId = m.UserId, AllowEmailMessaging = m.AllowEmailMessaging, AllowSmsMessaging = m.AllowSmsMessaging, UserGroup = new UserGroup() { Id = g.Id, Name = g.Name, AllowPublicEnrollment = g.AllowPublicEnrollment, UserGroupType = g.UserGroupType } }).ToListAsync(); var allGroups = await _connectDb.UserGroups.AsNoTracking() .Where(g => (g.OwnerId == siteId) && (g.OwnerLevel == OwnerLevel.Site) && (g.AllowPublicEnrollment == true) && (g.UserGroupType == userGroupType)) .OrderBy(g => g.Name) .ToListAsync(); // Add public groups that the user is not currently assigned to. foreach (var group in allGroups) { var curMembership = memberships.Where(m => m.UserGroupId == group.Id).FirstOrDefault(); if (curMembership == null) { memberships.Add(new UserGroupMembership() { UserId = null, // null will indicate that this user does not belong to this group. UserGroupId = group.Id, AllowEmailMessaging = false, AllowSmsMessaging = false, UserGroup = group }); } } return(memberships); }
public async Task <List <UserGroup> > GetPublicUserGroupsForSiteAsync(string siteId, UserGroupType userGroupType) { var site = await _siteManager.GetByIdAsync(siteId); var siteGroups = await _connectDb.UserGroups.AsNoTracking() .Where(g => (g.OwnerId == siteId) && (g.OwnerLevel == OwnerLevel.Site) && (g.AllowPublicEnrollment == true) && (g.UserGroupType == userGroupType)) .ToListAsync(); var clientGroups = await _connectDb.UserGroups.AsNoTracking() .Where(g => (g.OwnerId == site.ClientId) && (g.OwnerLevel == OwnerLevel.Client) && (g.AllowPublicEnrollment == true) && (g.UserGroupType == userGroupType)) .ToListAsync(); var publicGroups = new List <UserGroup>(); publicGroups.AddRange(siteGroups); publicGroups.AddRange(clientGroups); return(publicGroups.OrderBy(g => g.Name).ToList()); }
public async Task <IHttpActionResult> UserGroupGet(UserGroupType id) { return(Ok(await WebApiService.Instance.GetAsync <UserGroupParentViewModel>($"setup/usergroup/get?usergrouptype={id}"))); }