SurveyVista/Web/Areas/Admin/Controllers/UserResponseStatusController.cs
2024-06-01 18:38:06 +02:00

100 lines
3.1 KiB
C#

using Data;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Model;
using Services.Interaces;
using Web.ViewModel.QuestionnaireVM;
namespace Web.Areas.Admin.Controllers
{
public class UserResponseStatusController : Controller
{
private readonly SurveyContext _context;
private readonly IUserResponseRepository _userResponse;
public UserResponseStatusController(SurveyContext context,IUserResponseRepository userResponse)
{
_context = context;
_userResponse = userResponse;
}
public async Task<IActionResult> Index()
{
var usersWithQuestionnaires = await _context.Responses
.Include(r => r.Questionnaire)
.GroupBy(r => r.UserEmail)
.Select(g => new UserResponsesViewModel
{
UserName = g.FirstOrDefault().UserName, // Display the first username found for the email
UserEmail = g.Key,
Responses = g.Select(r => new Response
{
Questionnaire = r.Questionnaire
}).Distinct().ToList()
})
.ToListAsync();
return View(usersWithQuestionnaires);
}
public async Task<IActionResult> UserResponsesStatus(string userEmail)
{
var responses = await _context.Responses
.Include(r => r.Questionnaire)
.Include(r => r.ResponseDetails)
.ThenInclude(rd => rd.Question)
.ThenInclude(q => q.Answers) // Include the Answers entity
.Include(r => r.ResponseDetails)
.ThenInclude(rd => rd.ResponseAnswers)
.Where(r => r.UserEmail == userEmail)
.ToListAsync();
if (responses == null || !responses.Any())
{
return NotFound();
}
var userName = responses.First().UserName;
var viewModel = new UserResponsesViewModel
{
UserName = userName,
UserEmail = userEmail,
Responses = responses
};
return View(viewModel);
}
//public async Task<IActionResult> UserResponsesStatus(string userEmail)
//{
// var responses = await _context.Responses
// .Include(r => r.Questionnaire)
// .Include(r => r.ResponseDetails)
// .ThenInclude(rd => rd.Question)
// .Include(r => r.ResponseDetails)
// .ThenInclude(rd => rd.ResponseAnswers)
// .Where(r => r.UserEmail == userEmail)
// .ToListAsync();
// if (responses == null || !responses.Any())
// {
// return NotFound();
// }
// var userName = responses.First().UserName;
// var viewModel = new UserResponsesViewModel
// {
// UserName = userName,
// UserEmail = userEmail,
// Responses = responses
// };
// return View(viewModel);
//}
}
}