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 getAppSideBarMenu() //{ // return Ok(); //} [HttpPost("create/appsidebar")] public async Task 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.ErrorResponse("access denied", "User haven't permission", 403)); } var sideMenu = _mapper.Map(sidebarMenu); try { sideMenu = await _sideBarMenuHelper.CreateMenuSectionAsync(sideMenu); } catch (Exception ex) { _logger.LogError(ex, "Error Occurred while creating Menu"); return StatusCode(500, ApiResponse.ErrorResponse("Server Error", ex, 500)); } if (sideMenu == null) { _logger.LogWarning("Error Occurred while creating Menu"); return BadRequest(ApiResponse.ErrorResponse("Menu creation failed", 400)); } _logger.LogInfo("Error Occurred while creating Menu"); return Ok(ApiResponse.SuccessResponse(sideMenu, "Sidebar menu created successfully.", 201)); } } }