Fix รายงานให้แสดงรายชื่อตรงสังกัดที่เลือก issue #1606
Some checks failed
release-dev / release-dev (push) Failing after 12s

This commit is contained in:
Bright 2025-07-09 16:14:15 +07:00
parent c348dae155
commit e58bda8e9e
4 changed files with 45 additions and 9 deletions

View file

@ -1461,7 +1461,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
return res;
}
public async Task<List<GetSumApproveLeaveByRootDto>> GetSumApproveLeaveByRootAndRange(DateTime startDate, DateTime endDate, string type, string role, string? nodeId, int? node)
public async Task<List<GetSumApproveLeaveByRootDto>> GetSumApproveLeaveByRootAndRange(DateTime startDate, DateTime endDate, string type, string role, string? nodeId, int? node, string? nodeIdByReq, int? nodeByReq)
{
// var _nodeId = Guid.Parse(nodeId);
var data = new List<LeaveRequest>();
@ -1489,7 +1489,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
.Where(x => x.ProfileType == type.Trim().ToUpper())
.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date)
.Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING").ToListAsync();
// กรองตามสิทธิ์ admin ก่อน
if (role == "OWNER")
{
node = null;
@ -1519,7 +1519,13 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
true
).ToList();
}
// กรองตามที่ fe ส่งมา
if (role == "ROOT" || role == "OWNER" || role == "CHILD")
{
data = data
.Where(x => nodeByReq == 4 ? x.Child4Id == Guid.Parse(nodeIdByReq) : nodeByReq == 3 ? x.Child3Id == Guid.Parse(nodeIdByReq) : nodeByReq == 2 ? x.Child2Id == Guid.Parse(nodeIdByReq) : nodeByReq == 1 ? x.Child1Id == Guid.Parse(nodeIdByReq) : nodeByReq == 0 ? x.RootId == Guid.Parse(nodeIdByReq) : true)
.ToList();
}
var res = (from d in data
group d by new { d.Root, d.Child1, d.Child2, d.Child3, d.Child4 } into grp
orderby grp.Key.Root, grp.Key.Child1, grp.Key.Child2, grp.Key.Child3, grp.Key.Child4

View file

@ -139,9 +139,9 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
return data;
}
public async Task<List<ProcessUserTimeStamp>> GetTimestampByDateLateAsync(string type, string role, string nodeId, int? node, DateTime StartDate, DateTime EndDate)
public async Task<List<ProcessUserTimeStamp>> GetTimestampByDateLateAsync(string type, string role, string nodeId, int? node, string nodeIdByReq, int? nodeByReq, DateTime StartDate, DateTime EndDate)
{
var _nodeId = Guid.Parse(nodeId);
var _nodeId = role != "OWNER" ? Guid.Parse(nodeId) : Guid.Parse("00000000-0000-0000-0000-000000000000");
var data = new List<ProcessUserTimeStamp>();
//if (role == "OWNER" || role == "CHILD")
//{
@ -166,7 +166,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
.Where(x => x.CheckInStatus == "LATE")
.Where(u => u.CheckIn.Date >= StartDate && u.CheckIn.Date <= EndDate)
.Where(x => x.ProfileType == type.Trim().ToUpper()).ToListAsync();
// กรองตามสิทธิ์ admin ก่อน
if (role == "OWNER")
{
node = null;
@ -196,6 +196,17 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
true
).ToList();
}
// กรองตามที่ fe ส่งมา
if (role == "ROOT" || role == "OWNER" || role == "CHILD")
{
data = data.Where(x =>
nodeByReq == 4 ? x.Child4Id == Guid.Parse(nodeIdByReq) :
nodeByReq == 3 ? x.Child3Id == Guid.Parse(nodeIdByReq) :
nodeByReq == 2 ? x.Child2Id == Guid.Parse(nodeIdByReq) :
nodeByReq == 1 ? x.Child1Id == Guid.Parse(nodeIdByReq) :
nodeByReq == 0 ? x.RootId == Guid.Parse(nodeIdByReq) : true
).ToList();
}
return data;
}

