Example #1
0
        public AnalysedVote(Vote vote, IList <Vote> allVotes, IList <string> validTicketNumbers,
                            IList <AppInsightsVotingUser> userSessions)
        {
            var orderedIndices = vote.GetIndices().Select(int.Parse).OrderBy(x => x).ToArray();
            var indexGaps      = orderedIndices.Select((index, i) => i == 0 ? 0 : index - orderedIndices[i - 1]).Skip(1).OrderBy(x => x).ToArray();

            Vote                     = vote;
            HasTicketNumber          = !string.IsNullOrEmpty(vote.TicketNumber);
            HasValidTicketNumber     = HasTicketNumber && validTicketNumbers.Contains(vote.TicketNumber);
            HasDuplicateTicketNumber = HasValidTicketNumber && allVotes.Any(v => v.VoteId != vote.VoteId && v.TicketNumber == vote.TicketNumber);

            HasAppInsightsId          = !string.IsNullOrEmpty(vote.VoterSessionId);
            HasValidAppInsightsId     = HasAppInsightsId && userSessions.Any(x => x.UserId == vote.VoterSessionId && x.VoteId == vote.VoteId);
            HasDuplicateAppInsightsId = HasAppInsightsId && allVotes.Any(v => v.VoteId != vote.VoteId && v.VoterSessionId == vote.VoterSessionId);
            IndexGaps = JsonConvert.SerializeObject(indexGaps.ToArray());
        }