From 1739aa8057e8ea3224a845b03996732e1c0568d2 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Thu, 7 May 2026 16:14:01 +0700 Subject: [PATCH] fix issue #1575 --- .../AdditionalCheckRequestRepository.cs | 73 +++++++++++++++++++ BMA.EHR.Leave/Controllers/LeaveController.cs | 6 +- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/TimeAttendants/AdditionalCheckRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/TimeAttendants/AdditionalCheckRequestRepository.cs index 0544e261..d4bc0ea8 100644 --- a/BMA.EHR.Application/Repositories/Leaves/TimeAttendants/AdditionalCheckRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/TimeAttendants/AdditionalCheckRequestRepository.cs @@ -213,6 +213,79 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants } } + public async Task> GetAdditionalCheckRequestsByAdminRole2(DateTime startDate, DateTime endDate, string role, string nodeId, int? node, string? keyword, string? status) + { + try + { + var data = await _dbContext.Set().AsQueryable() + .Where(x => (x.CheckDate.Date >= startDate.Date && x.CheckDate.Date <= endDate.Date)) + .OrderByDescending(x => x.CreatedAt.Date) + .ToListAsync(); + + if(!string.IsNullOrEmpty(status)) + data = data.Where(x => x.Status == status).ToList(); + + + if (!string.IsNullOrEmpty(keyword)) + { + data = data.Where(x => + ( + (x.Prefix ?? "") + (x.FirstName ?? "") + " " + (x.LastName ?? "")).Contains(keyword) + || x.Description.Contains(keyword) + + ).ToList(); + } + + if (role == "OWNER") + { + node = null; + } + if (role == "OWNER" || role == "CHILD") + { + data = data + .Where(x => node == 4 ? x.Child4DnaId == Guid.Parse(nodeId!) : (node == 3 ? x.Child3DnaId == Guid.Parse(nodeId!) : (node == 2 ? x.Child2DnaId == Guid.Parse(nodeId!) : (node == 1 ? x.Child1DnaId == Guid.Parse(nodeId!) : (node == 0 ? x.RootDnaId == Guid.Parse(nodeId!) : (node == null ? true : true)))))) + .ToList(); + } + else if (role == "BROTHER") + { + data = data + .Where(x => node == 4 ? x.Child3DnaId == Guid.Parse(nodeId!) : (node == 3 ? x.Child2DnaId == Guid.Parse(nodeId!) : (node == 2 ? x.Child1DnaId == Guid.Parse(nodeId!) : (node == 1 || node == 0 ? x.RootDnaId == Guid.Parse(nodeId!) : (node == null ? true : true))))) + .ToList(); + } + else if (role == "ROOT") + { + data = data + .Where(x => x.RootDnaId == Guid.Parse(nodeId!)).ToList(); + } + // else if (role == "PARENT") + // { + // data = data + // .Where(x => x.RootDnaId == Guid.Parse(nodeId!) && x.Child1DnaId != null && x.Child1DnaId != Guid.Empty).ToList(); + // } + else if (role == "NORMAL") + { + data = data.Where(x => + node == 0 ? x.RootDnaId == Guid.Parse(nodeId!) && + (x.Child1DnaId == Guid.Empty || x.Child1DnaId == null) : + node == 1 ? x.Child1DnaId == Guid.Parse(nodeId!) && + (x.Child2DnaId == Guid.Empty || x.Child2DnaId == null) : + node == 2 ? x.Child2DnaId == Guid.Parse(nodeId!) && + (x.Child3DnaId == Guid.Empty || x.Child3DnaId == null) : + node == 3 ? x.Child3DnaId == Guid.Parse(nodeId!) && + (x.Child4DnaId == Guid.Empty || x.Child4DnaId == null) : + node == 4 ? x.Child4DnaId == Guid.Parse(nodeId!) : + true + ).ToList(); + } + return data; + } + catch + { + throw; + } + } + + #endregion } } diff --git a/BMA.EHR.Leave/Controllers/LeaveController.cs b/BMA.EHR.Leave/Controllers/LeaveController.cs index 0d435edd..ee894ed4 100644 --- a/BMA.EHR.Leave/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveController.cs @@ -3185,7 +3185,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 = "", string? sortBy = "", bool? descending = false) + public async Task> GetAdditionalCheckRequestAsync([Required] DateTime startDate, [Required] DateTime endDate, [Required] int page = 1, [Required] int pageSize = 10, string keyword = "", string? sortBy = "", bool? descending = false,string? status = "") { var jsonData = await _permission.GetPermissionWithActingAPIAsync("LIST", "SYS_CHECKIN_SPECIAL"); //var jsonData = JsonConvert.DeserializeObject(getPermission); @@ -3230,7 +3230,7 @@ namespace BMA.EHR.Leave.Service.Controllers } //var rawData = await _additionalCheckRequestRepository.GetAdditionalCheckRequests(year, month); - var rawData = await _additionalCheckRequestRepository.GetAdditionalCheckRequestsByAdminRole(year, month, role, nodeId, profileAdmin?.Node, keyword); + var rawData = await _additionalCheckRequestRepository.GetAdditionalCheckRequestsByAdminRole2(startDate, endDate, role, nodeId, profileAdmin?.Node, keyword,status); // ถ้ามีการรักษาการ if (jsonData.result.isAct) @@ -3298,7 +3298,7 @@ namespace BMA.EHR.Leave.Service.Controllers actNode = 0; } - var rawDataAct = await _additionalCheckRequestRepository.GetAdditionalCheckRequestsByAdminRole(year, month, actRole, actNodeId, profileAdmin?.Node, keyword); + var rawDataAct = await _additionalCheckRequestRepository.GetAdditionalCheckRequestsByAdminRole2(startDate, endDate, actRole, actNodeId, profileAdmin?.Node, keyword,status); if (rawDataAct != null) { if (rawData != null)