Example #1
0
        public override CommandState QueryState(CommandContext context)
        {
            if (context.Items.Length != 1)
             {
            return CommandState.Disabled;
             }

             Item poll = context.Items[0];
             if (!poll.Access.CanWrite())
             {
            return CommandState.Disabled;
             }

             PollItem pollItem = new PollItem(context.Items[0]);
             if (pollItem.IsClosed)
             {
            return CommandState.Disabled;
             }

             if (pollItem.IsArchived)
             {
            return CommandState.Disabled;
             }

             return CommandState.Enabled;
        }
        /// <summary>
        /// Gets the votes count.
        /// </summary>
        /// <param name="poll">The poll.</param>
        /// <returns></returns>
        public virtual int GetVotesCount(PollItem poll)
        {
            IQueryable<DMSPollData.Analytics.PageEvent> pageEvents = GetVotesList(poll);
            Assert.IsNotNull(pageEvents, "PageEvents");
            return pageEvents.Count() + MergeVisitEvents(pageEvents, poll);

            //return 0;
        }
        /// <summary>
        /// Gets the votes count.
        /// </summary>
        /// <param name="poll">The poll.</param>
        /// <returns></returns>
        public virtual int GetVotesCount(PollItem poll)
        {
            IQueryable <DMSPollData.Analytics.PageEvent> pageEvents = GetVotesList(poll);

            Assert.IsNotNull(pageEvents, "PageEvents");
            return(pageEvents.Count() + MergeVisitEvents(pageEvents, poll));

            //return 0;
        }
        /// <summary>
        /// Check if votes is exists.
        /// </summary>
        /// <param name="poll">The poll.</param>
        /// <returns></returns>
        public virtual bool VoteExists(PollItem poll)
        {
            IQueryable <string> sessionPolls;
            IQueryable <string> trackerPols;
            var pollCache = new PollVotesCache();

            trackerPols  = pollCache.SessionPolls;
            sessionPolls = pollCache.SessionPolls;
            if (sessionPolls == null)
            {
                trackerPols = (from pe in Tracker.DataContext.PageEvents
                               where pe.DataKey == poll.Name
                               select new string(pe.DataKey.ToCharArray())).AsQueryable <string>();
                if (trackerPols.Count() == 0)
                {
                    var analyticsGlobalCookie = WebUtil.GetCookieValue("SC_ANALYTICS_GLOBAL_COOKIE");
                    var analyticsContext      = new DMSPollData.Analytics.Data.AnalyticsDataContext();
                    sessionPolls =
                        (from pageEvent in analyticsContext.PageEvents
                         join page in analyticsContext.Pages on pageEvent.PageId equals page.PageId
                         join session in analyticsContext.Visits on page.VisitId equals session.VisitId
                         join globalSession in analyticsContext.Visitors on session.VisitorId equals
                         globalSession.VisitorId
                         where pageEvent.PageEventDefinitionId == PollConstants.PollPageEventDefinitionID.ToGuid() &&
                         globalSession.VisitorId.ToString().Replace("-", "").Replace("{", "").Replace("}", "").ToLower() == analyticsGlobalCookie
                         select new string(pageEvent.DataKey.ToCharArray())).Distinct();

                    pollCache.CacheSessionPolls(sessionPolls);
                }
                else
                {
                    pollCache.CacheSessionPolls(trackerPols);
                }
            }
            var exists = false;

            if (sessionPolls != null)
            {
                var list = sessionPolls.ToList();
                exists = list.Contains(poll.Name);
            }
            else if (trackerPols != null)
            {
                var list = trackerPols.ToList();
                exists = list.Contains(poll.Name);
            }

            return(exists);
        }
