public ScenarioSession GetActiveScenarioSession(string userSubject) { _logger.Info($"{nameof(GetActiveScenarioSession)}({userSubject})"); try { if (_activeScenarios.TryGetValue(userSubject, out ScenarioMonitoringData scenarioMonitoringData)) { return(_dataAccessService.GetScenarioSession(scenarioMonitoringData.ScenarioSessionId)); } ScenarioSession scenarioSession = _dataAccessService.GetScenarioSessions(userSubject).FirstOrDefault(); if (scenarioSession != null) { ResumeScenario(userSubject, scenarioSession.ScenarioId); } return(scenarioSession); } catch (Exception ex) { _logger.Error($"{nameof(GetActiveScenarioSession)}({userSubject})", ex); throw; } }
public ScenarioSession AbandonScenario(string userSubject, int id) { _logger.Info($"{nameof(AbandonScenario)}({userSubject}, {id})"); try { ScenarioDefinition scenarioDefinition = _scenarios[id]; ScenarioSession scenarioSession = _dataAccessService.GetScenarioSessions(userSubject).FirstOrDefault(s => s.ScenarioId == id); if (scenarioSession == null) { return(null); } IEnumerable <Client.DataLayer.Model.Scenarios.ScenarioAccount> scenarioAccounts = _dataAccessService.GetScenarioAccounts(scenarioSession.ScenarioSessionId); foreach (var scenarioAccount in scenarioAccounts) { _executionContextManager.UnregisterExecutionServices(scenarioAccount.AccountId); } _activeScenarios.TryRemove(userSubject, out ScenarioMonitoringData scenarioMonitoringData); return(scenarioSession); } catch (Exception ex) { _logger.Error($"Failed {nameof(AbandonScenario)}({userSubject}, {id})", ex); throw; } }
public ScenarioSession ResumeScenario(string userSubject, int id) { _logger.Info($"{nameof(ResumeScenario)}({userSubject}, {id})"); try { ScenarioSession scenarioSession = _dataAccessService.GetScenarioSessions(userSubject).FirstOrDefault(s => s.ScenarioId == id); if (scenarioSession == null) { throw new ScenarioSessionNotFoundException(userSubject, id); } bool needInitialize = false; if (!_activeScenarios.TryGetValue(userSubject, out ScenarioMonitoringData scenarioMonitoringData)) { needInitialize = true; } else if (scenarioMonitoringData.ScenarioId != id) { needInitialize = true; } if (needInitialize) { scenarioMonitoringData = new ScenarioMonitoringData { ScenarioId = id, ScenarioSessionId = scenarioSession.ScenarioSessionId, ActivationTime = scenarioSession.StartTime, LastUseTime = DateTime.UtcNow }; _activeScenarios.AddOrUpdate(userSubject, scenarioMonitoringData, (k, v) => v); ScenarioDefinition scenarioDefinition = _scenarios[id]; IEnumerable <Client.DataLayer.Model.Scenarios.ScenarioAccount> scenarioAccounts = _dataAccessService.GetScenarioAccounts(scenarioSession.ScenarioSessionId); foreach (var scenarioAccount in scenarioAccounts) { AccountDescriptor account = _accountsService.GetById(scenarioAccount.AccountId); if (account.AccountType == AccountType.IdentityProvider || account.AccountType == AccountType.ServiceProvider) { AccountDescriptor accountDescriptor = _accountsService.Authenticate(scenarioAccount.AccountId, "qqq"); _executionContextManager.InitializeStateExecutionServices(accountDescriptor.AccountId, accountDescriptor.SecretSpendKey); } } } else { scenarioMonitoringData.LastUseTime = DateTime.UtcNow; } return(scenarioSession); } catch (Exception ex) { _logger.Error($"Failed {nameof(ResumeScenario)}({userSubject}, {id})", ex); throw; } }
public ActionResult <ScenarioDto> GetActiveScenario() { try { _logger.Info($"{nameof(GetActiveScenario)}()"); IEnumerable <ScenarioDefinition> scenarioDefinitions = _scenarioRunner.GetScenarioDefinitions(); ScenarioSession scenarioSession = _scenarioRunner.GetActiveScenarioSession(User.Identity.Name); if (scenarioSession != null) { ScenarioDefinition scenarioDefinition = scenarioDefinitions.FirstOrDefault(s => s.Id == scenarioSession.ScenarioId); return(new ScenarioDto { Name = scenarioDefinition.Name, Id = scenarioDefinition.Id.ToString(), IsActive = scenarioSession != null, CurrentStep = scenarioSession?.CurrentStep ?? 0, SessionId = scenarioSession?.ScenarioSessionId ?? 0, StartTime = scenarioSession?.StartTime ?? DateTime.MinValue, Steps = scenarioDefinition.Steps.Select(s => new ScenarioStepDto { Id = s.Id, Caption = s.Caption }).ToArray() }); } return(null); } catch (Exception ex) { _logger.Error($"Failed {nameof(GetActiveScenario)}()", ex); throw; } }
public IActionResult GetAll(long scenarioId = 0) { ScenarioSession scenarioSession = scenarioId > 0 ? _dataAccessService.GetScenarioSessions(User.Identity.Name).FirstOrDefault(s => s.ScenarioId == scenarioId) : null; if (scenarioSession != null) { IEnumerable <ScenarioAccount> scenarioAccounts = _dataAccessService.GetScenarioAccounts(scenarioSession.ScenarioSessionId); var serviceProviders = _accountsService.GetAll().Where(a => a.AccountType == AccountType.ServiceProvider && scenarioAccounts.Any(sa => sa.AccountId == a.AccountId)).Select(a => new ServiceProviderInfoDto { Id = a.AccountId.ToString(CultureInfo.InvariantCulture), Description = a.AccountInfo, Target = a.PublicSpendKey.ToHexString() }); return(Ok(serviceProviders)); } else { var serviceProviders = _accountsService.GetAll().Where(a => !a.IsPrivate && a.AccountType == AccountType.ServiceProvider).Select(a => new ServiceProviderInfoDto { Id = a.AccountId.ToString(CultureInfo.InvariantCulture), Description = a.AccountInfo, Target = a.PublicSpendKey.ToHexString() }); return(Ok(serviceProviders)); } }
private void CreateNewSession(ScenarioInfo info) { session?.UnregisterAllEvents(); //session.SetScoreSystem(NagaUtils.FindObjectOfType<IScoreSystem>()); This got removed because the TimeTrial mode doesn't include score session = new ScenarioSession(statUI, info); session.SetHitMissDeterminer(NagaUtils.FindObjectsOfType <IHitMissDeterminer>()[0]); //maybe have a global notifier like KillNotifier? TODO; session.SetTimerEvent(scenarioTimer.onTimerTicked); session.SetKillNotifier(KillNotifier.onKill); }
public ScenarioSession SetupScenario(string userSubject, int id) { _logger.Info($"{nameof(SetupScenario)}({userSubject}, {id})"); try { if (!_scenarios.ContainsKey(id)) { throw new ArgumentOutOfRangeException(nameof(id)); } if (_activeScenarios.TryRemove(userSubject, out ScenarioMonitoringData scenarioMonitoringData)) { AbandonScenario(userSubject, scenarioMonitoringData.ScenarioId); } ScenarioDefinition scenarioDefinition = _scenarios[id]; long scenarioSessionId = _dataAccessService.AddNewScenarionSession(userSubject, id); _dataAccessService.UpdateScenarioSessionStep(scenarioSessionId, 1); ScenarioSession scenarioSession = _dataAccessService.GetScenarioSession(scenarioSessionId); scenarioMonitoringData = new ScenarioMonitoringData { ScenarioId = id, ScenarioSessionId = scenarioSessionId, ActivationTime = scenarioSession.StartTime, LastUseTime = DateTime.UtcNow }; _activeScenarios.AddOrUpdate(userSubject, scenarioMonitoringData, (k, v) => scenarioMonitoringData); SetupIdentityProviders(scenarioDefinition, scenarioSessionId); SetupServiceProviders(scenarioDefinition, scenarioSessionId); SetupUsers(scenarioDefinition, scenarioSessionId); return(scenarioSession); } catch (Exception ex) { _logger.Error($"Failed {nameof(ResumeScenario)}({userSubject}, {id})", ex); throw; } }
public ActionResult <ScenarioDto> ResumeScenario(int scenarioId) { IEnumerable <ScenarioDefinition> scenarioDefinitions = _scenarioRunner.GetScenarioDefinitions(); ScenarioDefinition scenarioDefinition = scenarioDefinitions.FirstOrDefault(s => s.Id == scenarioId); ScenarioSession scenarioSession = _scenarioRunner.ResumeScenario(User.Identity.Name, scenarioId); return(Ok(new ScenarioDto { Name = scenarioDefinition.Name, Id = scenarioId.ToString(), IsActive = scenarioSession != null, CurrentStep = scenarioSession?.CurrentStep ?? 0, SessionId = scenarioSession?.ScenarioSessionId ?? 0, StartTime = scenarioSession?.StartTime ?? DateTime.MinValue, Steps = scenarioDefinition.Steps.Select(s => new ScenarioStepDto { Id = s.Id, Caption = s.Caption }).ToArray() })); }
private void SaveSessionName(EnterpriseTestContext context, Guid scenarioId) { if (!string.IsNullOrEmpty(sessionName_ComboBox.Text)) { ScenarioSession itemToSave = context.ScenarioSessions.FirstOrDefault(n => n.EnterpriseScenarioId == scenarioId && n.Name == sessionName_ComboBox.Text); if (itemToSave == null) { itemToSave = ScenarioSession.CreateScenarioSession(scenarioId, sessionName_ComboBox.Text, DateTime.Now); itemToSave.Notes = notes_TextBox.Text; context.AddToScenarioSessions(itemToSave); } else { if (!itemToSave.Notes.Equals(notes_TextBox.Text)) { itemToSave.Notes = notes_TextBox.Text; itemToSave.EditedDate = DateTime.Now; } } } }
public IActionResult GetAll(long scenarioId = 0, bool withPrivate = false, int ofTypeOnly = 0) { ScenarioSession scenarioSession = scenarioId > 0 ? _dataAccessService.GetScenarioSessions(User.Identity.Name).FirstOrDefault(s => s.ScenarioId == scenarioId) : null; if (scenarioSession != null) { IEnumerable <ScenarioAccount> scenarioAccounts = _dataAccessService.GetScenarioAccounts(scenarioSession.ScenarioSessionId); var accounts = _accountsService.GetAll() .Where(a => scenarioAccounts.Any(sa => sa.AccountId == a.AccountId)) .Select(a => _translatorsRepository.GetInstance <AccountDescriptor, AccountDto>().Translate(a)); return(Ok(accounts)); } else { var accounts = _accountsService.GetAll() .Where(a => (withPrivate || !a.IsPrivate) && (ofTypeOnly == 0 || (int)a.AccountType == ofTypeOnly)) .Select(a => _translatorsRepository.GetInstance <AccountDescriptor, AccountDto>().Translate(a)); return(Ok(accounts)); } }
public void ProgressScenario(string userSubject, int id, bool forward = true) { _logger.Debug($"{nameof(ProgressScenario)}({userSubject}, {id}, {forward})"); try { ScenarioSession scenarioSession = _dataAccessService.GetScenarioSessions(userSubject).FirstOrDefault(s => s.ScenarioId == id); if (scenarioSession == null) { throw new ScenarioSessionNotFoundException(userSubject, id); } if (forward) { _dataAccessService.UpdateScenarioSessionStep(scenarioSession.ScenarioSessionId, scenarioSession.CurrentStep + 1); } else { _dataAccessService.UpdateScenarioSessionStep(scenarioSession.ScenarioSessionId, scenarioSession.CurrentStep - 1); } ScenarioMonitoringData scenarioMonitoringData = _activeScenarios.GetOrAdd(userSubject, u => new ScenarioMonitoringData { ScenarioId = id, ScenarioSessionId = scenarioSession.ScenarioSessionId, ActivationTime = scenarioSession.StartTime, LastUseTime = DateTime.UtcNow }); scenarioMonitoringData.LastUseTime = DateTime.UtcNow; } catch (Exception ex) { _logger.Error($"Failed {nameof(ProgressScenario)}({userSubject}, {id}, {forward})", ex); throw; } }
public string GetScenarioCurrentStepContent(string userSubject, int id) { _logger.Debug($"{nameof(GetScenarioCurrentStepContent)}({userSubject}, {id})"); try { ScenarioDefinition scenarioDefinition = _scenarios[id]; ScenarioSession scenarioSession = _dataAccessService.GetScenarioSessions(userSubject).FirstOrDefault(s => s.ScenarioId == id); string path = Path.Combine(_scenariosConfiguration.ContentBasePath, id.ToString(), $"{scenarioSession.CurrentStep}.md"); if (File.Exists(path)) { string content = File.ReadAllText(path); return(content); } return(null); } catch (Exception ex) { _logger.Error($"Failed {nameof(GetScenarioCurrentStepContent)}({userSubject}, {id})", ex); throw; } }