41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
|
|
using Microsoft.AspNetCore.Mvc;
|
||
|
|
using SkyArtShop.Models;
|
||
|
|
using SkyArtShop.Services;
|
||
|
|
|
||
|
|
namespace SkyArtShop.ViewComponents
|
||
|
|
{
|
||
|
|
public class NavigationViewComponent : ViewComponent
|
||
|
|
{
|
||
|
|
private readonly MongoDBService _mongoService;
|
||
|
|
|
||
|
|
public NavigationViewComponent(MongoDBService mongoService)
|
||
|
|
{
|
||
|
|
_mongoService = mongoService;
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<IViewComponentResult> InvokeAsync(string location = "navbar")
|
||
|
|
{
|
||
|
|
var menuItems = await _mongoService.GetAllAsync<MenuItem>("MenuItems");
|
||
|
|
|
||
|
|
if (location == "dropdown")
|
||
|
|
{
|
||
|
|
// For dropdown: must be Active AND ShowInDropdown
|
||
|
|
var dropdownItems = menuItems
|
||
|
|
.Where(m => m.IsActive && m.ShowInDropdown)
|
||
|
|
.OrderBy(m => m.DisplayOrder)
|
||
|
|
.ToList();
|
||
|
|
return View(dropdownItems);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
// For navbar: must be Active AND ShowInNavbar
|
||
|
|
var navbarItems = menuItems
|
||
|
|
.Where(m => m.IsActive && m.ShowInNavbar)
|
||
|
|
.OrderBy(m => m.DisplayOrder)
|
||
|
|
.ToList();
|
||
|
|
return View(navbarItems);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|