public ActionResult GenerateDonorReport(DonorReportSetupVideModel reportSetup) { var donors = reportSetup.AuctionYearFilter == 0 ? Mapper.Map<IEnumerable<Donor>, IEnumerable<DonorReportViewModel>>(repo.GetDonors()).ToList() : Mapper.Map<IEnumerable<Donor>, IEnumerable<DonorReportViewModel>>(repo.GetDonors(reportSetup.AuctionYearFilter)).ToList(); donors = ApplyDonorFilters(donors, reportSetup); if (reportSetup.BusinessType == false) donors.Where(x => x.DonorType == "Business").ToList().ForEach(x => donors.Remove(x)); if (reportSetup.ParentType == false) donors.Where(x => x.DonorType == "Parent").ToList().ForEach(x => donors.Remove(x)); var reportHtml = new StringBuilder(); reportHtml.AppendLine("<h3>" + reportSetup.ReportTitle + "</h3>"); reportHtml.AppendLine("<table class=\"customReport\">"); reportHtml.AppendLine("<tbody>"); var selectedColumns = GetSelectedColumns(reportSetup); BuildHeaders(selectedColumns, reportHtml, reportSetup.IncludeRowNumbers); BuildReportBody(selectedColumns, donors, reportHtml, reportSetup.IncludeRowNumbers); reportHtml.AppendLine("</tbody>"); reportHtml.AppendLine("</table>"); var result = new ContentResult() { Content = reportHtml.ToString() }; return result; }
private static List<DonorReportViewModel> ApplyDonorFilters(List<DonorReportViewModel> donors, DonorReportSetupVideModel reportSetup) { if (!string.IsNullOrEmpty(reportSetup.GeoLocationFilter)) donors.Where(x => x.GeoLocation == null || !x.GeoLocation.ToLower().Contains(reportSetup.GeoLocationFilter.ToLower())) .ToList() .ForEach(x => donors.Remove(x)); if (!string.IsNullOrEmpty(reportSetup.ProcurerFilter)) donors.Where(x => x.Procurer == null || !x.Procurer.ToLower().Contains(reportSetup.ProcurerFilter.ToLower())) .ToList() .ForEach(x => donors.Remove(x)); if (!string.IsNullOrEmpty(reportSetup.DonatesFilter)) donors.Where(x => x.Donates == null || !x.Donates.ToLower().Contains(reportSetup.DonatesFilter.ToLower())) .ToList() .ForEach(x => donors.Remove(x)); return donors; }