From 5efb1c99c60dced7804dbca5109425c8d45ec298 Mon Sep 17 00:00:00 2001 From: harid Date: Mon, 6 Oct 2025 15:12:40 +0700 Subject: [PATCH] sortBy #1814 --- .../Controllers/LeaveBeginningController.cs | 44 ++- BMA.EHR.Leave/Controllers/LeaveController.cs | 354 ++++++++++++++++-- .../GetAdditionalCheckRequestDto.cs | 3 + .../DTOs/ChangeRound/SearchProfileDto.cs | 4 + .../ChangeRound/SearchProfileResultDto.cs | 6 +- .../DTOs/CheckIn/CheckInHistoryForAdminDto.cs | 3 + .../CheckInProcessHistoryForAdminDto.cs | 3 + .../LeaveBeginnings/GetLeaveBeginningDto.cs | 4 + 8 files changed, 398 insertions(+), 23 deletions(-) diff --git a/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs b/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs index e37ab06a..e72c0c4f 100644 --- a/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs @@ -136,7 +136,49 @@ namespace BMA.EHR.Leave.Service.Controllers if (req.Keyword != "") result = result.Where(x => x.FullName!.Contains(req.Keyword)).ToList(); - + if (!string.IsNullOrWhiteSpace(req.sortBy)) + { + switch (req.sortBy.ToUpper()) + { + case "FULLNAME": + if (req.descending == true) + result = result.OrderByDescending(x => x.Prefix) + .ThenByDescending(x => x.FirstName) + .ThenByDescending(x => x.LastName) + .ToList(); + else + result = result.OrderBy(x => x.Prefix) + .ThenBy(x => x.FirstName) + .ThenBy(x => x.LastName) + .ToList(); + break; + case "LEAVETYPE": + if (req.descending == true) + result = result.OrderByDescending(x => x.LeaveType).ToList(); + else + result = result.OrderBy(x => x.LeaveType).ToList(); + break; + case "LEAVEYEAR": + if (req.descending == true) + result = result.OrderByDescending(x => x.LeaveYear).ToList(); + else + result = result.OrderBy(x => x.LeaveYear).ToList(); + break; + case "LEAVEDAYS": + if (req.descending == true) + result = result.OrderByDescending(x => x.LeaveDays).ToList(); + else + result = result.OrderBy(x => x.LeaveDays).ToList(); + break; + case "LEAVEDAYSUSED": + if (req.descending == true) + result = result.OrderByDescending(x => x.LeaveDaysUsed).ToList(); + else + result = result.OrderBy(x => x.LeaveDaysUsed).ToList(); + break; + default: break; + } + } 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/Controllers/LeaveController.cs b/BMA.EHR.Leave/Controllers/LeaveController.cs index 43972a06..08ec712b 100644 --- a/BMA.EHR.Leave/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveController.cs @@ -14,10 +14,12 @@ using BMA.EHR.Leave.Service.DTOs.ChangeRound; using BMA.EHR.Leave.Service.DTOs.CheckIn; using BMA.EHR.Leave.Service.DTOs.DutyTime; using BMA.EHR.Leave.Service.DTOs.LeaveRequest; +using iTextSharp.text; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.ObjectPool; +using Nest; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using RabbitMQ.Client; @@ -1257,7 +1259,7 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> LogRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string keyword = "", string profileType = "ALL") + public async Task> LogRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string keyword = "", string profileType = "ALL", string? sortBy = "", bool? descending = false) { var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN"); var jsonData = JsonConvert.DeserializeObject(getPermission); @@ -1305,6 +1307,9 @@ namespace BMA.EHR.Leave.Service.Controllers Id = d.Id, //FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken), FullName = $"{d.Prefix ?? ""}{d.FirstName ?? ""} {d.LastName ?? ""}", + Prefix = d.Prefix ?? "", + FirstName = d.FirstName ?? "", + LastName = d.LastName ?? "", ProfileType = d.ProfileType ?? "", CheckInDate = d.CheckIn.Date, @@ -1339,6 +1344,61 @@ namespace BMA.EHR.Leave.Service.Controllers if (profileType.Trim().ToUpper() != "ALL") data = data.Where(x => x.ProfileType == profileType.Trim().ToUpper()).ToList(); + if (!string.IsNullOrWhiteSpace(sortBy)) + { + switch (sortBy.ToUpper()) + { + case "FULLNAME": + if (descending == true) + data = data.OrderByDescending(x => x.Prefix) + .ThenByDescending(x => x.FirstName) + .ThenByDescending(x => x.LastName) + .ToList(); + else + data = data.OrderBy(x => x.Prefix) + .ThenBy(x => x.FirstName) + .ThenBy(x => x.LastName) + .ToList(); + break; + case "CHECKINTIME": + if (descending == true) + data = data.OrderByDescending(x => x.CheckInTime).ToList(); + else + data = data.OrderBy(x => x.CheckInTime).ToList(); + break; + case "CHECKINLOCATION": + if (descending == true) + data = data.OrderByDescending(x => x.CheckInLocation) + .ThenByDescending(x => x.CheckInLat) + .ThenByDescending(x => x.CheckInLon) + .ToList(); + else + data = data.OrderBy(x => x.CheckInLocation) + .ThenBy(x => x.CheckInLat) + .ThenBy(x => x.CheckInLon) + .ToList(); + break; + case "CHECKOUTTIME": + if (descending == true) + data = data.OrderByDescending(x => x.CheckOutTime).ToList(); + else + data = data.OrderBy(x => x.CheckOutTime).ToList(); + break; + case "CHECKOUTLOCATION": + if (descending == true) + data = data.OrderByDescending(x => x.CheckOutLocation) + .ThenByDescending(x => x.CheckOutLat) + .ThenByDescending(x => x.CheckOutLon) + .ToList(); + else + data = data.OrderBy(x => x.CheckOutLocation) + .ThenBy(x => x.CheckOutLat) + .ThenBy(x => x.CheckOutLon) + .ToList(); + break; + default: break; + } + } var pageData = data .Skip((page - 1) * pageSize) .Take(pageSize) @@ -1470,7 +1530,7 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] [AllowAnonymous] - public async Task> GetTimeRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string status = "NORMAL", string keyword = "", string profileType = "ALL") + public async Task> GetTimeRecordAsync([Required] DateTime startDate, [Required] DateTime endDate, int page = 1, int pageSize = 10, string status = "NORMAL", string keyword = "", string profileType = "ALL", string? sortBy = "", bool? descending = false) { var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN"); var jsonData = JsonConvert.DeserializeObject(getPermission); @@ -1557,6 +1617,9 @@ namespace BMA.EHR.Leave.Service.Controllers { Id = d.Id, FullName = $"{d.Prefix ?? ""}{d.FirstName ?? ""} {d.LastName ?? ""}", + Prefix = d.Prefix ?? "", + FirstName = d.FirstName ?? "", + LastName = d.LastName ?? "", ProfileType = d.ProfileType ?? "", CheckInDate = d.CheckIn.Date, @@ -1656,6 +1719,61 @@ namespace BMA.EHR.Leave.Service.Controllers if (profileType.Trim().ToUpper() != "ALL") data = data.Where(x => x.ProfileType == profileType.Trim().ToUpper()).ToList(); + if (!string.IsNullOrWhiteSpace(sortBy)) + { + switch (sortBy.ToUpper()) + { + case "FULLNAME": + if (descending == true) + data = data.OrderByDescending(x => x.Prefix) + .ThenByDescending(x => x.FirstName) + .ThenByDescending(x => x.LastName) + .ToList(); + else + data = data.OrderBy(x => x.Prefix) + .ThenBy(x => x.FirstName) + .ThenBy(x => x.LastName) + .ToList(); + break; + case "CHECKINTIME": + if (descending == true) + data = data.OrderByDescending(x => x.CheckInTime).ToList(); + else + data = data.OrderBy(x => x.CheckInTime).ToList(); + break; + case "CHECKINLOCATION": + if (descending == true) + data = data.OrderByDescending(x => x.CheckInLocation) + .ThenByDescending(x => x.CheckInLat) + .ThenByDescending(x => x.CheckInLon) + .ToList(); + else + data = data.OrderBy(x => x.CheckInLocation) + .ThenBy(x => x.CheckInLat) + .ThenBy(x => x.CheckInLon) + .ToList(); + break; + case "CHECKOUTTIME": + if (descending == true) + data = data.OrderByDescending(x => x.CheckOutTime).ToList(); + else + data = data.OrderBy(x => x.CheckOutTime).ToList(); + break; + case "CHECKOUTLOCATION": + if (descending == true) + data = data.OrderByDescending(x => x.CheckOutLocation) + .ThenByDescending(x => x.CheckOutLat) + .ThenByDescending(x => x.CheckOutLon) + .ToList(); + else + data = data.OrderBy(x => x.CheckOutLocation) + .ThenBy(x => x.CheckOutLat) + .ThenBy(x => x.CheckOutLon) + .ToList(); + break; + default: break; + } + } var pageData = data .Skip((page - 1) * pageSize) .Take(pageSize) @@ -1712,13 +1830,13 @@ namespace BMA.EHR.Leave.Service.Controllers } var profile = await _userProfileRepository.SearchProfile(req.CitizenId, req.FirstName, req.LastName, AccessToken ?? "", role, nodeId, profileAdmin?.Node); - var pagedProfile = profile.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList(); + //var pagedProfile = profile.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList(); var getDefaultRound = await _dutyTimeRepository.GetDefaultAsync(); var resultSet = new List(); - foreach (var p in pagedProfile) + foreach (var p in profile) { var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id); @@ -1738,8 +1856,46 @@ namespace BMA.EHR.Leave.Service.Controllers }; resultSet.Add(res); } + if (!string.IsNullOrWhiteSpace(req.sortBy)) + { + switch (req.sortBy.ToUpper()) + { + case "CITIZENID": + if (req.descending == true) + profile = profile.OrderByDescending(x => x.CitizenId).ToList(); + else + profile = profile.OrderBy(x => x.CitizenId).ToList(); + break; + case "FULLNAME": + if (req.descending == true) + profile = profile.OrderByDescending(x => x.Prefix) + .ThenByDescending(x => x.FirstName) + .ThenByDescending(x => x.LastName) + .ToList(); + else + profile = profile.OrderBy(x => x.Prefix) + .ThenBy(x => x.FirstName) + .ThenBy(x => x.LastName) + .ToList(); + break; + case "STARTTIMEMORNING": + if (req.descending == true) + resultSet = resultSet.OrderByDescending(x => x.StartTimeMorning).ToList(); + else + resultSet = resultSet.OrderBy(x => x.StartTimeMorning).ToList(); + break; + case "EFFECTIVEDATE": + if (req.descending == true) + resultSet = resultSet.OrderByDescending(x => x.EffectiveDate).ToList(); + else + resultSet = resultSet.OrderBy(x => x.EffectiveDate).ToList(); + break; + default: break; + } + } + var pageResult = resultSet.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList(); - return Success(new { data = resultSet, total = profile.Count }); + return Success(new { data = pageResult, total = profile.Count }); } /// @@ -1813,7 +1969,7 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetChangeRoundHistoryByProfileIdAsync(Guid id, int page = 1, int pageSize = 10, string keyword = "") + public async Task> GetChangeRoundHistoryByProfileIdAsync(Guid id, int page = 1, int pageSize = 10, string keyword = "", string? sortBy = "", bool? descending = false) { var getWorkflow = await _permission.GetPermissionAPIWorkflowAsync(id.ToString(), "SYS_WORK_ROUND_EDIT"); if (getWorkflow == false) @@ -1834,7 +1990,7 @@ namespace BMA.EHR.Leave.Service.Controllers resultSet = data .GroupBy(item => item.ProfileId) .SelectMany(group => group - .OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ + //.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ .Select((item, index) => new ChangeRoundHistoryDto { Round = index + 1, @@ -1843,10 +1999,44 @@ namespace BMA.EHR.Leave.Service.Controllers EffectiveDate = item.EffectiveDate.Value, Remark = item.Remark })) - .Skip((page - 1) * pageSize) - .Take(pageSize) + //.Skip((page - 1) * pageSize) + //.Take(pageSize) .ToList(); - + if (!string.IsNullOrWhiteSpace(sortBy)) + { + switch (sortBy.ToUpper()) + { + case "ROUNT": + if (descending == true) + resultSet = resultSet.OrderByDescending(x => x.Round).ToList(); + else + resultSet = resultSet.OrderBy(x => x.Round).ToList(); + break; + case "STARTTIMEMORNIONG": + if (descending == true) + resultSet = resultSet.OrderByDescending(x => x.StartTimeMorning).ToList(); + else + resultSet = resultSet.OrderBy(x => x.StartTimeMorning).ToList(); + break; + case "EFFECTIVEDATE": + if (descending == true) + resultSet = resultSet.OrderByDescending(x => x.EffectiveDate).ToList(); + else + resultSet = resultSet.OrderBy(x => x.EffectiveDate).ToList(); + break; + case "REMARK": + if (descending == true) + resultSet = resultSet.OrderByDescending(x => x.Remark).ToList(); + else + resultSet = resultSet.OrderBy(x => x.Remark).ToList(); + break; + default: break; + } + } + resultSet = resultSet + .Skip((page - 1) * pageSize) + .Take(pageSize) + .ToList(); } return Success(new { data = resultSet, total = data.Count }); @@ -1901,13 +2091,13 @@ namespace BMA.EHR.Leave.Service.Controllers } var profile = await _userProfileRepository.SearchProfileEmployee(req.CitizenId, req.FirstName, req.LastName, AccessToken ?? "", role, nodeId, profileAdmin?.Node); - var pagedProfile = profile.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList(); + //var pagedProfile = profile.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList(); var getDefaultRound = await _dutyTimeRepository.GetDefaultAsync(); var resultSet = new List(); - foreach (var p in pagedProfile) + foreach (var p in profile) { var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id); @@ -1927,8 +2117,45 @@ namespace BMA.EHR.Leave.Service.Controllers }; resultSet.Add(res); } - - return Success(new { data = resultSet, total = profile.Count }); + if (!string.IsNullOrWhiteSpace(req.sortBy)) + { + switch (req.sortBy.ToUpper()) + { + case "CITIZENID": + if (req.descending == true) + resultSet = resultSet.OrderByDescending(x => x.CitizenId).ToList(); + else + resultSet = resultSet.OrderBy(x => x.CitizenId).ToList(); + break; + case "FULLNAME": + if (req.descending == true) + resultSet = resultSet.OrderByDescending(x => x.Prefix) + .ThenByDescending(x => x.FirstName) + .ThenByDescending(x => x.LastName) + .ToList(); + else + resultSet = resultSet.OrderBy(x => x.Prefix) + .ThenBy(x => x.FirstName) + .ThenBy(x => x.LastName) + .ToList(); + break; + case "STARTTIMEMORNING": + if (req.descending == true) + resultSet = resultSet.OrderByDescending(x => x.StartTimeMorning).ToList(); + else + resultSet = resultSet.OrderBy(x => x.StartTimeMorning).ToList(); + break; + case "EFFECTIVEDATE": + if (req.descending == true) + resultSet = resultSet.OrderByDescending(x => x.EffectiveDate).ToList(); + else + resultSet = resultSet.OrderBy(x => x.EffectiveDate).ToList(); + break; + default: break; + } + } + var pageResult = resultSet.Skip((req.Page - 1) * req.PageSize).Take(req.PageSize).ToList(); + return Success(new { data = pageResult, total = profile.Count }); } /// @@ -2001,7 +2228,7 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetChangeEmpRoundHistoryByProfileIdAsync(Guid id, int page = 1, int pageSize = 10, string keyword = "") + public async Task> GetChangeEmpRoundHistoryByProfileIdAsync(Guid id, int page = 1, int pageSize = 10, string keyword = "", string? sortBy = "", bool? descending = false) { var getWorkflow = await _permission.GetPermissionAPIWorkflowAsync(id.ToString(), "SYS_WORK_ROUND_EDIT"); if (getWorkflow == false) @@ -2022,7 +2249,7 @@ namespace BMA.EHR.Leave.Service.Controllers resultSet = data .GroupBy(item => item.ProfileId) .SelectMany(group => group - .OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ + //.OrderBy(item => item.EffectiveDate) // เรียงลำดับตาม property ที่คุณต้องการ .Select((item, index) => new ChangeRoundHistoryDto { Round = index + 1, @@ -2031,10 +2258,44 @@ namespace BMA.EHR.Leave.Service.Controllers EffectiveDate = item.EffectiveDate.Value, Remark = item.Remark })) - .Skip((page - 1) * pageSize) - .Take(pageSize) + //.Skip((page - 1) * pageSize) + //.Take(pageSize) .ToList(); - + if (!string.IsNullOrWhiteSpace(sortBy)) + { + switch (sortBy.ToUpper()) + { + case "ROUNT": + if (descending == true) + resultSet = resultSet.OrderByDescending(x => x.Round).ToList(); + else + resultSet = resultSet.OrderBy(x => x.Round).ToList(); + break; + case "STARTTIMEMORNIONG": + if (descending == true) + resultSet = resultSet.OrderByDescending(x => x.StartTimeMorning).ToList(); + else + resultSet = resultSet.OrderBy(x => x.StartTimeMorning).ToList(); + break; + case "EFFECTIVEDATE": + if (descending == true) + resultSet = resultSet.OrderByDescending(x => x.EffectiveDate).ToList(); + else + resultSet = resultSet.OrderBy(x => x.EffectiveDate).ToList(); + break; + case "REMARK": + if (descending == true) + resultSet = resultSet.OrderByDescending(x => x.Remark).ToList(); + else + resultSet = resultSet.OrderBy(x => x.Remark).ToList(); + break; + default: break; + } + } + resultSet = resultSet + .Skip((page - 1) * pageSize) + .Take(pageSize) + .ToList(); } return Success(new { data = resultSet, total = data.Count }); @@ -2175,7 +2436,7 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task> GetAdditionalCheckRequestAsync([Required] int year, [Required] int month, [Required] int page = 1, [Required] int pageSize = 10, string keyword = "") + public async Task> GetAdditionalCheckRequestAsync([Required] int year, [Required] int month, [Required] int page = 1, [Required] int pageSize = 10, string keyword = "", string? sortBy = "", bool? descending = false) { var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN_SPECIAL"); var jsonData = JsonConvert.DeserializeObject(getPermission); @@ -2240,6 +2501,9 @@ namespace BMA.EHR.Leave.Service.Controllers { Id = data.Id, FullName = $"{data.Prefix}{data.FirstName} {data.LastName}", + Prefix = data.Prefix ?? "", + FirstName = data.FirstName ?? "", + LastName = data.LastName ?? "", //FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}", CreatedAt = data.CreatedAt, CheckDate = data.CheckDate, @@ -2296,7 +2560,55 @@ namespace BMA.EHR.Leave.Service.Controllers { result = result.Where(x => x.FullName.Contains(keyword)).ToList(); } - + if (!string.IsNullOrWhiteSpace(sortBy)) + { + switch (sortBy.ToUpper()) + { + case "FULLNAME": + if (descending == true) + result = result.OrderByDescending(x => x.Prefix) + .ThenByDescending(x => x.FirstName) + .ThenByDescending(x => x.LastName) + .ToList(); + else + result = result.OrderBy(x => x.Prefix) + .ThenBy(x => x.FirstName) + .ThenBy(x => x.LastName) + .ToList(); + break; + case "CREATEDAT": + if (descending == true) + result = result.OrderByDescending(x => x.CreatedAt).ToList(); + else + result = result.OrderBy(x => x.CreatedAt).ToList(); + break; + case "CHECKDATE": + if (descending == true) + result = result.OrderByDescending(x => x.CheckDate).ToList(); + else + result = result.OrderBy(x => x.CheckDate).ToList(); + break; + case "STARTTIMEMORNING": + if (descending == true) + result = result.OrderByDescending(x => x.StartTimeMorning).ToList(); + else + result = result.OrderBy(x => x.StartTimeMorning).ToList(); + break; + case "STARTTIMEAFTERNOON": + if (descending == true) + result = result.OrderByDescending(x => x.StartTimeAfternoon).ToList(); + else + result = result.OrderBy(x => x.StartTimeAfternoon).ToList(); + break; + case "DESCRIPTION": + if (descending == true) + result = result.OrderByDescending(x => x.Description).ToList(); + else + result = result.OrderBy(x => x.Description).ToList(); + break; + default: break; + } + } var pageResult = result.Skip((page - 1) * pageSize).Take(pageSize) .OrderBy(x => x.StatusSort) .ToList(); diff --git a/BMA.EHR.Leave/DTOs/AdditionalCheck/GetAdditionalCheckRequestDto.cs b/BMA.EHR.Leave/DTOs/AdditionalCheck/GetAdditionalCheckRequestDto.cs index 8c04223d..b315b1b5 100644 --- a/BMA.EHR.Leave/DTOs/AdditionalCheck/GetAdditionalCheckRequestDto.cs +++ b/BMA.EHR.Leave/DTOs/AdditionalCheck/GetAdditionalCheckRequestDto.cs @@ -5,6 +5,9 @@ public Guid Id { get; set; } public string FullName { get; set; } + public string? Prefix { get; set; } = string.Empty; + public string? FirstName { get; set; } = string.Empty; + public string? LastName { get; set; } = string.Empty; public DateTime CreatedAt { get; set; } diff --git a/BMA.EHR.Leave/DTOs/ChangeRound/SearchProfileDto.cs b/BMA.EHR.Leave/DTOs/ChangeRound/SearchProfileDto.cs index 52bb769c..3b05ad29 100644 --- a/BMA.EHR.Leave/DTOs/ChangeRound/SearchProfileDto.cs +++ b/BMA.EHR.Leave/DTOs/ChangeRound/SearchProfileDto.cs @@ -13,5 +13,9 @@ public int PageSize { get; set; } = 10; public string? Keyword { get; set; } + + public string? sortBy { get; set; } + + public bool? descending { get; set; } } } diff --git a/BMA.EHR.Leave/DTOs/ChangeRound/SearchProfileResultDto.cs b/BMA.EHR.Leave/DTOs/ChangeRound/SearchProfileResultDto.cs index 6c5bf334..83b4d7b9 100644 --- a/BMA.EHR.Leave/DTOs/ChangeRound/SearchProfileResultDto.cs +++ b/BMA.EHR.Leave/DTOs/ChangeRound/SearchProfileResultDto.cs @@ -6,7 +6,11 @@ public string CitizenId { get; set; } - public string FullName { get; set; } + public string FullName { get; set; } + + public string? Prefix { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } public string StartTimeMorning { get; set; } diff --git a/BMA.EHR.Leave/DTOs/CheckIn/CheckInHistoryForAdminDto.cs b/BMA.EHR.Leave/DTOs/CheckIn/CheckInHistoryForAdminDto.cs index ac4e0e9b..c6e13b54 100644 --- a/BMA.EHR.Leave/DTOs/CheckIn/CheckInHistoryForAdminDto.cs +++ b/BMA.EHR.Leave/DTOs/CheckIn/CheckInHistoryForAdminDto.cs @@ -5,6 +5,9 @@ public Guid Id { get; set; } = Guid.Empty; public string FullName { get; set; } = string.Empty; + public string? Prefix { get; set; } = string.Empty; + public string? FirstName { get; set; } = string.Empty; + public string? LastName { get; set; } = string.Empty; public DateTime? CheckInDate { get; set; } = DateTime.MinValue; diff --git a/BMA.EHR.Leave/DTOs/CheckIn/CheckInProcessHistoryForAdminDto.cs b/BMA.EHR.Leave/DTOs/CheckIn/CheckInProcessHistoryForAdminDto.cs index be150bdc..9ec96c35 100644 --- a/BMA.EHR.Leave/DTOs/CheckIn/CheckInProcessHistoryForAdminDto.cs +++ b/BMA.EHR.Leave/DTOs/CheckIn/CheckInProcessHistoryForAdminDto.cs @@ -5,6 +5,9 @@ public Guid Id { get; set; } = Guid.Empty; public string FullName { get; set; } = string.Empty; + public string? Prefix { get; set; } = string.Empty; + public string? FirstName { get; set; } = string.Empty; + public string? LastName { get; set; } = string.Empty; public DateTime? CheckInDate { get; set; } = DateTime.MinValue; diff --git a/BMA.EHR.Leave/DTOs/LeaveBeginnings/GetLeaveBeginningDto.cs b/BMA.EHR.Leave/DTOs/LeaveBeginnings/GetLeaveBeginningDto.cs index 3c3fe77d..587b99b3 100644 --- a/BMA.EHR.Leave/DTOs/LeaveBeginnings/GetLeaveBeginningDto.cs +++ b/BMA.EHR.Leave/DTOs/LeaveBeginnings/GetLeaveBeginningDto.cs @@ -16,5 +16,9 @@ namespace BMA.EHR.Leave.Service.DTOs.LeaveBeginnings public int PageSize { get; set; } = 10; public string Keyword { get; set; } = string.Empty; + + public string? sortBy { get; set; } + + public bool? descending { get; set; } } }