View file

@ -16,5 +16,11 @@ namespace BMA.EHR.Application.Responses.Profiles
public string? PositionLevel { get; set; }
public string? PositionType { get; set; }
public string? Oc { get; set; }
public string? OrgRootId { get; set; }
public string? OrgChild1Id { get; set; }
public string? OrgChild2Id { get; set; }
public string? OrgChild3Id { get; set; }
public string? OrgChild4Id { get; set; }
}
}

View file

@ -997,7 +997,13 @@ namespace BMA.EHR.Leave.Service.Controllers
var count = 1;
var employees = new List<dynamic>();
// กรองตามที่ fe ส่งมา
if (role == "ROOT" || role == "OWNER" || role == "CHILD")
{
profile = profile
.Where(x => req.node == 4 ? x.OrgChild4Id == req.nodeId : req.node == 3 ? x.OrgChild3Id == req.nodeId : req.node == 2 ? x.OrgChild2Id == req.nodeId : req.node == 1 ? x.OrgChild1Id == req.nodeId : req.node == 0 ? x.OrgRootId == req.nodeId : true)
.ToList();
}
foreach (var p in profile)
{
var keycloakUserId = p.Keycloak ?? Guid.Empty;
@ -1457,6 +1463,13 @@ namespace BMA.EHR.Leave.Service.Controllers
var studyTotal = 0;
var workTotal = 0;
var seminarTotal = 0;
// กรองตามที่ fe ส่งมา
if (role == "ROOT" || role == "OWNER" || role == "CHILD")
{
profile = profile
.Where(x => req.node == 4 ? x.OrgChild4Id == req.nodeId : req.node == 3 ? x.OrgChild3Id == req.nodeId : req.node == 2 ? x.OrgChild2Id == req.nodeId : req.node == 1 ? x.OrgChild1Id == req.nodeId : req.node == 0 ? x.OrgRootId == req.nodeId : true)
.ToList();
}
foreach (var dd in dateList)
{
foreach (var p in profile)
@ -1702,7 +1715,7 @@ namespace BMA.EHR.Leave.Service.Controllers
nodeId = profileAdmin?.RootDnaId;
}
//var userTimeStamps = await _processUserTimeStampRepository.GetTimestampByDateLateAsync(type.Trim().ToUpper(), jsonData["result"]?.ToString(), req.nodeId, req.node, req.StartDate, req.EndDate);
var userTimeStamps = await _processUserTimeStampRepository.GetTimestampByDateLateAsync(type.Trim().ToUpper(), role, nodeId, profileAdmin.Node, req.StartDate, req.EndDate);
var userTimeStamps = await _processUserTimeStampRepository.GetTimestampByDateLateAsync(type.Trim().ToUpper(), role, nodeId, profileAdmin.Node, req.nodeId, req.node, req.StartDate, req.EndDate);
foreach (var p in userTimeStamps)
{
var fullName = $"{p.Prefix}{p.FirstName} {p.LastName}";
@ -1807,7 +1820,7 @@ namespace BMA.EHR.Leave.Service.Controllers
{
nodeId = profileAdmin?.RootDnaId;
}
var leaveDays = await _leaveRequestRepository.GetSumApproveLeaveByRootAndRange(req.StartDate, req.EndDate, type, jsonData["result"]?.ToString(), nodeId, profileAdmin?.Node);
var leaveDays = await _leaveRequestRepository.GetSumApproveLeaveByRootAndRange(req.StartDate, req.EndDate, type, jsonData["result"]?.ToString(), nodeId, profileAdmin?.Node, req.nodeId, req.node);
var enddate = req.EndDate.Date == req.StartDate.Date ? "" : $" - {req.EndDate.Date.ToThaiShortDate().ToThaiNumber()}";
var result = new
{