Beispiel #1
0
        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);
        }
Beispiel #2
0
        public async Task <IActionResult> Sequence(int id)
        {
            RequestSequenceViewModel requestSequence = await GetFullSequence(id);

            return(View(requestSequence));
        }