public async Task <ILoadedReport> LoadAsync(Guid competitionId, OptionalReportColumns optionalColumns) { var book = new ReportBook(); using (var context = contextFactory()) { var competition = await context.Competitions.FirstOrDefaultAsync(c => c.Id == competitionId); if (competition == null) { throw new CompetitionNotFoundException(); } book.DocumentName = string.Format(Resources.DrawTitle, competition.Name); foreach (var distance in await context.Distances.Where(d => d.CompetitionId == competitionId).OrderBy(d => d.Number).ToListAsync()) { Report report = null; switch (distance.Discipline) { case "SpeedSkating.LongTrack.PairsDistance.Individual": report = await DrawReportLoader <DrawReport> .LoadAsync(context, competitionId, distance.Id, optionalColumns); break; case "SpeedSkating.LongTrack.PairsDistance.TeamPursuit": case "SpeedSkating.LongTrack.PairsDistance.TeamSprint": report = await DrawReportLoader <TeamDrawReport> .LoadAsync(context, competitionId, distance.Id, optionalColumns); break; case "SpeedSkating.LongTrack.MassStartDistance": report = await MassStartDrawReportLoader.LoadAsync(context, competitionId, distance.Id, optionalColumns); break; } var pairsDrawReport = report as IPairsDrawReport; if (pairsDrawReport?.Pairs.Count() == 0) { continue; } book.Reports.Add(report); } } if (book.Reports.Count == 0) { return(null); } return(new TelerikLoadedReport(book)); }
public static async Task <Report> LoadAsync(ICompetitionContext context, Guid competitionId, Guid distanceId, int length, OptionalReportColumns optionalColumns) { if (length <= 1500) { return(await DrawReportLoader <DrawFillIn4Report> .LoadAsync(context, competitionId, distanceId, optionalColumns)); } if (length <= 5000) { return(await DrawReportLoader <DrawFillIn13Report> .LoadAsync(context, competitionId, distanceId, optionalColumns)); } if (length <= 10000) { return(await DrawReportLoader <DrawFillIn25Report> .LoadAsync(context, competitionId, distanceId, optionalColumns)); } return(null); }