private void LoadSummaryReport()
        {
            var report = Db.Context.Respondents.ToList();

            if (cbYear.SelectedIndex != 0)
            {
                var year = int.Parse(years[cbYear.SelectedIndex]);
                report = report.Where(t => t.Schedule.Date.Year == year).ToList();
            }

            var items = new List <int>()
            {
                report.Count(t => t.Gender == "M"),
                report.Count(t => t.Gender == "F"),
                report.Count(t => t.Age >= 18 && t.Age <= 24),
                report.Count(t => t.Age >= 25 && t.Age <= 39),
                report.Count(t => t.Age >= 40 && t.Age <= 59),
                report.Count(t => t.Age >= 60),
                report.Count(t => t.CabinType == "Economy"),
                report.Count(t => t.CabinType == "Business"),
                report.Count(t => t.CabinType == "First Class"),
                report.Count(t => t.Arrival == "AUH"),
                report.Count(t => t.Arrival == "BAH"),
                report.Count(t => t.Arrival == "DOH"),
                report.Count(t => t.Arrival == "RUH"),
                report.Count(t => t.Arrival == "CAI")
            };

            SurveyDataSet.SurveyDataTable dt = new SurveyDataSet.SurveyDataTable();
            dt.AddSurveyRow("", "", 0, items.Sum(), items[0], items[1], items[2], items[3], items[4], items[5], items[6], items[7], items[8], items[9], items[10], items[11], items[12], items[13]);

            ReportDataSource rdsByDate = new ReportDataSource();
            SurveyDataSet    dataset   = new SurveyDataSet();

            dataset.BeginInit();

            rdsByDate.Name  = "DataSet1";
            rdsByDate.Value = dt;
            this.rvSummaryReport.LocalReport.DataSources.Clear();
            this.rvSummaryReport.LocalReport.DataSources.Add(rdsByDate);
            this.rvSummaryReport.LocalReport.ReportPath = "../../Model/SurveySummaryReport.rdlc";

            dataset.EndInit();

            rvSummaryReport.LocalReport.SetParameters(new ReportParameter("SampleSize", $"Sample size: {report.Count}"));
            rvSummaryReport.LocalReport.SetParameters(new ReportParameter("Year", $"Time: {years[cbYear.SelectedIndex]}"));

            rvSummaryReport.RefreshReport();
        }
        private void LoadDetailReport()
        {
            SetParameterForDetailReport();

            var surveys = Db.Context.Surveys.ToList();

            if (cbTimePeriod.SelectedIndex != 0)
            {
                var date = DateTime.Parse(times[cbTimePeriod.SelectedIndex]);
                surveys = surveys.Where(t => t.Respondent.Schedule.Date.Month == date.Month && t.Respondent.Schedule.Date.Year == date.Year).ToList();
            }

            if (chbGender.IsChecked.Value && cbGender.SelectedIndex != 0)
            {
                surveys = surveys.Where(t => t.Respondent.Gender != null).ToList();
            }
            if (chbAge.IsChecked.Value && cbAge.SelectedIndex != 0)
            {
                surveys = surveys.Where(t => t.Respondent.Age >= 18).ToList();
            }

            if (chbGender.IsChecked.Value && male == 0)
            {
                surveys = surveys.Where(t => !(t.Respondent.Gender == "M")).ToList();
            }
            if (chbGender.IsChecked.Value && female == 0)
            {
                surveys = surveys.Where(t => !(t.Respondent.Gender == "F")).ToList();
            }

            if (chbAge.IsChecked.Value && age18 == 0)
            {
                surveys = surveys.Where(t => !(t.Respondent.Age >= 18 && t.Respondent.Age <= 24)).ToList();
            }
            if (chbAge.IsChecked.Value && age25 == 0)
            {
                surveys = surveys.Where(t => !(t.Respondent.Age >= 25 && t.Respondent.Age <= 39)).ToList();
            }
            if (chbAge.IsChecked.Value && age40 == 0)
            {
                surveys = surveys.Where(t => !(t.Respondent.Age >= 40 && t.Respondent.Age <= 59)).ToList();
            }
            if (chbAge.IsChecked.Value && age60 == 0)
            {
                surveys = surveys.Where(t => !(t.Respondent.Age >= 60)).ToList();
            }

            SurveyDataSet.SurveyDataTable dt = new SurveyDataSet.SurveyDataTable();
            foreach (var ques in Db.Context.Questions.ToList())
            {
                foreach (var ans in Db.Context.Answers.Where(t => t.AnswerId != 0).ToList())
                {
                    var report = surveys.Where(t => t.AnswerId == ans.AnswerId && t.QuestionId == ques.QuestionId).ToList();
                    var items  = new List <int>()
                    {
                        report.Count(t => t.Respondent.Gender == "M") * male,
                        report.Count(t => t.Respondent.Gender == "F") * female,
                        report.Count(t => t.Respondent.Age >= 18 && t.Respondent.Age <= 24) * age18,
                        report.Count(t => t.Respondent.Age >= 25 && t.Respondent.Age <= 39) * age25,
                        report.Count(t => t.Respondent.Age >= 40 && t.Respondent.Age <= 59) * age40,
                        report.Count(t => t.Respondent.Age >= 60) * age60,
                        report.Count(t => t.Respondent.CabinType == "Economy"),
                        report.Count(t => t.Respondent.CabinType == "Business"),
                        report.Count(t => t.Respondent.CabinType == "First Class"),
                        report.Count(t => t.Respondent.Arrival == "AUH"),
                        report.Count(t => t.Respondent.Arrival == "BAH"),
                        report.Count(t => t.Respondent.Arrival == "DOH"),
                        report.Count(t => t.Respondent.Arrival == "RUH"),
                        report.Count(t => t.Respondent.Arrival == "CAI")
                    };

                    dt.AddSurveyRow(ques.Text, ans.Text, ans.AnswerId, items.Sum(), items[0], items[1], items[2], items[3], items[4], items[5], items[6], items[7], items[8], items[9], items[10], items[11], items[12], items[13]);
                }
            }

            ReportDataSource rdsDetail = new ReportDataSource();
            SurveyDataSet    dataset   = new SurveyDataSet();

            dataset.BeginInit();

            rdsDetail.Name  = "DataSet1";
            rdsDetail.Value = dt;
            this.rvDetailReport.LocalReport.DataSources.Clear();
            this.rvDetailReport.LocalReport.DataSources.Add(rdsDetail);
            this.rvDetailReport.LocalReport.ReportPath = "../../Model/SurveyDetailReport.rdlc";

            dataset.EndInit();

            rvDetailReport.LocalReport.SetParameters(new ReportParameter("Male", male.ToString()));
            rvDetailReport.LocalReport.SetParameters(new ReportParameter("Female", female.ToString()));
            rvDetailReport.LocalReport.SetParameters(new ReportParameter("Age18", age18.ToString()));
            rvDetailReport.LocalReport.SetParameters(new ReportParameter("Age25", age25.ToString()));
            rvDetailReport.LocalReport.SetParameters(new ReportParameter("Age40", age40.ToString()));
            rvDetailReport.LocalReport.SetParameters(new ReportParameter("Age60", age60.ToString()));

            this.rvDetailReport.RefreshReport();
        }