46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
|
|
using Microsoft.AspNetCore.Mvc;
|
||
|
|
using Microsoft.EntityFrameworkCore;
|
||
|
|
using LingAdmin.API.Data;
|
||
|
|
using LingAdmin.API.Models;
|
||
|
|
using LingAdmin.API.DTOs;
|
||
|
|
|
||
|
|
namespace LingAdmin.API.Controllers;
|
||
|
|
|
||
|
|
[ApiController]
|
||
|
|
[Route("api/[controller]")]
|
||
|
|
public class MenusController : ControllerBase
|
||
|
|
{
|
||
|
|
private readonly AppDbContext _context;
|
||
|
|
private readonly ILogger<MenusController> _logger;
|
||
|
|
|
||
|
|
public MenusController(AppDbContext context, ILogger<MenusController> logger)
|
||
|
|
{
|
||
|
|
_context = context;
|
||
|
|
_logger = logger;
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpGet]
|
||
|
|
public async Task<ActionResult<ApiResponse<List<object>>>> GetMenus()
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
var menus = await _context.MenuItems
|
||
|
|
.OrderBy(m => m.Order)
|
||
|
|
.Select(m => new
|
||
|
|
{
|
||
|
|
name = m.Name,
|
||
|
|
path = m.Path,
|
||
|
|
icon = m.Icon
|
||
|
|
})
|
||
|
|
.ToListAsync();
|
||
|
|
|
||
|
|
return Ok(ApiResponse<List<object>>.Success(menus.Cast<object>().ToList()));
|
||
|
|
}
|
||
|
|
catch (Exception ex)
|
||
|
|
{
|
||
|
|
_logger.LogError(ex, "Error retrieving menus");
|
||
|
|
return StatusCode(500, ApiResponse<List<object>>.Error("Internal server error", 500));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|