diff --git a/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs b/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs index f9c4813..78e8bba 100644 --- a/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs +++ b/Marco.Pms.DataAccess/Data/ApplicationDbContext.cs @@ -737,6 +737,7 @@ namespace Marco.Pms.DataAccess.Data Name = "Suspended" } ); + modelBuilder.Entity().HasData( new Module { diff --git a/Marco.Pms.Model/ViewModels/AppMenu/MasterMenuVM.cs b/Marco.Pms.Model/ViewModels/AppMenu/MasterMenuVM.cs new file mode 100644 index 0000000..10f8a24 --- /dev/null +++ b/Marco.Pms.Model/ViewModels/AppMenu/MasterMenuVM.cs @@ -0,0 +1,8 @@ +namespace Marco.Pms.Model.ViewModels.AppMenu +{ + public class MasterMenuVM + { + public int Id { get; set; } + public string? Name { get; set; } + } +} diff --git a/Marco.Pms.Services/Controllers/AppMenuController.cs b/Marco.Pms.Services/Controllers/AppMenuController.cs index 8c4fd01..d8d9414 100644 --- a/Marco.Pms.Services/Controllers/AppMenuController.cs +++ b/Marco.Pms.Services/Controllers/AppMenuController.cs @@ -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(); + 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 GetMasterList() + { + var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + using var scope = _serviceScopeFactory.CreateScope(); + var _generalHelper = scope.ServiceProvider.GetRequiredService(); + + var featureIds = await _generalHelper.GetFeatureIdsByTenentIdAsync(tenantId); + List response = new List(); + + if (featureIds.Contains(EmployeeManagement)) + { + List masterMenuVM = [ + new MasterMenuVM + { + Id = 1, + Name = "Application Role" + }, + new MasterMenuVM + { + Id = 2, + Name = "Job Role" + } + ]; + response.AddRange(masterMenuVM); + } + if (featureIds.Contains(ProjectManagement)) + { + List masterMenuVM = [ + new MasterMenuVM + { + Id = 3, + Name = "Activity" + }, + new MasterMenuVM + { + Id = 4, + Name = "Work Category" + } + ]; + response.AddRange(masterMenuVM); + } + if (featureIds.Contains(DirectoryManagement)) + { + List masterMenuVM = [ + new MasterMenuVM + { + Id = 5, + Name = "Contact Category" + }, + new MasterMenuVM + { + Id = 6, + Name = "Contact Tag" + } + ]; + response.AddRange(masterMenuVM); + } + if (featureIds.Contains(ExpenseManagement)) + { + List masterMenuVM = [ + new MasterMenuVM + { + Id = 7, + Name = "Expense Type" + }, + new MasterMenuVM + { + Id = 8, + Name = "Payment Mode" + } + ]; + response.AddRange(masterMenuVM); + } + + return Ok(response); + } } - - - - - - - - }