TrainNotifier.Service.TrainMovementRepository.GetActualStops C# (CSharp) Method

GetActualStops() private method

private GetActualStops ( DbConnection connection, IEnumerable liveTrainIds ) : IEnumerable
connection System.Data.Common.DbConnection
liveTrainIds IEnumerable
return IEnumerable
        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");
        }