Exemple #1
0
        public async Task <IActionResult> Index(string visitorGender, string searchString)
        {
            // Use LINQ to get list of genders.
            IQueryable <string> genderQuery = from v in _context.Visitor
                                              orderby v.Gender
                                              select v.Gender;


            var visitors = from v in _context.Visitor
                           select v;



            if (!string.IsNullOrEmpty(searchString))
            {
                visitors = visitors.Where(s => s.Nationality.Contains(searchString)); // Lambda Expression
            }

            if (!string.IsNullOrEmpty(visitorGender))
            {
                visitors = visitors.Where(x => x.Gender == visitorGender);
            }


            //for gender search box
            var visitorGenderVm = new VisitorStatsViewModel();

            visitorGenderVm.GendersList = new SelectList(await genderQuery.Distinct().ToListAsync());
            visitorGenderVm.Visitors    = await visitors.ToListAsync();


            return(View(visitorGenderVm));
        }
Exemple #2
0
        // GET: Visitors
        public async Task <IActionResult> Index(string visitorGender, string searchString)
        {
            // Use LINQ to get list of genders.
            IQueryable <string> genderQuery = from v in _context.Visitor
                                              orderby v.Gender
                                              select v.Gender;

            // Use LINQ to get list of Nationalities.
            IQueryable <string> nationalityQuery = from v in _context.Visitor
                                                   orderby v.Nationality
                                                   select v.Nationality;

            // Use LINQ to get list of Ages.
            IQueryable <int> AgeQuery = from v in _context.Visitor
                                        orderby v.Age_Group
                                        select v.Age_Group;

            // Use LINQ to get list of Dates.
            IQueryable <DateTime> DateQuery = from v in _context.Visitor
                                              orderby v.Date
                                              select v.Date;

            var visitors = from v in _context.Visitor
                           select v;

            var visitorViewModel = new VisitorStatsViewModel();

            visitorViewModel.Visitors = await visitors.ToListAsync();

            //for gender search box
            visitorViewModel.GendersList = new SelectList(await genderQuery.Distinct().ToListAsync());
            int sizeGender_list = visitorViewModel.GendersList.Count();

            int[] myGenderInts = new int[sizeGender_list];
            int   index        = 0;

            foreach (var g in visitorViewModel.GendersList)
            {
                int count = 0;
                foreach (var v in visitors)
                {
                    //search for an option to replace this index for the index of g
                    if (v.Gender == g.Text)
                    {
                        count++;
                        myGenderInts[index] = count;
                    }
                }
                index++;
            }
            //for Nationality
            visitorViewModel.NationalityList = new SelectList(await nationalityQuery.Distinct().ToListAsync());
            int sizeNationality_list = visitorViewModel.NationalityList.Count();

            int[] myNationalityInts = new int[sizeNationality_list];
            index = 0;
            foreach (var nationality in visitorViewModel.NationalityList)
            {
                int count_nationality = 0;
                foreach (var v_nationality in visitors)
                {
                    //search for an option to replace this index for the index of g
                    if (v_nationality.Nationality == nationality.Text)
                    {
                        count_nationality++;
                        myNationalityInts[index] = count_nationality;
                    }
                }
                index++;
            }
            //for age search box
            visitorViewModel.AgeList = new SelectList(await AgeQuery.Distinct().ToListAsync());
            int sizeAge_list = visitorViewModel.AgeList.Count();

            int[] myAgeInts = new int[sizeAge_list];
            index = 0;
            foreach (var age in visitorViewModel.AgeList)
            {
                int age_count = 0;
                foreach (var v_age in visitors)
                {
                    //search for an option to replace this index for the index of g
                    if (v_age.Age_Group == int.Parse(age.Text))
                    {
                        age_count++;
                        myAgeInts[index] = age_count;
                    }
                }
                index++;
            }
            //for Date search
            visitorViewModel.DateList = new SelectList(await DateQuery.Distinct().ToListAsync());
            int sizeDate_list = visitorViewModel.DateList.Count();

            int[] myDateInts = new int[sizeDate_list];
            index = 0;
            foreach (var date in visitorViewModel.DateList)
            {
                int date_count = 0;
                foreach (var v_date in visitors)
                {
                    string visitordate   = v_date.Date.ToString();
                    string dateslistitem = date.Text;
                    //search for an option to replace this index for the index of g
                    if (visitordate == dateslistitem)
                    {
                        date_count++;
                        myDateInts[index] = date_count;
                    }
                }
                index++;
            }

            //end of Date search

            if (!string.IsNullOrEmpty(searchString))
            {
                visitors = visitors.Where(s => s.Nationality.Contains(searchString)); // Lambda Expression
            }

            if (!string.IsNullOrEmpty(visitorGender))
            {
                visitors = visitors.Where(x => x.Gender == visitorGender);
            }

            //gender
            visitorViewModel.GenderInts = myGenderInts;
            visitorViewModel.MaleNum    = myMaleNum;
            visitorViewModel.FemaleNum  = myFemaleNum;
            //nationality
            visitorViewModel.NationalityInts = myNationalityInts;
            //Age
            visitorViewModel.AgeInts = myAgeInts;
            //date
            visitorViewModel.DateInts = myDateInts;


            ///////////////////////////////new chart.js for Date


            List <string>  DataList_labels = new List <string>();
            IList <double> DataList_values = new List <double>();

            foreach (SelectListItem item in visitorViewModel.DateList)
            {
                DataList_labels.Add(item.Text);
            }

            foreach (Int32 item in visitorViewModel.DateInts)
            {
                double value = item;
                DataList_values.Add(value);
            }

            createNewChart(DataList_labels, DataList_values, "line", "Visits per Date", "DateChart");

            ///////////////////////////////new chart.js for Nationality
            List <string>  NationalityList_labels = new List <string>();
            IList <double> NationalityList_values = new List <double>();

            foreach (SelectListItem item in visitorViewModel.NationalityList)
            {
                NationalityList_labels.Add(item.Text);
            }

            foreach (Int32 item in visitorViewModel.NationalityInts)
            {
                double value = item;
                NationalityList_values.Add(value);
            }

            createNewChart(NationalityList_labels, NationalityList_values, "bar", "Visits per Nationality", "NationalityChart");
            ///////////////////////////////new chart.js for Age
            List <string>  AgeList_labels = new List <string>();
            IList <double> AgeList_values = new List <double>();

            foreach (SelectListItem item in visitorViewModel.AgeList)
            {
                AgeList_labels.Add(item.Text);
            }

            foreach (Int32 item in visitorViewModel.AgeInts)
            {
                double value = item;
                AgeList_values.Add(value);
            }

            createNewChart(AgeList_labels, AgeList_values, "line", "Visits per Age", "AgeChart");

            ///////////////////////////////new chart.js for Gender
            List <string>  GenderList_labels = new List <string>();
            IList <double> GenderList_values = new List <double>();

            foreach (SelectListItem item in visitorViewModel.GendersList)
            {
                GenderList_labels.Add(item.Text);
            }

            foreach (Int32 item in visitorViewModel.GenderInts)
            {
                double value = item;
                GenderList_values.Add(value);
            }

            createNewChart(GenderList_labels, GenderList_values, "pie", "Visits per Gender", "GenderChart");
            /// end new chart.js



            return(View(visitorViewModel));
        }