Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        // ----------------------------------------------------------

        #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);
            }
        }