Beispiel #1
0
        public void AgeStatistics_Should_Initialize()
        {
            var ageStatistics = new AgeStatistics();

            ageStatistics.Should().NotBeNull();

            // series
            var series = ageStatistics.GetSeries();

            series.Should().NotBeNull();
            series.Count().Should().Be(0);
        }
        internal async Task <StatisticsResponse> StatisticsAction(string id)
        {
            return(await Task.Run(() =>
            {
                List <AgeStatistics> agesList = new List <AgeStatistics>();
                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")
                        {
                            //-----------------Region name------------------
                            name = (from st in context.Regions
                                    where st.RegiondId == Int32.Parse(id)
                                    select st.RegionName).Single().ToString();

                            //-----------------Population------------------
                            population = (from st in context.FiscData
                                          where st.Region == name
                                          select st.Idnp).Count();

                            //-----------------Count voters by ages------------------
                            //18-25
                            var age18 = new AgeStatistics();
                            age18.Ages = "18-25";

                            age18.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 18 &&
                                                                      DateTime.Now.Year - e.BirthDate.Year <=
                                                                      25 &&
                                                                      e.Region.RegiondId.ToString() == id).Count().ToString();
                            agesList.Add(age18);

                            //26-40
                            var age26 = new AgeStatistics();
                            age26.Ages = "26-40";

                            age26.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 26 &&
                                                                      DateTime.Now.Year - e.BirthDate.Year <=
                                                                      40 &&
                                                                      e.Region.RegiondId.ToString() == id).Count().ToString();
                            agesList.Add(age26);

                            //41-50
                            var age41 = new AgeStatistics();
                            age41.Ages = "41-50";

                            age41.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 41 &&
                                                                      DateTime.Now.Year - e.BirthDate.Year <=
                                                                      50 &&
                                                                      e.Region.RegiondId.ToString() == id).Count().ToString();
                            agesList.Add(age41);

                            //51-64
                            var age51 = new AgeStatistics();
                            age51.Ages = "51-64";

                            age51.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 51 &&
                                                                      DateTime.Now.Year - e.BirthDate.Year <=
                                                                      65 &&
                                                                      e.Region.RegiondId.ToString() == id).Count().ToString();
                            agesList.Add(age51);

                            //65+
                            var age65 = new AgeStatistics();
                            age65.Ages = "65";

                            age65.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 65 &&
                                                                      e.Region.RegiondId.ToString() == id).Count().ToString();
                            agesList.Add(age65);

                            //-----------------Population------------------
                            votants = context.IdvnAccounts.Where(e => e.Region.RegiondId.ToString() == id).Count();

                            //-----------------Number of male gender voters------------------
                            gender.Male = (from st in context.IdvnAccounts
                                           where st.Gender == "Masculin" &&
                                           st.RegionId == Int32.Parse(id)
                                           select st).Count();
                            //-----------------Number of female gender voters------------------
                            gender.Female = (from st in context.IdvnAccounts
                                             where st.Gender == "Feminin" &&
                                             st.RegionId == Int32.Parse(id)
                                             select st).Count();
                        }
                        else
                        {
                            name = "Republica Moldova";

                            //-----------------Population------------------
                            population = (from st in context.FiscData
                                          select st.Idnp).Count();

                            //-----------------Count voters by ages------------------
                            //18-25
                            var age18 = new AgeStatistics();
                            age18.Ages = "18-25";

                            age18.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 18 &&
                                                                      DateTime.Now.Year - e.BirthDate.Year <=
                                                                      25).Count().ToString();
                            agesList.Add(age18);

                            //26-40
                            var age26 = new AgeStatistics();
                            age26.Ages = "26-40";

                            age26.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 26 &&
                                                                      DateTime.Now.Year - e.BirthDate.Year <=
                                                                      40).Count().ToString();
                            agesList.Add(age26);

                            //41-50
                            var age41 = new AgeStatistics();
                            age41.Ages = "41-50";

                            age41.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 41 &&
                                                                      DateTime.Now.Year - e.BirthDate.Year <=
                                                                      50).Count().ToString();
                            agesList.Add(age41);

                            //51-64
                            var age51 = new AgeStatistics();
                            age51.Ages = "51-64";

                            age51.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 51 &&
                                                                      DateTime.Now.Year - e.BirthDate.Year <=
                                                                      65).Count().ToString();
                            agesList.Add(age51);

                            //65+
                            var age65 = new AgeStatistics();
                            age65.Ages = "65+";

                            age65.Voters = context.IdvnAccounts.Where(e => DateTime.Now.Year - e.BirthDate.Year >= 65)
                                           .Count().ToString();
                            agesList.Add(age65);

                            //-----------------Population------------------
                            votants = context.IdvnAccounts.Select(e => e.Idvn).Count();

                            //-----------------Number of male gender voters------------------
                            gender.Male = (from st in context.IdvnAccounts
                                           where st.Gender == "Masculin"
                                           select st).Count();
                            //-----------------Number of female gender voters------------------
                            gender.Female = (from st in context.IdvnAccounts
                                             where st.Gender == "Feminin"
                                             select st).Count();
                        }
                    }
                }
                catch (Exception e)
                {
                    _logger.Error("Statistics |" + e.Message);
                }

                return new StatisticsResponse
                {
                    Name = name,
                    AgeVoters = agesList,
                    GenderStatistics = gender,
                    Time = DateTime.Now,
                    Voters = votants,
                    Population = population
                };
            }));
        }