public static HseapSummaryModel HseapDetailedData(CC.Data.ccEntities db, CC.Data.Services.IPermissionsBase permissions, int id) { var result = db.MainReports.Where(permissions.MainReportsFilter) .Select(f => new HseapSummaryModel { Id = f.Id, Start = f.Start, End = f.End, AppId = f.AppBudget.AppId, }) .SingleOrDefault(f => f.Id == id); if (result == null) { throw new ArgumentException("Main report not found"); } var mrs = from sr in db.SubReports.Where(permissions.SubReportsFilter) where sr.MainReportId == result.Id join er in db.EmergencyReports.Where(permissions.EmergencyReportsFilter) on sr.Id equals er.SubReportId group er by new { MainReportId = sr.MainReportId, er.TypeId } into erg select new { MainReportId = erg.Key.MainReportId, TypeId = erg.Key.TypeId, ClientsCount = erg.Select(f => f.ClientId).Distinct().Count(), GrantsCount = erg.Count(), TotalAmount = ((decimal?)erg.Sum(f => f.Total ?? 0) ?? 0) }; var apps = from mr in db.MainReports.Where(permissions.MainReportsFilter).Where(MainReport.CurrentOrSubmitted(id)) where mr.AppBudget.AppId == result.AppId join sr in db.SubReports.Where(permissions.SubReportsFilter) on mr.Id equals sr.MainReportId join er in db.EmergencyReports.Where(permissions.EmergencyReportsFilter) on sr.Id equals er.SubReportId group er by new { AppId = mr.AppBudget.AppId, TypeId = er.TypeId } into erg select new { AppId = erg.Key.AppId, TypeId = erg.Key.TypeId, ClientsCount = erg.Select(f => f.ClientId).Distinct().Count(), GrantsCount = erg.Count(), TotalAmount = ((decimal?)erg.Sum(f => f.Total ?? 0) ?? 0) }; var q = from t in db.EmergencyReportTypes join a in mrs on t.Id equals a.TypeId into mrsg from a in mrsg.DefaultIfEmpty() join b in apps on t.Id equals b.TypeId into appsg from b in appsg.DefaultIfEmpty() select new DataRow { TypeId = t.Id, TypeName = t.Name, TypeDescription = t.Description, ReportSummary = new DataRowSummary { ClientsCount = ((int?)a.ClientsCount) ?? 0, GrantsCount = ((int?)a.GrantsCount) ?? 0, TotalAmount = ((decimal?)a.TotalAmount) ?? 0 }, AppSummary = new DataRowSummary { ClientsCount = ((int?)b.ClientsCount) ?? 0, GrantsCount = ((int?)b.GrantsCount) ?? 0, TotalAmount = ((decimal?)b.TotalAmount) ?? 0 } }; result.Data = q.ToList(); var mrst = from sr in db.SubReports.Where(permissions.SubReportsFilter) where sr.MainReportId == result.Id join er in db.EmergencyReports.Where(permissions.EmergencyReportsFilter) on sr.Id equals er.SubReportId group er by new { MainReportId = sr.MainReportId } into erg select new { MainReportId = erg.Key.MainReportId, ClientsCount = erg.Select(f => f.ClientId).Distinct().Count(), GrantsCount = erg.Count(), TotalAmount = ((decimal?)erg.Sum(f => f.Total ?? 0) ?? 0) }; var appst = from mr in db.MainReports.Where(permissions.MainReportsFilter).Where(MainReport.CurrentOrSubmitted(id)) where mr.AppBudget.AppId == result.AppId join sr in db.SubReports.Where(permissions.SubReportsFilter) on mr.Id equals sr.MainReportId join er in db.EmergencyReports.Where(permissions.EmergencyReportsFilter) on sr.Id equals er.SubReportId group er by new { AppId = mr.AppBudget.AppId } into erg select new { AppId = erg.Key.AppId, ClientsCount = erg.Select(f => f.ClientId).Distinct().Count(), GrantsCount = erg.Count(), TotalAmount = ((decimal?)erg.Sum(f => f.Total ?? 0) ?? 0) }; result.TotalsRow = new DataRow { TypeName = "TOTAL", TypeId = 0, TypeDescription = null, ReportSummary = mrst.Select(f => new DataRowSummary { ClientsCount = f.ClientsCount, GrantsCount = f.GrantsCount, TotalAmount = f.TotalAmount }).FirstOrDefault(), AppSummary = appst.Select(f => new DataRowSummary { ClientsCount = f.ClientsCount, GrantsCount = f.GrantsCount, TotalAmount = f.TotalAmount }).FirstOrDefault() }; return(result); }
public static IEnumerable <DataRowExportRow> HseapDetailedExportData(CC.Data.ccEntities db, CC.Data.Services.IPermissionsBase permissions, int id) { var data = HseapDetailedData(db, permissions, id); var result = data.Data.Select(f => new DataRowExportRow { sds = data.Start.ToMonthString(), eds = data.End.AddDays(-1).ToMonthString(), tn = f.TypeName + (string.IsNullOrWhiteSpace(f.TypeDescription) ? string.Empty : string.Format("({0})", f.TypeDescription)), ccc = f.ReportSummary.ClientsCount, cgc = f.ReportSummary.GrantsCount, cta = f.ReportSummary.TotalAmount, acc = f.AppSummary.ClientsCount, agc = f.AppSummary.GrantsCount, ata = f.AppSummary.TotalAmount }).ToList(); result.AddRange(new[] { data.TotalsRow }.Select(f => new DataRowExportRow { sds = data.Start.ToMonthString(), eds = data.End.AddDays(-1).ToMonthString(), tn = "Total", ccc = f.ReportSummary == null ? 0 : f.ReportSummary.ClientsCount, cgc = f.ReportSummary == null ? 0 : f.ReportSummary.GrantsCount, cta = f.ReportSummary == null ? 0 : f.ReportSummary.TotalAmount, acc = f.AppSummary == null ? 0 : f.AppSummary.ClientsCount, agc = f.AppSummary == null ? 0 : f.AppSummary.GrantsCount, ata = f.AppSummary == null ? 0 : f.AppSummary.TotalAmount })); return(result); }
public static IQueryable <HseapDetailedRow> HseapDetailedData(CC.Data.ccEntities db, CC.Data.Services.IPermissionsBase permissions, int id) { var source = from er in db.EmergencyReports.Where(permissions.EmergencyReportsFilter) where er.SubReport.MainReportId == id select new HseapDetailedRow { DateOfGrant = er.ReportDate, ClientId = er.ClientId, LastName = er.Client.LastName, FirstName = er.Client.FirstName, NationalId = er.Client.NationalId, Dob = er.Client.BirthDate, CatCode = er.EmergencyReportType.Name, PurposeOfGrant = er.Remarks, Amount = er.Amount, NaziPersecutionDetails = er.Client.NaziPersecutionDetails, TotalAmount = (er.Amount ?? 0) + er.Discretionary, }; return(source); }