using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PSTW_CentralSystem.DBContext; using PSTW_CentralSystem.Models; namespace PSTW_CentralSystem.Controllers.API { [ApiController] [Route("[controller]")] public class ModuleAPI : Controller { private readonly ILogger _logger; private readonly AuthDBContext _authDbContext; public ModuleAPI(ILogger logger, AuthDBContext authDbContext) { _logger = logger; _authDbContext = authDbContext; } [HttpPost("GetModuleInformation")] public async Task GetModuleInformation() { var qcList = await _authDbContext.ModuleSettings.ToListAsync(); return Json(qcList); } [HttpPost("GetXModuleInformation")] public async Task GetXModuleInformation(int? id) { var qcList = await _authDbContext.ModuleSettings.Where(x => x.SettingId == id).FirstOrDefaultAsync(); return Json(qcList); } [HttpPost("addMethod")] public async Task AddMethod(int? id, string? module) { // Retrieve the module setting from the database var moduleSetting = await _authDbContext.ModuleSettings .Where(x => x.SettingId == id) .FirstOrDefaultAsync(); if (moduleSetting == null) { return NotFound("Module setting not found"); } // Initialize the list if null if (moduleSetting.MethodAllowedUserType == null) { moduleSetting.MethodAllowedUserType = new List(); } // Add the new module moduleSetting.MethodAllowedUserType.Add(new MethodAllowedUserType { MethodName = module, AllowedUserTypesArray = Array.Empty() }); // Save the changes to the database _authDbContext.ModuleSettings.Update(moduleSetting); await _authDbContext.SaveChangesAsync(); return Json(moduleSetting); } [HttpPost("saveData")] public async Task saveData([FromBody] ModuleSettingModel modelSettingList) { var qcList = await _authDbContext.ModuleSettings .Where(x => x.SettingId == modelSettingList.SettingId) .FirstOrDefaultAsync(); if (qcList != null) { qcList.ModuleName = modelSettingList.ModuleName; qcList.AllowedUserType = modelSettingList.AllowedUserType; if (modelSettingList.MethodAllowedUserType != null) { qcList.MethodAllowedUserType = modelSettingList.MethodAllowedUserType .Select(m => new MethodAllowedUserType { MethodName = m.MethodName, AllowedUserTypesArray = m.AllowedUserTypesArray }).ToList(); } qcList.ModuleStatus = modelSettingList.ModuleStatus; qcList.Description = modelSettingList.Description; _authDbContext.ModuleSettings.Update(qcList); await _authDbContext.SaveChangesAsync(); } return Json(qcList); } [HttpPost("AddModule")] public async Task AddModule([FromBody] ModuleSettingModel module) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (module == null) { return NotFound("Module is null"); } try { _authDbContext.ModuleSettings.Add(module); await _authDbContext.SaveChangesAsync(); var updatedList = await _authDbContext.ModuleSettings.ToListAsync(); return Json(updatedList); } catch (Exception ex) { return BadRequest(ex.Message); } } } }