Added API to get Master Tables list dynamically

This commit is contained in:
ashutosh.nehete 2025-08-24 13:38:39 +05:30
parent f85f1adb92
commit e7705a5051
3 changed files with 103 additions and 11 deletions

View File

@ -737,6 +737,7 @@ namespace Marco.Pms.DataAccess.Data
Name = "Suspended"
}
);
modelBuilder.Entity<Module>().HasData(
new Module
{

View File

@ -0,0 +1,8 @@
namespace Marco.Pms.Model.ViewModels.AppMenu
{
public class MasterMenuVM
{
public int Id { get; set; }
public string? Name { get; set; }
}
}

View File

@ -3,6 +3,8 @@ using Marco.Pms.CacheHelper;
using Marco.Pms.Model.AppMenu;
using Marco.Pms.Model.Dtos.AppMenu;
using Marco.Pms.Model.Utilities;
using Marco.Pms.Model.ViewModels.AppMenu;
using Marco.Pms.Services.Helpers;
using Marco.Pms.Services.Service;
using MarcoBMS.Services.Helpers;
using MarcoBMS.Services.Service;
@ -21,22 +23,31 @@ namespace Marco.Pms.Services.Controllers
private readonly SidebarMenuHelper _sideBarMenuHelper;
private readonly IMapper _mapper;
private readonly ILoggingService _logger;
private readonly PermissionServices _permissions;
private readonly IServiceScopeFactory _serviceScopeFactory;
private readonly Guid tenantId;
private static readonly Guid superTenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26");
private static readonly Guid ProjectManagement = Guid.Parse("53176ebf-c75d-42e5-839f-4508ffac3def");
private static readonly Guid ExpenseManagement = Guid.Parse("a4e25142-449b-4334-a6e5-22f70e4732d7");
private static readonly Guid TaskManagement = Guid.Parse("9d4b5489-2079-40b9-bd77-6e1bf90bc19f");
private static readonly Guid EmployeeManagement = Guid.Parse("81ab8a87-8ccd-4015-a917-0627cee6a100");
private static readonly Guid AttendanceManagement = Guid.Parse("52c9cf54-1eb2-44d2-81bb-524cf29c0a94");
private static readonly Guid MastersMangent = Guid.Parse("be3b3afc-6ccf-4566-b9b6-aafcb65546be");
private static readonly Guid DirectoryManagement = Guid.Parse("39e66f81-efc6-446c-95bd-46bff6cfb606");
private static readonly Guid TenantManagement = Guid.Parse("2f3509b7-160d-410a-b9b6-daadd96c986d");
public AppMenuController(UserHelper userHelper,
SidebarMenuHelper sideBarMenuHelper,
IMapper mapper,
ILoggingService logger,
PermissionServices permissions)
IServiceScopeFactory serviceScopeFactory)
{
_userHelper = userHelper;
_sideBarMenuHelper = sideBarMenuHelper;
_mapper = mapper;
_logger = logger;
_permissions = permissions;
_serviceScopeFactory = serviceScopeFactory;
tenantId = userHelper.GetTenantId();
}
@ -435,6 +446,9 @@ namespace Marco.Pms.Services.Controllers
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
var employeeId = loggedInEmployee.Id;
using var scope = _serviceScopeFactory.CreateScope();
var _permissions = scope.ServiceProvider.GetRequiredService<PermissionServices>();
try
{
// Step 2: Fetch all menu sections for the tenant
@ -517,16 +531,85 @@ namespace Marco.Pms.Services.Controllers
}
[HttpGet("get/master-list")]
public async Task<IActionResult> GetMasterList()
{
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
using var scope = _serviceScopeFactory.CreateScope();
var _generalHelper = scope.ServiceProvider.GetRequiredService<GeneralHelper>();
var featureIds = await _generalHelper.GetFeatureIdsByTenentIdAsync(tenantId);
List<MasterMenuVM> response = new List<MasterMenuVM>();
if (featureIds.Contains(EmployeeManagement))
{
List<MasterMenuVM> masterMenuVM = [
new MasterMenuVM
{
Id = 1,
Name = "Application Role"
},
new MasterMenuVM
{
Id = 2,
Name = "Job Role"
}
];
response.AddRange(masterMenuVM);
}
if (featureIds.Contains(ProjectManagement))
{
List<MasterMenuVM> masterMenuVM = [
new MasterMenuVM
{
Id = 3,
Name = "Activity"
},
new MasterMenuVM
{
Id = 4,
Name = "Work Category"
}
];
response.AddRange(masterMenuVM);
}
if (featureIds.Contains(DirectoryManagement))
{
List<MasterMenuVM> masterMenuVM = [
new MasterMenuVM
{
Id = 5,
Name = "Contact Category"
},
new MasterMenuVM
{
Id = 6,
Name = "Contact Tag"
}
];
response.AddRange(masterMenuVM);
}
if (featureIds.Contains(ExpenseManagement))
{
List<MasterMenuVM> masterMenuVM = [
new MasterMenuVM
{
Id = 7,
Name = "Expense Type"
},
new MasterMenuVM
{
Id = 8,
Name = "Payment Mode"
}
];
response.AddRange(masterMenuVM);
}
return Ok(response);
}
}
}