@model UserResponsesViewModel @{ ViewData["Title"] = "User Response Details"; var totalResponses = Model.Responses.Count(); var totalQuestions = Model.Responses.Sum(r => r.ResponseDetails.Count); var totalAnswered = Model.Responses.Sum(r => r.ResponseDetails.Count(d => d.Status == ResponseStatus.Answered)); var totalSkipped = Model.Responses.Sum(r => r.ResponseDetails.Count(d => d.Status == ResponseStatus.Skipped)); var totalShown = Model.Responses.Sum(r => r.ResponseDetails.Count(d => d.Status == ResponseStatus.Shown)); var completionRate = totalQuestions > 0 ? Math.Round((double)totalAnswered / totalQuestions * 100, 1) : 0; var uniqueSurveys = Model.Responses.Select(r => r.Questionnaire?.Title).Distinct().Count(); var latestDate = Model.Responses.Any() ? Model.Responses.Max(r => r.SubmissionDate).ToString("MMM dd, yyyy") : "—"; } @section Styles { }
| Question | Status | Response |
|---|---|---|
@question.Text @question.Type |
@if (rd != null)
{
switch (rd.Status)
{
case ResponseStatus.Answered:
Answered
break;
case ResponseStatus.Shown:
Shown
Not answered
break;
case ResponseStatus.Skipped:
Skipped
if (!string.IsNullOrEmpty(rd.SkipReason))
{
@rd.SkipReason
}
break;
}
}
else
{
No data
}
|
@if (rd != null && rd.Status == ResponseStatus.Answered)
{
if (rd.QuestionType == QuestionType.Text || rd.QuestionType == QuestionType.Open_ended || rd.QuestionType == QuestionType.Slider)
{
@rd.TextResponse
}
else if (rd.ResponseAnswers.Any())
{
@foreach (var ra in rd.ResponseAnswers) { var ans = question.Answers.FirstOrDefault(a => a.Id == ra.AnswerId);
@ans?.Text @if (ans?.IsOtherOption == true) {
Other
}
}
}
if (!string.IsNullOrEmpty(rd.OtherText))
{
Custom Response: @rd.OtherText No response
}
|
This user hasn't submitted any survey responses.