public ActionResult Scenarios(string id) { var model = new ScenarioListViewModel(); if (string.IsNullOrEmpty(id)) { foreach (var scenarioGroup in _cardService.ScenarioGroups()) { model.ScenarioGroups.Add(new ScenarioGroupViewModel(scenarioGroup)); } } else { var scenario = _cardService.GetScenario(id); if (scenario == null) { return(HttpNotFound("I'm sorry Mario, your Princess is in another castle.\n\nNo scenario found matching this URL")); } model.Detail = new ScenarioViewModel(scenario); return(View(model)); } return(View(model)); }
public ScenarioService(ProductRepository productRepository, CardRepository cardRepository) { this.cardRepository = cardRepository; this.cards = cardRepository.Cards().ToList(); foreach (var card in this.cards.Where(x => !string.IsNullOrEmpty(x.EncounterSet))) { if (!cardsByEncounterSet.ContainsKey(card.EncounterSet)) { cardsByEncounterSet[card.EncounterSet] = new List <Card>(); } cardsByEncounterSet[card.EncounterSet].Add(card); } foreach (var group in productRepository.ProductGroups()) { if (group.MainProduct != null) { AddProduct(group.MainProduct, cards); } foreach (var product in group.ChildProducts) { AddProduct(product, cards); } } listViewModel = new ScenarioListViewModel(); var lookupCard = new Func <string, Card>((slug) => { return(cardRepository.FindBySlug(slug)); }); foreach (var scenarioGroup in ScenarioGroups()) { listViewModel.ScenarioGroups.Add(new ScenarioGroupViewModel(scenarioGroup, lookupCard)); } }
public ScenarioListViewModel GetAll() { var allScenarios = _scenarioRepository.Query() .Where(x => !x.IsDeleted) .ToList(); var allFolders = _folderRepository.Query() .Where(x => !x.IsDeleted) .ToList(); FolderViewModel AssembleFolder(Folder folder) { var folderScenarios = allScenarios .Where(x => x.FolderId.GetValueOrDefault() == folder.Id) .Select(ScenarioMapper.ToScenarioViewModel) .ToList(); var nestedFolders = allFolders .Where(x => x.ParentFolderId.GetValueOrDefault() == folder.Id) .Select(AssembleFolder) .ToList(); return(new FolderViewModel() { Id = folder.Id, ParentId = folder.ParentFolderId, Name = folder.Name, Folders = nestedFolders, Scenarios = folderScenarios }); } var folders = allFolders .Where(x => !x.ParentFolderId.HasValue) .Select(AssembleFolder) .ToList(); var rootScenarios = allScenarios .Where(x => !x.FolderId.HasValue) .Select(ScenarioMapper.ToScenarioViewModel) .ToList(); var trashScenarios = _scenarioRepository.Query() .Where(x => x.IsDeleted) .AsEnumerable() .Select(ScenarioMapper.ToScenarioViewModel) .ToList(); var scenarioList = new ScenarioListViewModel { Folders = folders, RootScenarios = rootScenarios, TrashScenarios = trashScenarios }; _scenarioExecutorService.FillExecutionResults(scenarioList); return(scenarioList); }
public void FillExecutionResults(ScenarioListViewModel scenarioList) { void FillFolderScenarios(FolderViewModel folder) { folder.Scenarios.ForEach(FillExecutionResult); folder.Folders.ForEach(FillFolderScenarios); } scenarioList.Folders.ForEach(FillFolderScenarios); scenarioList.RootScenarios.ForEach(FillExecutionResult); }