public object BuildGroupUserList(string groupId, UsersQueryInput usersQueryInput) { Check.RequireNotNullOrWhitespace(groupId, "groupId"); Check.RequireNotNull(usersQueryInput, "usersQueryInput"); return(ExecuteQuery(usersQueryInput, new[] { groupId })); }
public ActionResult Members(string id, UsersQueryInput queryInput) { string projectId = VerbosifyId <Project>(id); if (!_permissionManager.DoesExist <Project>(projectId)) { return(HttpNotFound()); } queryInput.PageSize = 15; if (string.IsNullOrWhiteSpace(queryInput.Sort) || (queryInput.Sort.ToLower() != "a-z" && queryInput.Sort.ToLower() != "z-a")) { queryInput.Sort = "a-z"; } var projectResult = _documentSession .Query <All_Groups.Result, All_Groups>() .AsProjection <All_Groups.Result>() .Where(x => x.GroupId == projectId) .First(); dynamic viewModel = new ExpandoObject(); viewModel.Project = _projectViewModelQuery.BuildProject(projectId); viewModel.Users = _userViewModelQuery.BuildGroupUserList(projectId, queryInput); viewModel.Query = new { Id = projectId, queryInput.Page, queryInput.PageSize, queryInput.Sort, queryInput.Query, queryInput.Field }; viewModel.ShowMembers = true; viewModel.IsMember = _userContext.IsUserAuthenticated() ? _userContext.HasGroupPermission <Project>(PermissionNames.CreateObservation, projectId) : false; viewModel.UserCountDescription = "Member" + (projectResult.UserCount == 1 ? string.Empty : "s"); viewModel.SightingCountDescription = "Sighting" + (projectResult.SightingCount == 1 ? string.Empty : "s"); viewModel.PostCountDescription = "Post" + (projectResult.PostCount == 1 ? string.Empty : "s"); return(RestfulResult( viewModel, "projects", "members")); }
public ActionResult List(UsersQueryInput queryInput) { queryInput.PageSize = 15; if (string.IsNullOrWhiteSpace(queryInput.Sort) || (queryInput.Sort.ToLower() != "a-z" && queryInput.Sort.ToLower() != "z-a")) { queryInput.Sort = "a-z"; } queryInput.Query = queryInput.Query ?? string.Empty; queryInput.Field = queryInput.Field ?? string.Empty; dynamic viewModel = new ExpandoObject(); viewModel.Users = _userViewModelQuery.BuildUserList(queryInput); viewModel.Query = new { queryInput.Page, queryInput.PageSize, queryInput.Sort, queryInput.Query, queryInput.Field }; viewModel.FieldSelectList = new[] { new { Text = "Name", Value = "name", Selected = queryInput.Field.ToLower() == "name" }, new { Text = "Description", Value = "description", Selected = queryInput.Field.ToLower() == "description" } }; return(RestfulResult( viewModel, "users", "list")); }
public ActionResult Members(string id, UsersQueryInput queryInput) { string organisationId = VerbosifyId<Organisation>(id); if (!_permissionManager.DoesExist<Organisation>(organisationId)) { return HttpNotFound(); } queryInput.PageSize = 15; if (string.IsNullOrWhiteSpace(queryInput.Sort) || (queryInput.Sort.ToLower() != "a-z" && queryInput.Sort.ToLower() != "z-a")) { queryInput.Sort = "a-z"; } var organisationResult = _documentSession .Query<All_Groups.Result, All_Groups>() .AsProjection<All_Groups.Result>() .First(x => x.GroupId == organisationId); dynamic viewModel = new ExpandoObject(); viewModel.Organisation = _organisationViewModelQuery.BuildOrganisation(organisationId); viewModel.Users = _userViewModelQuery.BuildGroupUserList(organisationId, queryInput); viewModel.Query = new { Id = organisationId, queryInput.Page, queryInput.PageSize, queryInput.Sort, queryInput.Query, queryInput.Field }; viewModel.ShowMembers = true; viewModel.IsMember = _userContext.IsUserAuthenticated() ? _userContext.HasGroupPermission<Organisation>(PermissionNames.CreateObservation, organisationId) : false; viewModel.UserCountDescription = "Member" + (organisationResult.UserCount == 1 ? string.Empty : "s"); viewModel.PostCountDescription = "Post" + (organisationResult.PostCount == 1 ? string.Empty : "s"); return RestfulResult( viewModel, "organisations", "members"); }
public ActionResult List(UsersQueryInput queryInput) { queryInput.PageSize = 15; if (string.IsNullOrWhiteSpace(queryInput.Sort) || (queryInput.Sort.ToLower() != "a-z" && queryInput.Sort.ToLower() != "z-a")) { queryInput.Sort = "a-z"; } queryInput.Query = queryInput.Query ?? string.Empty; queryInput.Field = queryInput.Field ?? string.Empty; dynamic viewModel = new ExpandoObject(); viewModel.Users = _userViewModelQuery.BuildUserList(queryInput); viewModel.Query = new { queryInput.Page, queryInput.PageSize, queryInput.Sort, queryInput.Query, queryInput.Field }; viewModel.FieldSelectList = new[] { new { Text = "Name", Value = "name", Selected = queryInput.Field.ToLower() == "name" }, new { Text = "Description", Value = "description", Selected = queryInput.Field.ToLower() == "description" } }; return RestfulResult( viewModel, "users", "list"); }
private object ExecuteQuery(UsersQueryInput usersQueryInput, IEnumerable<string> groupIds) { RavenQueryStatistics stats; User authenticatedUser = null; if (_userContext.IsUserAuthenticated()) { authenticatedUser = _documentSession.Load<User>(_userContext.GetAuthenticatedUserId()); } var query = _documentSession .Advanced .LuceneQuery<All_Users.Result, All_Users>() .Statistics(out stats) .SelectFields<All_Users.Result>("UserId", "GroupIds", "ConnectionIds", "SightingCount", "LatestHeartbeat", "LatestActivity", "User", "LatestObservationIds", "LatestObservations"); bool criteriaAdded = false; if (groupIds.Any()) { query = query .WhereIn("GroupIds", groupIds); criteriaAdded = true; } if (!string.IsNullOrWhiteSpace(usersQueryInput.Query)) { var field = "AllFields"; if (usersQueryInput.Field.ToLower() == "name") { field = "Name"; } if (usersQueryInput.Field.ToLower() == "description") { field = "Description"; } if (criteriaAdded) { query = query.AndAlso(); } query = query .Search(field, usersQueryInput.Query); } switch (usersQueryInput.Sort.ToLower()) { case "z-a": query = query.AddOrder(x => x.SortName, true); break; default: case "a-z": query = query.AddOrder(x => x.SortName, false); break; } return query .Skip(usersQueryInput.GetSkipIndex()) .Take(usersQueryInput.GetPageSize()) .ToList() .Select(x => _userViewFactory.Make(x.User, authenticatedUser, true, x.SightingCount, x.LatestObservations != null ? x.LatestObservations.Take(4) : null)) .ToPagedList( usersQueryInput.GetPage(), usersQueryInput.GetPageSize(), stats.TotalResults ); }
public object BuildUserList(UsersQueryInput usersQueryInput) { Check.RequireNotNull(usersQueryInput, "usersQueryInput"); return ExecuteQuery(usersQueryInput, new string[] { }); }
public object BuildGroupUserList(string groupId, UsersQueryInput usersQueryInput) { Check.RequireNotNullOrWhitespace(groupId, "groupId"); Check.RequireNotNull(usersQueryInput, "usersQueryInput"); return ExecuteQuery(usersQueryInput, new[] { groupId }); }
private object ExecuteQuery(UsersQueryInput usersQueryInput, IEnumerable <string> groupIds) { RavenQueryStatistics stats; User authenticatedUser = null; if (_userContext.IsUserAuthenticated()) { authenticatedUser = _documentSession.Load <User>(_userContext.GetAuthenticatedUserId()); } var query = _documentSession .Advanced .LuceneQuery <All_Users.Result, All_Users>() .Statistics(out stats) .SelectFields <All_Users.Result>("UserId", "GroupIds", "ConnectionIds", "SightingCount", "LatestHeartbeat", "LatestActivity", "User", "LatestObservationIds", "LatestObservations"); bool criteriaAdded = false; if (groupIds.Any()) { query = query .WhereIn("GroupIds", groupIds); criteriaAdded = true; } if (!string.IsNullOrWhiteSpace(usersQueryInput.Query)) { var field = "AllFields"; if (usersQueryInput.Field.ToLower() == "name") { field = "Name"; } if (usersQueryInput.Field.ToLower() == "description") { field = "Description"; } if (criteriaAdded) { query = query.AndAlso(); } query = query .Search(field, usersQueryInput.Query); } switch (usersQueryInput.Sort.ToLower()) { case "z-a": query = query.AddOrder(x => x.SortName, true); break; default: case "a-z": query = query.AddOrder(x => x.SortName, false); break; } return(query .Skip(usersQueryInput.GetSkipIndex()) .Take(usersQueryInput.GetPageSize()) .ToList() .Select(x => _userViewFactory.Make(x.User, authenticatedUser, true, x.SightingCount, x.LatestObservations != null ? x.LatestObservations.Take(4) : null)) .ToPagedList( usersQueryInput.GetPage(), usersQueryInput.GetPageSize(), stats.TotalResults )); }
public object BuildUserList(UsersQueryInput usersQueryInput) { Check.RequireNotNull(usersQueryInput, "usersQueryInput"); return(ExecuteQuery(usersQueryInput, new string[] { })); }