PSTW_CentralizeSystem/Controllers/API/ModuleAPI.cs
2024-11-26 09:48:19 +08:00

123 lines
4.2 KiB
C#

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<HomeController> _logger;
private readonly AuthDBContext _authDbContext;
public ModuleAPI(ILogger<HomeController> logger, AuthDBContext authDbContext)
{
_logger = logger;
_authDbContext = authDbContext;
}
[HttpPost("GetModuleInformation")]
public async Task<IActionResult> GetModuleInformation()
{
var qcList = await _authDbContext.ModuleSettings.ToListAsync();
return Json(qcList);
}
[HttpPost("GetXModuleInformation")]
public async Task<IActionResult> GetXModuleInformation(int? id)
{
var qcList = await _authDbContext.ModuleSettings.Where(x => x.SettingId == id).FirstOrDefaultAsync();
return Json(qcList);
}
[HttpPost("addMethod")]
public async Task<IActionResult> 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<MethodAllowedUserType>();
}
// Add the new module
moduleSetting.MethodAllowedUserType.Add(new MethodAllowedUserType
{
MethodName = module,
AllowedUserTypesArray = Array.Empty<string>()
});
// Save the changes to the database
_authDbContext.ModuleSettings.Update(moduleSetting);
await _authDbContext.SaveChangesAsync();
return Json(moduleSetting);
}
[HttpPost("saveData")]
public async Task<IActionResult> 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("addData")]
public async Task<IActionResult> addData([FromBody] ModuleSettingModel modelSettingList)
{
var existingModule = await _authDbContext.ModuleSettings.Where(x => x.ModuleName.ToLower() == modelSettingList.ModuleName.ToLower()).FirstOrDefaultAsync();
if (existingModule != null)
{
return BadRequest("Module name already exists."); // Return a 400 Bad Request
}
// Add new module
modelSettingList.ModuleStatus = 1; // Default status
_authDbContext.ModuleSettings.Add(modelSettingList);
await _authDbContext.SaveChangesAsync();
return Json(modelSettingList);
}
}
}