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); }
/// <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; }
/// <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(); }
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); } }