Files
Core_Be/Services/NavigationService.cs
T
Dhananjaya99 bffc9b1686 first commit
2026-09-28 11:44:26 +05:30

50 lines
1.7 KiB
C#

using Fitness_core_BE.DTOs.Rbac;
using Fitness_core_BE.Interfaces;
using Fitness_core_BE.Interfaces.Services;
namespace Fitness_core_BE.Services
{
public class NavigationService : INavigationService
{
private readonly IPermissionService _permissionService;
private readonly INavItemRepository _navItemRepository;
public NavigationService(
IPermissionService permissionService,
INavItemRepository navItemRepository)
{
_permissionService = permissionService;
_navItemRepository = navItemRepository;
}
public async Task<NavResponseDto> GetNavigationAsync(HttpContext httpContext)
{
var permissionContext =
await _permissionService.GetPermissionContextAsync(httpContext);
var allItems = await _navItemRepository.GetActiveNavItemsOrdered();
var visibleItems = allItems
.Where(item =>
item.Key == "dashboard" ||
permissionContext.IsOwner ||
permissionContext.AllowedNavKeys.Contains(item.Key))
.Where(item => !item.IsOwnerOnly || permissionContext.IsOwner)
.Select(item => new NavItemDto
{
Key = item.Key,
Label = item.Label,
ShortLabel = item.ShortLabel,
Href = item.Href,
Icon = item.Icon
})
.ToList();
return new NavResponseDto
{
IsOwner = permissionContext.IsOwner,
Items = visibleItems
};
}
}
}