BlueCollar.SQLiteRepository.GetSchedules C# (CSharp) Method

GetSchedules() public method

Gets a collection of schedules and their related scheduled jobs for the given application name.
public GetSchedules ( string applicationName, IDbTransaction transaction ) : IEnumerable
applicationName string The name of the application to get schedules for.
transaction IDbTransaction The transaction to use, if applicable.
return IEnumerable
        public IEnumerable<ScheduleRecord> GetSchedules(string applicationName, IDbTransaction transaction)
        {
            const string Sql =
            @"SELECT s.*, sj.*
            FROM [BlueCollarSchedule] s
            LEFT OUTER JOIN [BlueCollarScheduledJob] sj ON s.[Id] = sj.[ScheduleId]
            WHERE
            s.[ApplicationName] = @ApplicationName
            ORDER BY sj.[Number];";

            Dictionary<long, ScheduleRecord> lookup = new Dictionary<long, ScheduleRecord>();
            List<ScheduleRecord> schedules = new List<ScheduleRecord>();

            this.connection.Query<ScheduleRecord, ScheduledJobRecord, ScheduleRecord>(
                Sql,
                (s, sj) =>
                {
                    ScheduleRecord schedule;

                    if (!lookup.ContainsKey(s.Id.Value))
                    {
                        lookup[s.Id.Value] = s;
                        schedules.Add(s);
                        schedule = s;
                    }
                    else
                    {
                        schedule = lookup[s.Id.Value];
                    }

                    if (sj != null)
                    {
                        schedule.ScheduledJobs.Add(sj);
                        sj.Schedule = schedule;
                    }

                    return schedule;
                },
                new { ApplicationName = applicationName },
                transaction,
                true,
                "Id",
                null,
                null);

            return schedules;
        }