/// <summary> /// Creates an instance of IdeaForumDataAdapter /// </summary> /// <param name="ideaForum">Forum Entity to create an adapter for</param> /// <param name="filter">Type of filter to create ex.) new, hot, 'other'</param> /// <param name="timeSpan">Timespan from which to query ideas</param> /// <param name="status">Type of ideas in which to include</param> /// <returns>type: IIdeaForumDataAdapter</returns> public IIdeaForumDataAdapter CreateIdeaForumDataAdapter(Entity ideaForum, string filter, string timeSpan, int?status = 1) { IIdeaForumDataAdapter ideaForumDataAdapter = null; if (string.Equals(filter, "new", StringComparison.InvariantCultureIgnoreCase)) { ideaForumDataAdapter = new IdeaForumByNewDataAdapter(ideaForum); } else { ideaForumDataAdapter = this.IsIdeasPreRollup() ? this.CreateIdeaDataAdapterPreRollup(ideaForum, filter) : this.CreateIdeaDataAdapter(ideaForum, filter); } ideaForumDataAdapter.MinDate = timeSpan == "this-year" ? DateTime.UtcNow.AddYears(-1).Date : timeSpan == "this-month" ? DateTime.UtcNow.AddMonths(-1).Date : timeSpan == "this-week" ? DateTime.UtcNow.AddDays(-7).Date : timeSpan == "today" ? DateTime.UtcNow.AddHours(-24) : (DateTime?)null; ideaForumDataAdapter.Status = status != (int?)IdeaStatus.Any ? status : null; return(ideaForumDataAdapter); }
/// <summary> /// Create an IdeaDataAdapter for versions before the rollup schema was introduced (v8.3) /// </summary> /// <param name="ideaForum">Forum Entity to create an adapter for</param> /// <param name="filter">Type of filter to create ex.) new, hot, 'other'</param> /// <returns>type: IIdeaForumDataAdapter</returns> public IIdeaForumDataAdapter CreateIdeaDataAdapterPreRollup(Entity ideaForum, string filter) { IIdeaForumDataAdapter ideaForumDataAdapter = null; if (string.Equals(filter, "hot", StringComparison.InvariantCultureIgnoreCase)) { ideaForumDataAdapter = new IdeaForumByHotDataAdapterPreRollup(ideaForum); } else { ideaForumDataAdapter = new IdeaForumDataAdapterPreRollup(ideaForum); } return(ideaForumDataAdapter); }
private ActionResult GetIdeaForumView(Entity ideaForum, int?page, OrganizationServiceContext context, string filter = null, string timeSpan = null, int?status = 1) { IIdeaForumDataAdapter ideaForumDataAdapter = IdeaForumDataAdapterFactory.Instance.CreateIdeaForumDataAdapter(ideaForum, filter, timeSpan, status); var currentIdeaForum = ideaForumDataAdapter.Select(); if (currentIdeaForum == null) { return(RedirectToPageNotFound()); } var ideaForumViewModel = new IdeaForumViewModel { IdeaForum = currentIdeaForum, Ideas = new PaginatedList <IIdea>(page, ideaForumDataAdapter.SelectIdeaCount(), ideaForumDataAdapter.SelectIdeas) }; foreach (var idea in ideaForumViewModel.Ideas) { idea.Url = context.GetUrl(idea.Entity); } // Set label for status displayed in dropdown ideaForumViewModel.CurrentStatusLabel = status == null? currentIdeaForum.IdeaStatusOptionSetMetadata.Options.Where(o => o.Value == (int?)IdeaStatus.New).FirstOrDefault().Label.GetLocalizedLabelString().ToLower() : status == (int?)IdeaStatus.Any ? ResourceManager.GetString("IdeaForum_Any") : currentIdeaForum.IdeaStatusOptionSetMetadata.Options.Where(o => o.Value == status).FirstOrDefault().Label.GetLocalizedLabelString().ToLower(); if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage)) { PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Idea, this.HttpContext, "read_idea_forum", ideaForumViewModel.Ideas.Count(), ideaForum.ToEntityReference(), "read"); } // sprinkle these calls in for whichever events we want to trace //Log Customer Journey Tracking if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.CustomerJourneyTracking)) { PortalTrackingTrace.TraceInstance.Log(Constants.Forum, ideaForum.Id.ToString(), currentIdeaForum.Title); } return(View("IdeaForum", ideaForumViewModel)); }