Exemplo n.º 1
0
        public async Task <contracts::ServiceResponse> UpsertCourseDemoAsync(contracts::CourseDemo request)
        {
            var stopwatch = DataAccessBase.StartStopwatch();

            var response = new contracts::ServiceResponse();

            using (var context = this.contextCreator())
            {
                var item = await(from o in context.CourseDemoes where o.Id == request.Id select o).FirstOrDefaultAsync().ConfigureAwait(false);

                if (item == null)
                {
                    item = context.CourseDemoes.Create();
                }

                item.Key       = request.Key;
                item.Title     = request.Title;
                item.WatchHref = request.WatchHref;
                item.AuthorId  = request.AuthorId;
                item.Length    = request.Length;
                item.Category  = request.Category;

                response.RecordsAffected = await context.SaveChangesAsync().ConfigureAwait(false);

                response.IsSuccessful = true;

                this.TraceSource.TraceEvent(TraceEventType.Information, "COMPLETE", stopwatch.Elapsed, TraceStatus.Success);

                return(response);
            }
        }
Exemplo n.º 2
0
        public async Task <contracts::ServiceResponse> InsertRunbookStepTeamsAsync(contracts::TemplateStepsRequest request)
        {
            var stopwatch = DataAccessBase.StartStopwatch();

            var serviceResponse = new contracts::ServiceResponse();

            using (var context = this.contextCreator())
            {
                const string sql = @"
                                            insert into [Runbook].[RunbookStepTeam]
                                            (
                                                   [RunbookStepId], 
                                                   [TeamId]
                                            )
                                            select @NewRunbookStepId, 
                                                   [TeamId]
                                              from [Runbook].[RunbookStepTeam]
                                             where [RunbookStepId] = @OldRunbookStepId
                                    ";

                object[] parameters =
                {
                    new SqlParameter {
                        ParameterName = "@NewRunbookStepId", Value = request.NewRunbookStepId
                    },
                    new SqlParameter {
                        ParameterName = "@OldRunbookStepId", Value = request.OldRunbookStepId
                    }
                };

                serviceResponse.RecordsAffected = await this.ExecuteAsync(entities => entities.Database.ExecuteSqlCommandAsync(sql, parameters));

                serviceResponse.IsSuccessful = true;

                serviceResponse.RecordsAffected = await context.SaveChangesAsync().ConfigureAwait(false);

                serviceResponse.IsSuccessful = true;

                this.TraceSource.TraceEvent(TraceEventType.Information, String.Format("COMPLETE: Template: {0}.", request.TemplateId), stopwatch.Elapsed, TraceStatus.Success, new Dictionary <String, object> {
                    { "Request", request }
                });
            }

            return(serviceResponse);
        }
Exemplo n.º 3
0
        public async Task <contracts::ServiceResponse> InsertRfcAsync(contracts::Rfc request)
        {
            var stopwatch = DataAccessBase.StartStopwatch();

            var serviceResponse = new contracts::ServiceResponse();

            // Convert Start and End Times
            // Convert Templates to Runbook Steps
            //  - Set the new RFC ID
            //  - Set Template ID's to ZERO

            using (var context = this.contextCreator())
            {
                // RFC
                //  - Save the RFC and get the ID

                var rfc = new Rfc()
                {
                    Number    = request.Number,
                    Name      = request.Name,
                    StartTime = request.StartTime,
                    EndTime   = request.EndTime,
                    ContactId = request.Contact.Id
                };

                context.Rfcs.Add(rfc);
                serviceResponse.RecordsAffected = await context.SaveChangesAsync().ConfigureAwait(false);

                // Runbook Steps
                //  - Save the Runbook Steps with the RFC ID

                foreach (var runbookTemplate in request.Templates)
                {
                    // Don't rely on the template coming from the UI - get from the database instead. Only the ID is really necessary - may refactor later.
                    var template = await this.GetRunbookTemplateAsync(new contracts.RunbookTemplate {
                        Id = runbookTemplate.Id
                    });

                    // Map the Contract Steps in the Template to the Entity Steps in the RFC
                    foreach (var c in template.RunbookSteps)
                    {
                        var runbookStep = new entities::RunbookStep
                        {
                            RfcId                 = rfc.Id,
                            GroupNumber           = c.GroupNumber,
                            StepNumber            = c.StepNumber,
                            Duration              = c.Duration,
                            Name                  = c.Name,
                            Description           = c.Description,
                            Notes                 = c.Notes,
                            RunbookStepStatusCode = c.RunbookStepStatusCode,
                            RunbookStepTypeCode   = c.RunbookStepTypeCode,
                            IsHtml                = c.IsHtml,
                            Time                  = c.Time,
                        };
                        context.RunbookSteps.Add(runbookStep);
                        serviceResponse.RecordsAffected = await context.SaveChangesAsync().ConfigureAwait(false);

                        var templateStepsRequest = new contracts::TemplateStepsRequest {
                            TemplateId = runbookTemplate.Id, OldRunbookStepId = c.Id, NewRunbookStepId = runbookStep.Id
                        };

                        // Save associated RunbookStep Developers, Pbis, Resources, and Teams...

                        serviceResponse = await this.InsertRunbookStepDevelopersAsync(templateStepsRequest);

                        serviceResponse = await this.InsertRunbookStepPbisAsync(templateStepsRequest);

                        serviceResponse = await this.InsertRunbookStepResourcesAsync(templateStepsRequest);

                        serviceResponse = await this.InsertRunbookStepTeamsAsync(templateStepsRequest);
                    }
                }

                serviceResponse.RecordsAffected = await context.SaveChangesAsync().ConfigureAwait(false);

                serviceResponse.IsSuccessful = true;

                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(serviceResponse);
        }