Example #5
0
        /// <summary>
        /// Archives current poll to the pollItem.
        /// </summary>
        /// <param name="pollItem">The poll item.</param>
        public void ArchiveTo(Item pollItem)
        {
            //copy archive folder if exists
            foreach (Item item in InnerItem.Children)
            {
                if (item.TemplateID == PollConstants.PollArchiveTemplateID)
                {
                    item.CopyTo(pollItem, item.Name);
                    item.Delete();
                }
            }
            //or create archive folder
            if (pollItem.Children[PollConstants.PollArchiveFolderName] == null)
            {
                TemplateItem pollArhiveTemplate = PollConstants.DatabaseContext.Templates[PollConstants.PollArchiveTemplateID];
                Assert.IsNotNull(pollArhiveTemplate, "Poll archive template");

                pollItem.Add(PollConstants.PollArchiveFolderName, pollArhiveTemplate);
            }
            string itemName    = string.Format("{0} {1}", InnerItem.Name, DateTime.Today.ToShortDateString().Replace('.', ' '));
            string displayName = itemName;

            if (ItemUtil.GetItemNameError(itemName).Length > 0)
            {
                itemName = ItemUtil.ProposeValidItemName(itemName);
            }

            Item currentPollCopy = InnerItem.CopyTo(pollItem.Children[PollConstants.PollArchiveFolderName], itemName, Data.ID.NewID, false);

            if (displayName != itemName)
            {
                PollItem archivedPoll = new PollItem(currentPollCopy)
                {
                    DisplayName = displayName
                };
            }

            //copy all poll options
            foreach (Item item in InnerItem.Children)
            {
                item.CopyTo(currentPollCopy, item.Name);
                item.Delete();
            }
            InnerItem.Delete();
        }
        /// <summary>
        /// Gets the votes list.
        /// </summary>
        /// <param name="poll">The poll.</param>
        /// <returns></returns>
        private static IQueryable <DMSPollData.Analytics.PageEvent> GetVotesList(PollItem poll)
        {
            var pollCache = new PollVotesCache();

            IQueryable <DMSPollData.Analytics.PageEvent> pageEvents = pollCache.PageEvents;

            if (pageEvents == null)
            {
                var analyticsContext = new DMSPollData.Analytics.Data.AnalyticsDataContext();
                pageEvents =
                    analyticsContext.PageEvents.Where(
                        pageEvent =>
                        (pageEvent.PageEventDefinitionId == PollConstants.PollPageEventDefinitionID.ToGuid()) &&
                        (pageEvent.DataKey == poll.Name));
                pollCache.CachePageEvents(pageEvents);
            }

            return(pageEvents);
        }
 public PollOptionItem(Item item, PollItem pItem)
     : base(item)
 {
     poll = pItem;
 }
        /// <summary>
        /// Check if votes is exists.
        /// </summary>
        /// <param name="poll">The poll.</param>       
        /// <returns></returns>
        public virtual bool VoteExists(PollItem poll)
        {
            IQueryable<string> sessionPolls;
            IQueryable<string> trackerPols;
            var pollCache = new PollVotesCache();
            trackerPols = pollCache.SessionPolls;
            sessionPolls = pollCache.SessionPolls;
            if (sessionPolls == null)
            {
                trackerPols = (from pe in Tracker.DataContext.PageEvents
                                  where pe.DataKey == poll.Name
                                  select new string(pe.DataKey.ToCharArray())).AsQueryable<string>();
                if (trackerPols.Count() == 0)
                {
                    var analyticsGlobalCookie = WebUtil.GetCookieValue("SC_ANALYTICS_GLOBAL_COOKIE");
                    var analyticsContext = new DMSPollData.Analytics.Data.AnalyticsDataContext();
                    sessionPolls =
                        (from pageEvent in analyticsContext.PageEvents
                         join page in analyticsContext.Pages on pageEvent.PageId equals page.PageId
                         join session in analyticsContext.Visits on page.VisitId equals session.VisitId
                         join globalSession in analyticsContext.Visitors on session.VisitorId equals
                             globalSession.VisitorId
                         where pageEvent.PageEventDefinitionId == PollConstants.PollPageEventDefinitionID.ToGuid()
                               && globalSession.VisitorId.ToString().Replace("-", "").Replace("{", "").Replace("}", "").ToLower() == analyticsGlobalCookie
                         select new string(pageEvent.DataKey.ToCharArray())).Distinct();

                    pollCache.CacheSessionPolls(sessionPolls);
                }
                else
                {
                    pollCache.CacheSessionPolls(trackerPols);
                }

            }
            var exists = false;

            if (sessionPolls != null)
            {
                var list = sessionPolls.ToList();
                exists = list.Contains(poll.Name);
            }else if (trackerPols != null)
            {
                var list = trackerPols.ToList();
                exists = list.Contains(poll.Name);
            }

            return exists;
        }
        private static int MergeVisitEvents(IQueryable<DMSPollData.Analytics.PageEvent> pageevents, PollItem poll)
        {
            var currentvisitevents =
            Tracker.DataContext.PageEvents.Where(
              x => x.PageEventDefinitionId == PollConstants.PollPageEventDefinitionID.ToGuid() &&
              x.DataKey == poll.Name);
              var count = 0;
              foreach (var currentvisitevent in currentvisitevents)
              {

            var c = pageevents.Where(x => x.PageEventId == currentvisitevent.PageEventId).Count();
            count += c;
              }
              return currentvisitevents.Count() - count;
        }
        /// <summary>
        /// Gets the votes list.
        /// </summary>
        /// <param name="poll">The poll.</param>
        /// <returns></returns>
        private static IQueryable<DMSPollData.Analytics.PageEvent> GetVotesList(PollItem poll)
        {
            var pollCache = new PollVotesCache();

            IQueryable<DMSPollData.Analytics.PageEvent> pageEvents = pollCache.PageEvents;
            if (pageEvents == null)
            {
                var analyticsContext = new DMSPollData.Analytics.Data.AnalyticsDataContext();
                pageEvents =
                    analyticsContext.PageEvents.Where(
                        pageEvent =>
                        (pageEvent.PageEventDefinitionId == PollConstants.PollPageEventDefinitionID.ToGuid()) &&
                        (pageEvent.DataKey == poll.Name));
                pollCache.CachePageEvents(pageEvents);
            }

            return pageEvents;
        }
