diff --git a/BMA.EHR.Discipline.Service/Controllers/DisciplineComplaint_AppealController.cs b/BMA.EHR.Discipline.Service/Controllers/DisciplineComplaint_AppealController.cs
index 85f1d1e5..a8b62e23 100644
--- a/BMA.EHR.Discipline.Service/Controllers/DisciplineComplaint_AppealController.cs
+++ b/BMA.EHR.Discipline.Service/Controllers/DisciplineComplaint_AppealController.cs
@@ -90,7 +90,7 @@ namespace BMA.EHR.DisciplineComplaint_Appeal.Service.Controllers
/// ไม่ได้ Login เข้าระบบ
/// เมื่อเกิดข้อผิดพลาดในการทำงาน
[HttpGet("user")]
- public async Task> GetDisciplineUser(string status = "ALL", string type = "ALL", int year = 0, int page = 1, int pageSize = 25, string keyword = "")
+ public async Task> GetDisciplineUser(string status = "ALL", string type = "ALL", int year = 0, int page = 1, int pageSize = 25, string keyword = "", string? sortBy = null, bool descending = false)
{
var id = "";
var apiUrl = $"{_configuration["API"]}/org/profile/keycloak/position";
@@ -125,7 +125,7 @@ namespace BMA.EHR.DisciplineComplaint_Appeal.Service.Controllers
data_search = data_search.Where(x => x.Type == type).ToList();
if (year != 0)
data_search = data_search.Where(x => x.Year == year).ToList();
- var data = data_search
+ var query = data_search
.Select(x => new
{
Id = x.Id,
@@ -141,11 +141,45 @@ namespace BMA.EHR.DisciplineComplaint_Appeal.Service.Controllers
ProfileId = x.ProfileId,
LastUpdatedAt = x.LastUpdatedAt,
CreatedAt = x.CreatedAt
- })
- .OrderByDescending(x => x.CreatedAt)
- .Skip((page - 1) * pageSize)
- .Take(pageSize)
- .ToList();
+ });
+ if (!string.IsNullOrEmpty(sortBy))
+ {
+ {
+ if (sortBy == "title")
+ query = descending ? query.OrderByDescending(x => x.Title) : query.OrderBy(x => x.Title);
+ else if (sortBy == "year")
+ query = descending ? query.OrderByDescending(x => x.Year) : query.OrderBy(x => x.Year);
+ else if (sortBy == "status")
+ query = descending ? query.OrderByDescending(x => x.Status) : query.OrderBy(x => x.Status);
+ else if (sortBy == "description")
+ query = descending ? query.OrderByDescending(x => x.Description) : query.OrderBy(x => x.Description);
+ else if (sortBy == "type")
+ query = descending ? query.OrderByDescending(x => x.Type) : query.OrderBy(x => x.Type);
+ else if (sortBy == "caseType")
+ query = descending ? query.OrderByDescending(x => x.CaseType) : query.OrderBy(x => x.CaseType);
+ else if (sortBy == "caseNumber")
+ query = descending ? query.OrderByDescending(x => x.CaseNumber) : query.OrderBy(x => x.CaseNumber);
+ else if (sortBy == "fullname")
+ query = descending ? query.OrderByDescending(x => x.Fullname) : query.OrderBy(x => x.Fullname);
+ else if (sortBy == "citizenId")
+ query = descending ? query.OrderByDescending(x => x.CitizenId) : query.OrderBy(x => x.CitizenId);
+ else if (sortBy == "lastUpdatedAt")
+ query = descending ? query.OrderByDescending(x => x.LastUpdatedAt) : query.OrderBy(x => x.LastUpdatedAt);
+ else if (sortBy == "createdAt")
+ query = descending ? query.OrderByDescending(x => x.CreatedAt) : query.OrderBy(x => x.CreatedAt);
+ else
+ query = query.OrderByDescending(x => x.CreatedAt); // default
+ }
+ }
+ else
+ {
+ query = query.OrderByDescending(x => x.CreatedAt);
+ }
+
+ var data = query
+ .Skip((page - 1) * pageSize)
+ .Take(pageSize)
+ .ToList();
return Success(new { data, total = data_search.Count() });
}
}
diff --git a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs
index 1c31a597..ac1d8364 100644
--- a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs
+++ b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs
@@ -1367,6 +1367,84 @@ namespace BMA.EHR.Leave.Service.Controllers
if (req.Keyword != "")
result = result.Where(x => x.FullName.Contains(req.Keyword)).ToList();
+ if (!string.IsNullOrEmpty(req.SortBy))
+ {
+ var sort = req.SortBy;
+
+ if (sort == "leaveTypeName")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.LeaveTypeName).ToList()
+ : result.OrderBy(x => x.LeaveTypeName).ToList();
+ }
+ else if (sort == "leaveSubTypeName")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.LeaveSubTypeName).ToList()
+ : result.OrderBy(x => x.LeaveSubTypeName).ToList();
+ }
+ else if (sort == "fullName")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.FullName).ToList()
+ : result.OrderBy(x => x.FullName).ToList();
+ }
+ else if (sort == "dateSendLeave")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.DateSendLeave).ToList()
+ : result.OrderBy(x => x.DateSendLeave).ToList();
+ }
+ else if (sort == "isDelete")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.IsDelete).ToList()
+ : result.OrderBy(x => x.IsDelete).ToList();
+ }
+ else if (sort == "status")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.Status).ToList()
+ : result.OrderBy(x => x.Status).ToList();
+ }
+ else if (sort == "leaveStartDate")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.LeaveStartDate).ToList()
+ : result.OrderBy(x => x.LeaveStartDate).ToList();
+ }
+ else if (sort == "leaveEndDate")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.LeaveEndDate).ToList()
+ : result.OrderBy(x => x.LeaveEndDate).ToList();
+ }
+ else if (sort == "hajjDayStatus")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.HajjDayStatus).ToList()
+ : result.OrderBy(x => x.HajjDayStatus).ToList();
+ }
+ else if (sort == "leaveRange")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.LeaveRange).ToList()
+ : result.OrderBy(x => x.LeaveRange).ToList();
+ }
+ else if (sort == "leaveRangeEnd")
+ {
+ result = req.Descending.GetValueOrDefault()
+ ? result.OrderByDescending(x => x.LeaveRangeEnd).ToList()
+ : result.OrderBy(x => x.LeaveRangeEnd).ToList();
+ }
+ else
+ {
+ // default กรณีส่ง sortBy มาไม่ตรง
+ result = result.OrderByDescending(x => x.DateSendLeave).ToList();
+ }
+ }
+
+
var pageResult = result.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList();
return Success(new { data = pageResult, total = result.Count });
diff --git a/BMA.EHR.Leave/DTOs/LeaveRequest/GetLeaveRequestTableDto.cs b/BMA.EHR.Leave/DTOs/LeaveRequest/GetLeaveRequestTableDto.cs
index 43089d16..37d44ec3 100644
--- a/BMA.EHR.Leave/DTOs/LeaveRequest/GetLeaveRequestTableDto.cs
+++ b/BMA.EHR.Leave/DTOs/LeaveRequest/GetLeaveRequestTableDto.cs
@@ -20,5 +20,9 @@ namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
public int PageSize = 10;
public string? Keyword { get; set; } = string.Empty;
+
+ public string? SortBy { get; set; } = string.Empty;
+
+ public bool? Descending { get; set; } = false;
}
}