diff --git a/TCM_API/Controllers/lamiter/Company_detail_tableController.cs b/TCM_API/Controllers/lamiter/Company_detail_tableController.cs index dd9950a..2ed944a 100644 --- a/TCM_API/Controllers/lamiter/Company_detail_tableController.cs +++ b/TCM_API/Controllers/lamiter/Company_detail_tableController.cs @@ -15,7 +15,7 @@ namespace TCM_API.Controllers.lamiter { [Route("api/[controller]")] [ApiController] - //[Authorize] + [Authorize] public class Company_detail_tableController : ControllerBase { private readonly SqlContext _context; @@ -33,11 +33,14 @@ namespace TCM_API.Controllers.lamiter public async Task> GetCompany_all_deatil() { - var data = await(from c in _context.company_detail_table + var data = await(from a in _context.company_detail_table + join b in _context.user_table on a.guid equals b.guid into joined + from b in joined.DefaultIfEmpty() select new { - company_name = c.company_name, - guid = c.guid + company_name = a.company_name, + guid = a.guid, + level = b.level }).ToListAsync(); return Ok( data); @@ -48,7 +51,18 @@ namespace TCM_API.Controllers.lamiter [HttpGet("get_campany-{guid}")] public async Task> GetCompany_deatil(string guid) { - var data = await _context.company_detail_table.FindAsync(guid); + var data = await (from a in _context.company_detail_table + join b in _context.user_table on a.guid equals b.guid into joined + from b in joined.DefaultIfEmpty() + where b.guid == guid + select new + { + guid = a.guid, + level = b.level, + company_name = a.company_name, + user_name = b.username, + email = b.email + }).FirstOrDefaultAsync(); if (data == null) { return NotFound(); @@ -58,6 +72,32 @@ namespace TCM_API.Controllers.lamiter #endregion + #region 編輯啟用 + /// + /// 編輯企業啟用 + /// + [HttpPost("company_enable")] + public async Task UpdateEnable(EnableDto enableDto) + { + var edit_data = await (from a in _context.user_table + where a.guid == enableDto.Guid + select a).FirstOrDefaultAsync(); + if (edit_data == null) + { + return NotFound("找不到該使用者"); + } + + // 更新 level 屬性 + edit_data.level = enableDto.level; + + // 標記為已修改 + _context.user_table.Update(edit_data); + await _context.SaveChangesAsync(); + + return Ok(); + } + #endregion + #region 新增企業 /// /// 新增企業 @@ -115,5 +155,14 @@ namespace TCM_API.Controllers.lamiter { return _context.company_detail_table.Any(e => e.guid == id); } + + /// + /// 企業啟用請求 DTO + /// + public class CompanyEnableDto + { + public string? Guid { get; set; } + public string? level { get; set; } + } } } diff --git a/TCM_API/Controllers/manage/Health_detail_tableController.cs b/TCM_API/Controllers/manage/Health_detail_tableController.cs index 52accf4..50d83a3 100644 --- a/TCM_API/Controllers/manage/Health_detail_tableController.cs +++ b/TCM_API/Controllers/manage/Health_detail_tableController.cs @@ -28,7 +28,7 @@ namespace TCM_API.Controllers.manage /// /// 獲取所有健管師 /// - [HttpGet("get_all_health-")] + [HttpGet("get_all_health")] public async Task> GetHealth_all_deatil() { @@ -43,6 +43,104 @@ namespace TCM_API.Controllers.manage } #endregion + #region 獲取指定企業健管師 + /// + /// 獲取指定企業健管師 + /// + [HttpGet("get_company_all_health-{guid}")] + public async Task> GetCompany_Health_all_deatil(string guid) + { + + var data = await (from a in _context.health_detail_table + join b in _context.user_table on a.guid equals b.guid into joined + from b in joined.DefaultIfEmpty() // LEFT JOIN + where a.company_guid == guid + select new + { + health_name = a.health_name, + guid = a.guid, + level = b.level + }).ToListAsync(); + + return Ok(data); + } + #endregion + + #region 獲取指定企業健管師數量 + /// + /// 獲取指定企業健管師 + /// + [HttpGet("get_company_all_health_count-{guid}")] + public async Task> GetCompany_Health_all_count(string guid) + { + + var data = await (from a in _context.health_detail_table + join b in _context.user_table on a.guid equals b.guid into userGroup + from b in userGroup.DefaultIfEmpty() // 使用 DefaultIfEmpty() 實現 LEFT JOIN + where a.company_guid == guid + group a by b.level into g + select new + { + level = g.Key, + level_count = g.Count() // 計算每個 level 的數量 + }).ToListAsync(); + + + return Ok(data); + } + #endregion + + #region 獲取單一健管師 + [HttpGet("get_health_person-{guid}")] + public async Task> GetCompany_deatil(string guid) + { + var data = await (from a in _context.health_detail_table + join b in _context.user_table on a.guid equals b.guid into joined + from b in joined.DefaultIfEmpty() + where b.guid == guid && a.guid == guid + select new + { + guid = a.guid, + level = b.level, + health_name = a.health_name, + user_name = b.username, + email = b.email + }).FirstOrDefaultAsync(); + if (data == null) + { + return NotFound(); + } + return data; + } + #endregion + + + #region 編輯啟用 + /// + /// 編輯企業啟用 + /// + [HttpPost("healther_enable")] + public async Task UpdateEnable(EnableDto enableDto) + { + var edit_data = await (from a in _context.user_table + where a.guid == enableDto.Guid + select a).FirstOrDefaultAsync(); + if (edit_data == null) + { + return NotFound("找不到該使用者"); + } + + // 更新 level 屬性 + edit_data.level = enableDto.level; + + // 標記為已修改 + _context.user_table.Update(edit_data); + await _context.SaveChangesAsync(); + + return Ok(); + } + #endregion + #region 新增健管師 /// diff --git a/TCM_API/Services/UserService.cs b/TCM_API/Services/UserService.cs index af9994e..dab8e17 100644 --- a/TCM_API/Services/UserService.cs +++ b/TCM_API/Services/UserService.cs @@ -50,8 +50,11 @@ public class UserService : IUserService && x.password == model.Password); // return null if user not found - if (user == null) return null; - + if (user == null ) return null; + if (!int.TryParse(user.level, out int level) || level % 2 != 0) + { + return null; + } // authentication successful so generate jwt token var token = _jwtUtils.GenerateJwtToken(user); diff --git a/TCM_API/ViewModels/EnableDto.cs b/TCM_API/ViewModels/EnableDto.cs new file mode 100644 index 0000000..137d44c --- /dev/null +++ b/TCM_API/ViewModels/EnableDto.cs @@ -0,0 +1,8 @@ +namespace TCM_API.ViewModels +{ + public class EnableDto + { + public string? Guid { get; set; } + public string? level { get; set; } + } +}