public async Task <contracts::RunbookTemplate> GetRunbookTemplateAsync(contracts::RunbookTemplate request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var stopwatch = DataAccessBase.StartStopwatch(); using (var context = this.contextCreator()) { var query = context.RunbookTemplates .Include("RunbookSteps") .Include("RunbookSteps.RunbookStepType") .Include("RunbookSteps.RunbookStepStatuses") .Include("RunbookSteps.RunbookStepPbis") .Include("RunbookSteps.Teams") .Include("RunbookSteps.Developers") .Include("RunbookSteps.Resources") .AsQueryable(); if (request.Id > 0) { query = query.Where(p => p.Id == request.Id); } var data = await query.Select(a => a).FirstOrDefaultAsync().ConfigureAwait(false); data.RunbookSteps = (from o in data.RunbookSteps select o).OrderBy(o => o.GroupNumber).ThenBy(o => o.StepNumber).ToList(); var mapped = Mapper.Map <entities::RunbookTemplate, contracts::RunbookTemplate>(data); this.TraceSource.TraceEvent(TraceEventType.Information, String.Format("COMPLETE: Name: {0}.", Text.GetStringInfo(request.Name)), stopwatch.Elapsed, TraceStatus.Success, new Dictionary <String, object> { { "Request", request } }); return(mapped); } }
// ---------------------------------------------------------- #region GetRunbookTemplatesAsync public async Task <Page <contracts::RunbookTemplate> > GetRunbookTemplatesAsync(contracts::RunbookTemplate request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var stopwatch = DataAccessBase.StartStopwatch(); using (var context = this.contextCreator()) { var query = context.RunbookTemplates.AsQueryable(); if (!String.IsNullOrWhiteSpace(request.Name)) { query = query.Where(p => p.Name.Contains(request.Name)); } var totalRecordCount = query.Count(); if (totalRecordCount == 0) { return(new Page <contracts::RunbookTemplate> { Items = new List <contracts::RunbookTemplate>(0) }); } var sanitizedPagingInfo = request.Paging.SanitizePaging(); var data = await query.Select(a => a).TakePage(sanitizedPagingInfo).ToListAsync().ConfigureAwait(false); var mapped = Mapper.Map <List <entities::RunbookTemplate>, List <contracts::RunbookTemplate> >(data); var page = mapped.ToPage(totalRecordCount, sanitizedPagingInfo); this.TraceSource.TraceEvent(TraceEventType.Information, String.Format("COMPLETE: Name: {0}.", Text.GetStringInfo(request.Name)), stopwatch.Elapsed, TraceStatus.Success, new Dictionary <String, object> { { "Request", request } }); return(page); } }