@model Response @{ ViewData["Title"] = "ViewResponses"; } @{ int numberindex = 0; }
@*

Questionnaire: @Model.Questionnaire.Title

*@ Response Details for @Model.UserName (@Model.UserEmail)
Submitted on: @Model.SubmissionDate.ToString("yyyy-MM-ddTHH:mm:ss")
@foreach (var detail in Model.ResponseDetails) {
Question Type:@detail.QuestionType.ToString()
Question @((numberindex = numberindex + 1)): @detail.Question.Text
@switch (detail.QuestionType) { case QuestionType.Text: case QuestionType.Open_ended:

Answer: @detail.TextResponse

break; case QuestionType.Multiple_choice: case QuestionType.CheckBox: case QuestionType.TrueFalse: Answer: @if (detail.Question.Type == QuestionType.TrueFalse) {
@foreach (var answer in detail.Question.Answers) { // Ensuring each question has a unique group name by using the Question ID string groupName = $"response{detail.Question.Id}";
ra.AnswerId == answer.Id) ? "checked" : "")>
}
} else {
@foreach (var answer in detail.Question.Answers) {
ra.AnswerId == answer.Id) ? "checked" : "")>
}
} break; case QuestionType.Rating: @if (detail.QuestionType == QuestionType.Rating) { User Selected rate
    @foreach (var answer in detail.Question.Answers.OrderBy(a => a.Id)) {
  • @answer.Text
  • }
} break; case QuestionType.Likert: Answer:
    @foreach (var answer in detail.Question.Answers.OrderBy(a => a.Id)) { // Construct a unique name for each question-answer pair to ensure radio buttons are not linked. var radioName = $"likertResponse{detail.Question.Id}-{answer.Id}"; var isAnswerSelected = detail.ResponseAnswers.Any(ra => ra.AnswerId == answer.Id);
  • }
break; case QuestionType.Matrix: Answer: @* *@ @foreach (var answer in detail.Question.Answers) { var isSelected = detail.ResponseAnswers.Any(ra => ra.AnswerId == answer.Id); }
User response
@answer.Text
break; case QuestionType.Ranking:
Original Order of Answers:
    @foreach (var answer in detail.Question.Answers) { var userIndex = detail.ResponseAnswers.FindIndex(ra => ra.AnswerId == answer.Id) + 1;
  • @userIndex @answer.Text
  • }
User Order of answers:
    @for (int i = 0; i < detail.ResponseAnswers.Count; i++) { var ra = detail.ResponseAnswers[i]; var answer = detail.Question.Answers.FirstOrDefault(a => a.Id == ra.AnswerId);
  • @(i + 1) @answer.Text
  • }
break; case QuestionType.Image:
answers:
@foreach (var answer in detail.Question.Answers) { var isSelected = detail.ResponseAnswers.Any(ra => ra.AnswerId == answer.Id); }
break; case QuestionType.Slider:
Answer
    @foreach (var answer in detail.Question.Answers) { // Retrieve the response that corresponds to the current answer var responseAnswer = detail.ResponseAnswers.FirstOrDefault(ra => ra.AnswerId == answer.Id); // Parse the response text to an integer int sliderValue = 0; Int32.TryParse(responseAnswer?.ResponseDetail.TextResponse, out sliderValue);
  • 0 100
    User Response: @sliderValue
  • }
break; // Handle other question types as previously detailed // Other cases as previously detailed default:

Unsupported question type.

break; }
}
Back to List