Beispiel #1
0
        public async Task ExportAsync(Guid competitionId, Stream stream, CultureInfo culture)
        {
            var data = new VantageSyncData();

            using (var context = contextFactory())
            {
                data.Competition = await context.Competitions
                                   .Include(c => c.ReportTemplate.Logos)
                                   .Include(c => c.CompetitorLists.Select(cl => cl.Competitors.Select(co => co.DistanceCombinations)))
                                   .Include(c => c.Distances.Select(d => d.Races.Select(r => r.Results)))
                                   .Include(c => c.Distances.Select(d => d.Races.Select(r => r.Times)))
                                   .Include(c => c.Distances.Select(d => d.Races.Select(r => r.Laps)))
                                   .Include(c => c.Distances.Select(d => d.Races.Select(r => r.Passings)))
                                   .Include(c => c.Distances.Select(d => d.DistancePointsTable.Points))
                                   .Include(c => c.DistanceCombinations.Select(dc => dc.Distances))
                                   .FirstOrDefaultAsync(c => c.Id == competitionId);

                await context.TeamCompetitorMembers
                .Include(tcm => tcm.Member)
                .Where(tcm => tcm.Team.List.CompetitionId == competitionId).LoadAsync();

                var projection = await context.Competitors.OfType <PersonCompetitor>()
                                 .Where(p => p.List.CompetitionId == competitionId)
                                 .Select(p => new
                {
                    p.Person,
                    Licenses = p.Person.Licenses.Where(l => p.List.Competition.Discipline.StartsWith(l.Discipline))
                })
                                 .ToListAsync();

                data.People = projection.Select(p => p.Person).ToList();
            }

            VantageXml.Save(data, stream);
        }
Beispiel #2
0
 public static void Save(VantageSyncData data, Stream stream)
 {
     using (stream)
         using (var memoryStream = new MemoryStream())
         {
             Serializer.WriteObject(memoryStream, data);
             memoryStream.Position = 0;
             memoryStream.CopyTo(stream);
             stream.Flush();
         }
 }