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; } }