public ActionResult GenerateReportsFromSelectedProjects(GenerateReportsViewModel viewModel)
        {
            var reportTemplatePrimaryKey = (ReportTemplatePrimaryKey)viewModel.ReportTemplateID;
            var reportTemplate           = reportTemplatePrimaryKey.EntityObject;
            var selectedModelIDs         = viewModel.ProjectIDList;
            var reportTemplateGenerator  = new ReportTemplateGenerator(reportTemplate, selectedModelIDs);

            return(reportTemplateGenerator.GenerateAndDownload());
        }
        public PartialViewResult SelectReportToGenerateFromSelectedProjects(GenerateReportsViewModel viewModel)
        {
            // Get the list of projects and then order them by the order they were received from the post request
            var projectsList = HttpRequestStorage.DatabaseEntities.Projects.Where(x => viewModel.ProjectIDList.Contains(x.ProjectID)).ToList();

            projectsList = projectsList.OrderBy(p => viewModel.ProjectIDList.IndexOf(p.ProjectID)).ToList();
            var reportTemplateSelectListItems =
                HttpRequestStorage.DatabaseEntities.ReportTemplates.ToList().Where(x => x.ReportTemplateModel.ReportTemplateModelID == ReportTemplateModel.Project.PrimaryKey).OrderBy(x => x.DisplayName).ToSelectList(x => x.ReportTemplateID.ToString(),
                                                                                                                                                                                                                        x => $"{x.DisplayName} - {x.Description}");
            var viewData = new GenerateReportsViewData(CurrentFirmaSession, projectsList, reportTemplateSelectListItems);

            return(RazorPartialView <GenerateReports, GenerateReportsViewData, GenerateReportsViewModel>(viewData, viewModel));
        }