Example #11
0
        /// <summary>
        /// Archives current poll to the pollItem.
        /// </summary>
        /// <param name="pollItem">The poll item.</param>
        public void ArchiveTo(Item pollItem)
        {
            //copy archive folder if exists
            foreach (Item item in InnerItem.Children)
            {
                if (item.TemplateID == PollConstants.PollArchiveTemplateID)
                {
                    item.CopyTo(pollItem, item.Name);
                    item.Delete();
                }
            }
            //or create archive folder
            if (pollItem.Children[PollConstants.PollArchiveFolderName] == null)
            {
                TemplateItem pollArhiveTemplate = PollConstants.DatabaseContext.Templates[PollConstants.PollArchiveTemplateID];
                Assert.IsNotNull(pollArhiveTemplate, "Poll archive template");

                pollItem.Add(PollConstants.PollArchiveFolderName, pollArhiveTemplate);
            }
            string itemName = string.Format("{0} {1}", InnerItem.Name, DateTime.Today.ToShortDateString().Replace('.', ' '));
            string displayName = itemName;

            if (ItemUtil.GetItemNameError(itemName).Length > 0)
                itemName = ItemUtil.ProposeValidItemName(itemName);

            Item currentPollCopy = InnerItem.CopyTo(pollItem.Children[PollConstants.PollArchiveFolderName], itemName, Data.ID.NewID, false);

            if (displayName != itemName)
            {
                PollItem archivedPoll = new PollItem(currentPollCopy) { DisplayName = displayName };
            }

            //copy all poll options
            foreach (Item item in InnerItem.Children)
            {
                item.CopyTo(currentPollCopy, item.Name);
                item.Delete();
            }
            InnerItem.Delete();
        }
Example #12
0
 public override void Execute(CommandContext context)
 {
     PollItem pollItem = new PollItem(context.Items[0]);
      pollItem.IsClosed = true;
 }
 public PollOptionItem(Item item, PollItem pItem)
     : base(item)
 {
     poll = pItem;
 }
        private static int MergeVisitEvents(IQueryable <DMSPollData.Analytics.PageEvent> pageevents, PollItem poll)
        {
            var currentvisitevents =
                Tracker.DataContext.PageEvents.Where(
                    x => x.PageEventDefinitionId == PollConstants.PollPageEventDefinitionID.ToGuid() &&
                    x.DataKey == poll.Name);
            var count = 0;

            foreach (var currentvisitevent in currentvisitevents)
            {
                var c = pageevents.Where(x => x.PageEventId == currentvisitevent.PageEventId).Count();
                count += c;
            }
            return(currentvisitevents.Count() - count);
        }
 private PollItem GetCurrentPoll()
 {
     try
     {
         PollItem poll = new PollItem(PollConstants.DatabaseContext.GetItem(PathToPoll));
         return poll;
     }
     catch (ArgumentNullException e)
     {
         throw new MissedItemException(String.Format("Invalid {0} parameter", PollConstants.PollPathParameter), e);
     }
 }