@model Response @{ ViewData["Title"] = "Response Details"; } @section Styles { } @{ int qNum = 0; }
@(Model.UserName?.Substring(0, 1).ToUpper() ?? "U")

@Model.UserName

@Model.UserEmail
ID: @Model.Id @Model.SubmissionDate.ToString("yyyy-MM-ddTHH:mm:ss") @if (Model.Questionnaire != null) { @Model.Questionnaire.Title }
@foreach (var detail in Model.ResponseDetails) { qNum++;
@qNum

@detail.Question.Text

@detail.QuestionType.ToString().Replace("_", " ")
@switch (detail.QuestionType) { case QuestionType.Text: case QuestionType.Open_ended:
@(detail.TextResponse ?? "—")
break; case QuestionType.Multiple_choice: case QuestionType.CheckBox: case QuestionType.TrueFalse: case QuestionType.Demographic:
@foreach (var answer in detail.Question.Answers) { var isSelected = detail.ResponseAnswers.Any(ra => ra.AnswerId == answer.Id); var isRadio = detail.QuestionType == QuestionType.TrueFalse;
@answer.Text
@if (isSelected && answer.IsOtherOption && !string.IsNullOrEmpty(detail.OtherText)) {
@detail.OtherText
} }
break; case QuestionType.Rating:
@foreach (var answer in detail.Question.Answers.OrderBy(a => a.Id)) { var isSelected = detail.ResponseAnswers.Any(ra => ra.AnswerId == answer.Id);
@answer.Text
}
break; case QuestionType.Likert:
@foreach (var answer in detail.Question.Answers.OrderBy(a => a.Id)) { var isSelected = detail.ResponseAnswers.Any(ra => ra.AnswerId == answer.Id);
@answer.Text
}
break; case QuestionType.Matrix:
@foreach (var answer in detail.Question.Answers) { var isSelected = detail.ResponseAnswers.Any(ra => ra.AnswerId == answer.Id); }
OptionSelected
@answer.Text @if (isSelected) { } else { }
break; case QuestionType.Ranking:
Original Order
@foreach (var answer in detail.Question.Answers) { var userIdx = detail.ResponseAnswers.FindIndex(ra => ra.AnswerId == answer.Id) + 1;
@userIdx@answer.Text
}
User Ranking
@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:
@foreach (var answer in detail.Question.Answers) { var isSelected = detail.ResponseAnswers.Any(ra => ra.AnswerId == answer.Id);
@if (answer.IsOtherOption) {
@answer.Text
} else { Option } @if (isSelected) { }
@if (isSelected && answer.IsOtherOption && !string.IsNullOrEmpty(detail.OtherText)) {
@detail.OtherText
} }
break; case QuestionType.Slider:
@{ int sv = 0; Int32.TryParse(detail.TextResponse, out sv); } @sv / 100
break; default:
Unsupported question type.
break; }
}