public void EnsureVoteStatsCalculate_Certified() { var stats = new VoteStatistics(); var passedDictionary = new Dictionary <int, int>() { { 1, 5 }, { 2, 5 }, { 3, 5 }, }; stats.Raw.Add(VoteRestrictionStatus.Certified, passedDictionary ); var allstats = stats.All; var friendly = stats.Friendly; Assert.IsNotNull(friendly); Assert.AreEqual(1, friendly.Keys.Count); //foreach (var key in friendly.Keys) //{ // var friendlyDictionary = friendly[key]; // var sum = friendlyDictionary.Values.Sum(x => x.Percentage); // sum = Math.Round(sum); // Assert.AreEqual(1, sum); // Dictionary<int, int> dict = stats.All[key]; // if (key == VoteRestrictionStatus.All) // { // var keys = passedDictionary.Keys.Union(failedDictionary.Keys); // var summedold = keys.ToDictionary(k => k, k => (passedDictionary.Keys.Contains(k) ? passedDictionary[k] : 0) + (failedDictionary.Keys.Contains(k) ? failedDictionary[k] : 0)); // dict = summedold; // } // else if (key == VoteRestrictionStatus.Certified) // { // dict = passedDictionary; // } // else if (key == VoteRestrictionStatus.Uncertified) // { // dict = failedDictionary; // } // Assert.AreEqual(friendlyDictionary.Count, dict.Count); // var dictCount = dict.Values.Sum(); // var friendCount = friendlyDictionary.TotalCount; // Assert.AreEqual(dictCount, friendCount); // foreach (var keyPair in friendlyDictionary) // { // Assert.AreEqual(keyPair.Value.Count, dict[keyPair.Key]); // } //} }
//GetVotes public async Task <VoteStatistics> GetVoteStatistics(int id) { var result = new VoteStatistics(); var data = (from v in _db.VoteTracker where v.VoteID == id group v by new { v.RestrictionsPassed, v.VoteOptionID } into g select new { g.Key.RestrictionsPassed, g.Key.VoteOptionID, Count = g.Count() }).ToList(); var passed = data.Where(x => x.RestrictionsPassed).ToDictionary(x => x.VoteOptionID, y => y.Count); var failed = data.Where(x => !x.RestrictionsPassed).ToDictionary(x => x.VoteOptionID, y => y.Count); result.VoteID = id; if (passed != null && passed.Count > 0) { result.Raw.Add(VoteRestrictionStatus.Certified, passed); } if (failed != null && failed.Count > 0) { result.Raw.Add(VoteRestrictionStatus.Uncertified, failed); } return(result); }
public void EnsureVoteStatsCalculate_Empty() { var stats = new VoteStatistics(); var allstats = stats.All; var friendly = stats.Friendly; Assert.IsNotNull(friendly); Assert.AreEqual(0, friendly.Keys.Count); }
internal async Task <ResultsResponse> ResultsAction(string id) { return(await Task.Run(async() => { List <VoteStatistics> parties = new List <VoteStatistics>(); int votants = 0; int population = 0; int pending = 0; string name = null; var gender = new GenderStatistic(); try { using (var context = new SystemDBContext()) { if (id != "0") { votants = (from st in context.Blocks where st.RegionId == Int32.Parse(id) select st.BlockId).Count(); name = (from st in context.Regions where st.RegiondId == Int32.Parse(id) select st.RegionName).Single().ToString(); //-----------------Number of parties to count------------------ for (int i = 1; i <= context.Parties.Count(); i++) { var party = new VoteStatistics(); party.IDParty = i; party.Votes = (from st in context.Blocks where st.PartyId == party.IDParty && st.RegionId == Int32.Parse(id) select st).Count(); party.Color = context.Parties.Where(x => x.PartyId == party.IDParty).SingleOrDefault() ?.Color; party.Name = context.Parties.Where(x => x.PartyId == party.IDParty).SingleOrDefault() ?.PartyName; parties.Add(party); } //-----------------Population------------------ population = (from st in context.FiscData where st.Region == name select st.Idnp).Count(); //-----------------Number of male gender voters------------------ gender.Male = (from st in context.Blocks where st.Gender == "Masculin" && st.RegionId == Int32.Parse(id) select st).Count(); //-----------------Number of female gender voters------------------ gender.Female = (from st in context.Blocks where st.Gender == "Feminin" && st.RegionId == Int32.Parse(id) select st).Count(); } else { name = "Republica Moldova"; votants = (from st in context.Blocks select st.BlockId).Count(); //-----------------Number of parties to count------------------ for (int i = 1; i <= 5; i++) { var party = new VoteStatistics(); party.IDParty = i; var Name = context.Parties.Where(x => x.PartyId == party.IDParty).SingleOrDefault() ?.PartyName; party.Votes = (from st in context.Blocks where st.PartyId == party.IDParty select st).Count(); party.Color = context.Parties.Where(x => x.PartyId == party.IDParty).SingleOrDefault() ?.Color; party.Name = context.Parties.Where(x => x.PartyId == party.IDParty).SingleOrDefault() ?.PartyName; parties.Add(party); } population = (from st in context.FiscData select st.Idnp).Count(); pending = (from st in context.IdvnAccounts select st.Idvn).Count(); gender.Male = (from st in context.Blocks where st.Gender == "Masculin" select st).Count(); gender.Female = (from st in context.Blocks where st.Gender == "Feminin" select st).Count(); } } } catch (Exception e) { _logger.Error("Results | " + e.Message); } return new ResultsResponse { Name = name, Time = DateTime.Now, TotalVotes = parties, Votants = votants, Population = population, Pending = pending, GenderStatistics = gender }; })); }