private async Task <Speaker[]> GetSpeakersAsync() { using (var dbx = new ContentsDbEntities()) { return(await dbx.Speaker.Where(s => s.SpeakerId < 500).OrderBy(s => s.Order).ToArrayAsync()); } }
/// <summary> /// データベースからセッション情報の取得を行います。 /// </summary> /// <param name="dbx"></param> /// <returns></returns> private async Task <Session[]> GetSessionsAsync(ContentsDbEntities dbx) { return(await dbx.Session .Where(s => string.IsNullOrEmpty(s.SessionNo3) == false) .Include("Author.Speaker") .Include("SessionGroup") .ToArrayAsync()); }
/// <summary> /// タイムテーブルに表示するセッション情報の取得を行います。 /// </summary> /// <returns></returns> private async Task <SessionGroup[]> GetTimetableSessionInfos() { using (var dbx = new ContentsDbEntities()) { return(await dbx.SessionGroup .Include("Session.Author.Speaker") .OrderBy(s => s.SessionGroupId) .ToArrayAsync()); } }
/// <summary> /// Speakerの主要セッションを取得します。 /// </summary> /// <remarks>主要なセッションの定義はスピーカーの一番最初のセッション</remarks> /// <param name="speaker"></param> /// <returns></returns> private async Task <Session> GetPrimarySessionBySpeakerTask(Speaker speaker) { using (var dbx = new ContentsDbEntities()) { var session = await dbx.Session .Where(s => s.Author.Any(a => a.SpeakerId == speaker.SpeakerId) && string.IsNullOrEmpty(s.SessionNo3) == false) .OrderBy(s => s.SessionStart) .FirstOrDefaultAsync(); return(session); } }
/// <summary> /// Session.mdの生成を行います。 /// </summary> /// <param name="sessionsDirectory"></param> /// <returns></returns> public async Task <bool> CreateSessionsAsync(string sessionsDirectory) { if (Directory.Exists(sessionsDirectory)) { Directory.Delete(sessionsDirectory, true); } Directory.CreateDirectory(sessionsDirectory); using (var dbx = new ContentsDbEntities()) { var sessions = await GetSessionsAsync(dbx); foreach (var session in sessions) { await CreateSessionFileAsync(sessionsDirectory, session); } } return(true); }