File size: 1,164 Bytes
6db0915
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b3fa49d
 
 
 
 
 
 
6db0915
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using ECommerce.Presenter.Presenters;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;

namespace Ecommerce_web_project.Controllers.Admin;

[Area("Admin")]
[Authorize(Roles = "Admin")]
public class CustomersController : Controller
{
    private readonly AdminDashboardPresenter _presenter;
    private readonly UserManager<IdentityUser> _userManager;

    public CustomersController(AdminDashboardPresenter presenter, UserManager<IdentityUser> userManager)
    {
        _presenter = presenter;
        _userManager = userManager;
    }

    public async Task<IActionResult> Index()
    {
        var customers = await _presenter.GetAllCustomersAsync();
        var adminUserIds = (await _userManager.GetUsersInRoleAsync("Admin"))
            .Select(u => u.Id)
            .ToHashSet();
        var filtered = customers.Where(c => !adminUserIds.Contains(c.UserId)).ToList();

        foreach (var customer in filtered)
        {
            var user = await _userManager.FindByIdAsync(customer.UserId);
            customer.Email = user?.Email ?? "";
        }

        return View(filtered);
    }
}