// GROUP BY OgdLinien.Id, OgdLinien.Bezeichnung public async Task<int> CreateLookupTableAsync() { var haltestellen = await _connection.Table<OgdHaltestelle>() .ToListAsync() .ConfigureAwait(false); var toInsert = new List<Haltestelle>(); foreach (var h in haltestellen) { var result = await _connection .QueryAsync<LinienAtHaltestelleModel>(String.Format(LinienAtHaltestelleQuery, h.Id)) .ConfigureAwait(false); var groupedLinien = (from model in result group model by new { model.Id, model.Bezeichnung } into g select new { g.Key.Id, g.Key.Bezeichnung }).ToList(); string linienDisplay = String.Join(", ", groupedLinien.Select(r => r.Bezeichnung)); string linienIds = String.Join(",", groupedLinien.Select(r => r.Id)); // Take only records where RblNummer exists string rblNummern = String.Join(",", result .Where(r => !String.IsNullOrWhiteSpace(r.RblNummer)) .Select(r => r.RblNummer)); // eg.Abdsdorf-Hippersdorf S Bahn has no Steige if (!String.IsNullOrWhiteSpace(rblNummern)) { var haltstelle = new Haltestelle() { Id = h.Id, Diva = h.Diva, Bezeichnung = h.Bezeichnung, Longitude = h.Longitude, Latitude = h.Latitude, Linien = linienDisplay, LinienIds = linienIds, RblNummern = rblNummern }; toInsert.Add(haltstelle); } else { Debug.WriteLine(h.Bezeichnung + " was omitted because of missing Steige"); } } return await _connection.InsertAllAsync(toInsert).ConfigureAwait(false); }
public async Task<MonitorInformation> RetrieveMonitorInformationAsync(Haltestelle haltestelle) { var rbls = RblNummernStringToIntList(haltestelle.RblNummern); if (!rbls.Any()) return new MonitorInformation(MonitorInformationErrorCode.RblNotSpecified); var schnittstelle = new WienerLinien.Api.Realtime.EchtzeitdatenSchnittstelle(); schnittstelle.InitializeApi(_apiKey); var response = await schnittstelle .GetMonitorInformationAsync(rbls, null) .ConfigureAwait(false); return response; }