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