Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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));
        }