private async Task <RequestSequenceViewModel> GetFullSequence(int id) { RequestSequenceEntity sequence = await _endpointRepository.GetRequestSequenceById(id); List <RequestEntity> requests = await _endpointRepository.GetExecutedRequestsBySequence(id); List <ResponseEntity> responses = await _endpointRepository.GetResponsesBySequence(id); List <SubstitutionEntity> substitutions = await _endpointRepository.GetSubstitutionsBySequence(id); List <RequestSequenceLabelEntity> labels = await _endpointRepository.GetRequestSequenceLabelsBySequence(id); requests.Sort(delegate(RequestEntity left, RequestEntity right) { return(left.sequence_position - right.sequence_position ?? 0); }); responses.Sort(delegate(ResponseEntity left, ResponseEntity right) { return(left.sequence_position - right.sequence_position ?? 0); }); RequestSequenceViewModel sequenceViewModel = new RequestSequenceViewModel(sequence); foreach (RequestEntity entity in requests) { var model = new RequestViewModel(entity); model.Sequence = sequenceViewModel; sequenceViewModel.Requests.Add(model); } foreach (ResponseEntity entity in responses) { var model = new ResponseViewModel(entity); model.Sequence = sequenceViewModel; sequenceViewModel.Responses.Add(model); } // Add labels foreach (RequestSequenceLabelEntity label in labels) { sequenceViewModel.Labels.Add(new RequestSequenceLabelViewModel(label)); } // Split substitutions. List <List <SubstitutionViewModel> > substitutionsGrouped = new List <List <SubstitutionViewModel> >(); for (int i = 0; i < sequence.request_count; ++i) { List <SubstitutionViewModel> stage = new List <SubstitutionViewModel>(); foreach (SubstitutionEntity entity in substitutions) { if (entity.sequence_position == i) { var model = new SubstitutionViewModel(entity); model.Sequence = sequenceViewModel; stage.Add(model); } } sequenceViewModel.Substitutions.Add(stage); } if (_configuration.GetValue <bool>("ShowDebugMetadata", false)) { List <SequenceMetadataEntity> metadataEntities = await _endpointRepository.GetSequenceMetadata(id); foreach (SequenceMetadataEntity entity in metadataEntities) { sequenceViewModel.Metadata.Add(new SequenceMetadataViewModel(entity)); } sequenceViewModel.ShowMetadata = true; } return(sequenceViewModel); }
public async Task <IActionResult> Sequence(int id) { RequestSequenceViewModel requestSequence = await GetFullSequence(id); return(View(requestSequence)); }