private IEnumerable<RunningTrainActualStop> GetActualStops(DbConnection connection, IEnumerable<Guid> liveTrainIds)
{
if (!liveTrainIds.Any())
return Enumerable.Empty<RunningTrainActualStop>();
const string sql = @"
SELECT [LiveTrainStop].[TrainId]
,[LiveTrainStop].[EventTypeId] AS [EventType]
,[LiveTrainStop].[PlannedTimestamp]
,[LiveTrainStop].[ActualTimestamp]
,[LiveTrainStop].[Platform]
,[LiveTrainStop].[Line]
,[LiveTrainStop].[ScheduleStopNumber]
,[LiveTrainStop].[LiveTrainStopSourceId] AS [Source]
,[Tiploc].[TiplocId]
,[Tiploc].[Tiploc]
,[Tiploc].[Nalco]
,[Tiploc].[Description]
,[Tiploc].[Stanox]
,[Tiploc].[CRS]
,[Station].[StationName]
,[Station].[Location].[Lat] AS [Lat]
,[Station].[Location].[Long] AS [Lon]
FROM [LiveTrainStop]
INNER JOIN [Tiploc] ON [LiveTrainStop].[ReportingTiplocId] = [Tiploc].[TiplocId]
LEFT JOIN [Station] ON [Station].[TiplocId] = [Tiploc].[TiplocId]
WHERE [LiveTrainStop].[TrainId] IN @liveTrainIds";
return connection.Query<RunningTrainActualStop, StationTiploc, RunningTrainActualStop>(
sql,
(st, t) =>
{
st.Tiploc = t;
return st;
},
new { liveTrainIds },
splitOn: "TiplocId");
}