public async Task<JsonResult> CommunityDetail(long? id) { if (CurrentUserId == 0) { await TryAuthenticateFromHttpContext(_communityService, _notificationService); } if (!id.HasValue) { return new JsonResult { Data = "error: invalid content id", JsonRequestBehavior=JsonRequestBehavior.AllowGet}; } var contentDetail = _contentService.GetContentDetails(id.Value, CurrentUserId); var contentViewModel = new ContentViewModel(); contentViewModel.SetValuesFrom(contentDetail); // It creates the prefix for id of links SetSiteAnalyticsPrefix(HighlightType.None); return new JsonResult { Data = contentViewModel, JsonRequestBehavior=JsonRequestBehavior.AllowGet }; }
public async Task<JsonResult> GetCommunityContents(long communityId) { if (CurrentUserId == 0) { await TryAuthenticateFromHttpContext(_communityService, _notificationService); } var contents = await _communityService.GetCommunityContents(communityId, CurrentUserId); var entities = new List<EntityViewModel>(); foreach (var item in contents) { var contentViewModel = new ContentViewModel(); contentViewModel.SetValuesFrom(item); entities.Add(contentViewModel); } var children = await _communityService.GetChildCommunities(communityId, CurrentUserId); var childCommunities = new List<CommunityViewModel>(); foreach (var child in children) { var communityViewModel = new CommunityViewModel(); Mapper.Map(child, communityViewModel); childCommunities.Add(communityViewModel); } return Json(new{entities,childCommunities},JsonRequestBehavior.AllowGet); }
/// <summary> /// Gets the entities for the given community. /// </summary> /// <param name="entityId">Entity Id (Community/Content)</param> /// <param name="entityType">Entity type (Community/Content)</param> /// <param name="pageDetails">Details about the pagination</param> /// <param name="onlyItemCount">To get only item count, not the entities. When community details page is loaded first time, /// no need to get the communities, only count is enough.</param> /// <returns>Collection of entities</returns> private List<EntityViewModel> GetCommunityEntities(long entityId, EntityType entityType, PageDetails pageDetails, bool onlyItemCount) { var entities = new List<EntityViewModel>(); // Default value is 20 if the value is not specified or wrong in the configuration file. // Total pages will be set by the service. pageDetails.ItemsPerPage = Constants.HighlightEntitiesPerPage; // Do not hit the database if the entity is not valid. This will happen for private communities. if (entityId > 0) { if (entityType == EntityType.Community || entityType == EntityType.Folder) { var subCommunities = _entityService.GetSubCommunities(entityId, CurrentUserId, pageDetails, onlyItemCount); foreach (var item in subCommunities) { var subCommunityViewModel = new CommunityViewModel(); Mapper.Map(item, subCommunityViewModel); entities.Add(subCommunityViewModel); } } else { var contents = _entityService.GetContents(entityId, CurrentUserId, pageDetails); foreach (var item in contents) { var contentViewModel = new ContentViewModel(); contentViewModel.SetValuesFrom(item); entities.Add(contentViewModel); } } } return entities; }
/// <summary> /// It returns the entity list /// </summary> /// <param name="userId">User Id for whom page is rendered</param> /// <param name="entityType">Entity type (Community/Content)</param> /// <param name="pageDetails">Details about the pagination</param> /// <returns>List of entity objects</returns> private async Task<List<EntityViewModel>> GetEntities(long userId, EntityType entityType, PageDetails pageDetails) { // TODO: Need to create a model for passing parameters to this controller var highlightEntities = new List<EntityViewModel>(); if (entityType == EntityType.Community) { var communities = ProfileService.GetCommunities(userId, pageDetails, userId != CurrentUserId); foreach (var community in communities) { var communityViewModel = new CommunityViewModel(); Mapper.Map(community, communityViewModel); highlightEntities.Add(communityViewModel); } } else if (entityType == EntityType.Content) { var contents = ProfileService.GetContents(userId, pageDetails, userId != CurrentUserId); foreach (var content in contents) { var contentViewModel = new ContentViewModel(); contentViewModel.SetValuesFrom(content); highlightEntities.Add(contentViewModel); } } return highlightEntities; }
/// <summary> /// It returns the entity list /// </summary> /// <param name="entityType">Entity type (Community/Content)</param> /// <param name="entityHighlightFilter">Entity Highlight filter for the entities (Featured/Latest/Popular/Related)</param> /// <param name="pageDetails">Details about the pagination</param> /// <returns>entity object</returns> private async Task<List<EntityViewModel>> GetHighlightEntities(EntityType entityType, EntityHighlightFilter entityHighlightFilter, PageDetails pageDetails) { // TODO: Need to create a model for passing parameters to this controller var highlightEntities = new List<EntityViewModel>(); // Set the user who is getting the highlight entities. entityHighlightFilter.UserID = CurrentUserId; // Total pages will be set by the service. if (pageDetails.ItemsPerPage == 0) { pageDetails.ItemsPerPage = Constants.HighlightEntitiesPerPage; } if (entityType == EntityType.Community) { var communities = await _entityService.GetCommunities(entityHighlightFilter, pageDetails); foreach (var community in communities) { var communityViewModel = new CommunityViewModel(); Mapper.Map(community, communityViewModel); highlightEntities.Add(communityViewModel); } } else if (entityType == EntityType.Content) { var contents = await _entityService.GetContents(entityHighlightFilter, pageDetails); foreach (var content in contents) { var contentViewModel = new ContentViewModel(); contentViewModel.SetValuesFrom(content); highlightEntities.Add(contentViewModel); } } return highlightEntities; }