public async STT.Task <ViewModels.ScenarioTemplate> CreateAsync(ViewModels.ScenarioTemplate scenarioTemplate, CancellationToken ct) { if (!(await _authorizationService.AuthorizeAsync(_user, null, new ContentDeveloperRequirement())).Succeeded) { throw new ForbiddenException(); } scenarioTemplate.DateCreated = DateTime.UtcNow; var scenarioTemplateEntity = _mapper.Map <ScenarioTemplateEntity>(scenarioTemplate); //TODO: add permissions // var scenarioTemplateAdminPermission = await _context.Permissions // .Where(p => p.Key == PlayerClaimTypes.ScenarioTemplateAdmin.ToString()) // .FirstOrDefaultAsync(); // if (scenarioTemplateAdminPermission == null) // throw new EntityNotFoundException<Permission>($"{PlayerClaimTypes.ScenarioTemplateAdmin.ToString()} Permission not found."); _context.ScenarioTemplates.Add(scenarioTemplateEntity); await _context.SaveChangesAsync(ct); scenarioTemplate = await GetAsync(scenarioTemplateEntity.Id, ct); _engineHub.Clients.All.SendAsync(EngineMethods.ScenarioTemplateCreated, scenarioTemplate); return(scenarioTemplate); }
public async STT.Task <ViewModels.ScenarioTemplate> UpdateAsync(Guid id, ViewModels.ScenarioTemplate scenarioTemplate, CancellationToken ct) { if (!(await _authorizationService.AuthorizeAsync(_user, null, new ContentDeveloperRequirement())).Succeeded) { throw new ForbiddenException(); } var scenarioTemplateToUpdate = await _context.ScenarioTemplates.SingleOrDefaultAsync(v => v.Id == id, ct); if (scenarioTemplateToUpdate == null) { throw new EntityNotFoundException <SAVM.ScenarioTemplate>(); } scenarioTemplate.CreatedBy = scenarioTemplateToUpdate.CreatedBy; scenarioTemplate.DateCreated = scenarioTemplateToUpdate.DateCreated; scenarioTemplate.DateModified = DateTime.UtcNow; _mapper.Map(scenarioTemplate, scenarioTemplateToUpdate); _context.ScenarioTemplates.Update(scenarioTemplateToUpdate); await _context.SaveChangesAsync(ct); scenarioTemplate = await GetAsync(scenarioTemplateToUpdate.Id, ct); _engineHub.Clients.All.SendAsync(EngineMethods.ScenarioTemplateUpdated, scenarioTemplate); return(scenarioTemplate); }