98 lines
3.0 KiB
C#

using AutoMapper;
using Azure;
using Marco.Pms.CacheHelper;
using Marco.Pms.Model.AppMenu;
using Marco.Pms.Model.Dtos.AppMenu;
using Marco.Pms.Model.Employees;
using Marco.Pms.Model.Entitlements;
using Marco.Pms.Model.Utilities;
using Marco.Pms.Services.Service;
using Marco.Pms.Services.Service.ServiceInterfaces;
using MarcoBMS.Services.Helpers;
using MarcoBMS.Services.Service;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Org.BouncyCastle.Asn1.Ocsp;
using System.Threading.Tasks;
using static System.Collections.Specialized.BitVector32;
namespace Marco.Pms.Services.Controllers
{
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class AppMenuController : ControllerBase
{
private readonly UserHelper _userHelper;
private readonly EmployeeHelper _employeeHelper;
private readonly RolesHelper _rolesHelper;
private readonly SideBarMenu _sideBarMenuHelper;
private readonly IMapper _mapper;
private readonly ILoggingService _logger;
public AppMenuController(EmployeeHelper employeeHelper, IProjectServices projectServices, UserHelper userHelper, RolesHelper rolesHelper, SideBarMenu sideBarMenuHelper, IMapper mapper, ILoggingService logger) {
_userHelper = userHelper;
_employeeHelper = employeeHelper;
_rolesHelper = rolesHelper;
_sideBarMenuHelper = sideBarMenuHelper;
_mapper = mapper;
_logger = logger;
}
//[HttpGet("/appMenu")]
//public async Task<IActionResult> getAppSideBarMenu()
//{
// return Ok();
//}
[HttpPost("create/appsidebar")]
public async Task<IActionResult> PostAppSideBarMenu([FromBody] MenuSectionDto sidebarMenu)
{
var user = await _userHelper.GetCurrentEmployeeAsync();
if (!(user.ApplicationUser?.IsRootUser ?? false))
{
_logger.LogWarning("Access Denied while creating side menu");
return StatusCode(403, ApiResponse<object>.ErrorResponse("access denied", "User haven't permission", 403));
}
var sideMenu = _mapper.Map<MenuSection>(sidebarMenu);
try
{
sideMenu = await _sideBarMenuHelper.CreateMenuSectionAsync(sideMenu);
}
catch (Exception ex)
{
_logger.LogError(ex, "Error Occurred while creating Menu");
return StatusCode(500, ApiResponse<object>.ErrorResponse("Server Error", ex, 500));
}
if (sideMenu == null) {
_logger.LogWarning("Error Occurred while creating Menu");
return BadRequest(ApiResponse<object>.ErrorResponse("Menu creation failed", 400));
}
_logger.LogInfo("Error Occurred while creating Menu");
return Ok(ApiResponse<object>.SuccessResponse(sideMenu, "Sidebar menu created successfully.", 201));
}
}
}