From 5451c49dbe9490c50e05f331e99c940ae3bb367c Mon Sep 17 00:00:00 2001 From: harid Date: Thu, 4 Dec 2025 22:13:25 +0700 Subject: [PATCH] =?UTF-8?q?fix=20=E0=B8=AA=E0=B8=B4=E0=B8=97=E0=B8=98?= =?UTF-8?q?=E0=B8=B4=E0=B9=8C=E0=B9=80=E0=B8=A1=E0=B8=99=E0=B8=B9=E0=B8=88?= =?UTF-8?q?=E0=B8=B3=E0=B8=99=E0=B8=A7=E0=B8=99=E0=B8=AA=E0=B8=B4=E0=B8=97?= =?UTF-8?q?=E0=B8=98=E0=B8=B4=E0=B9=8C=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B8=A5?= =?UTF-8?q?=E0=B8=B2=E0=B8=97=E0=B8=B5=E0=B9=88=E0=B9=83=E0=B8=8A=E0=B9=89?= =?UTF-8?q?=E0=B9=84=E0=B8=9B=20#2094?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LeaveRequests/LeaveBeginingRepository.cs | 14 +++- .../Controllers/LeaveBeginningController.cs | 71 +++++++++++++++++-- 2 files changed, 79 insertions(+), 6 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveBeginingRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveBeginingRepository.cs index 0fe5df08..8e0429c7 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveBeginingRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveBeginingRepository.cs @@ -155,7 +155,12 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests FirstName = pf.FirstName, LastName = pf.LastName, LeaveDaysUsed = 0, - LeaveDays = leaveType?.Code == "LV-005" ? limit : 0 + LeaveDays = leaveType?.Code == "LV-005" ? limit : 0, + RootDnaId = pf.RootDnaId, + Child1DnaId = pf.Child1DnaId, + Child2DnaId = pf.Child2DnaId, + Child3DnaId = pf.Child3DnaId, + Child4DnaId = pf.Child4DnaId }; _dbContext.Set().Add(data); @@ -216,7 +221,12 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests FirstName = pf.FirstName, LastName = pf.LastName, LeaveDaysUsed = 0, - LeaveDays = leaveType?.Code == "LV-005" ? limit : 0 + LeaveDays = leaveType?.Code == "LV-005" ? limit : 0, + RootDnaId = pf.RootDnaId, + Child1DnaId = pf.Child1DnaId, + Child2DnaId = pf.Child2DnaId, + Child3DnaId = pf.Child3DnaId, + Child4DnaId = pf.Child4DnaId }; _dbContext.Set().Add(data); diff --git a/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs b/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs index 1c815e6c..83bd79d2 100644 --- a/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs @@ -12,6 +12,7 @@ using OfficeOpenXml.ConditionalFormatting; using Swashbuckle.AspNetCore.Annotations; using System.Security.Claims; using Microsoft.EntityFrameworkCore; +using BMA.EHR.Application.Responses.Profiles; namespace BMA.EHR.Leave.Service.Controllers { @@ -109,6 +110,62 @@ namespace BMA.EHR.Leave.Service.Controllers if (req.Type != Guid.Empty) resData = resData.Where(x => x.LeaveTypeId == req.Type).ToList(); + //กรองสิทธิ์ + string role = jsonData["result"]?.ToString(); + var nodeId = string.Empty; + var profileAdmin = new GetUserOCAllDto(); + profileAdmin = await _userProfileRepository.GetUserOCAll(Guid.Parse(UserId!), AccessToken); + if (role == "NORMAL" || role == "CHILD") + { + nodeId = profileAdmin?.Node == 4 + ? profileAdmin?.Child4DnaId + : profileAdmin?.Node == 3 + ? profileAdmin?.Child3DnaId + : profileAdmin?.Node == 2 + ? profileAdmin?.Child2DnaId + : profileAdmin?.Node == 1 + ? profileAdmin?.Child1DnaId + : profileAdmin?.Node == 0 + ? profileAdmin?.RootDnaId + : ""; + } + else if (role == "ROOT" || role == "PARENT") + { + nodeId = profileAdmin?.RootDnaId; + } + + int? node = profileAdmin?.Node; + if (role == "OWNER") + { + node = null; + } + if (role == "OWNER" || role == "CHILD") + { + resData = resData + .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 == "ROOT") + { + resData = resData + .Where(x => x.RootDnaId == Guid.Parse(nodeId!)).ToList(); + } + else if (role == "PARENT") + { + resData = resData + .Where(x => x.RootDnaId == Guid.Parse(nodeId!) && x.Child1DnaId != null).ToList(); + } + else if (role == "NORMAL") + { + resData = resData + .Where(x => + node == 0 ? x.RootDnaId == Guid.Parse(nodeId!) && x.Child1DnaId == null : + node == 1 ? x.Child1DnaId == Guid.Parse(nodeId!) && x.Child2DnaId == null : + node == 2 ? x.Child2DnaId == Guid.Parse(nodeId!) && x.Child3DnaId == null : + node == 3 ? x.Child3DnaId == Guid.Parse(nodeId!) && x.Child4DnaId == null : + node == 4 ? x.Child4DnaId == Guid.Parse(nodeId!) : true).ToList(); + } + //END + var result = new List(); foreach (var item in resData) @@ -205,7 +262,7 @@ namespace BMA.EHR.Leave.Service.Controllers { try { - var getPermission = await _permission.GetPermissionAPIAsync("DELETE", "SYS_LEAVE_LIST"); + var getPermission = await _permission.GetPermissionAPIAsync("DELETE", "SYS_LEAVE_HISTORY"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { @@ -237,7 +294,7 @@ namespace BMA.EHR.Leave.Service.Controllers { try { - var getPermission = await _permission.GetPermissionAPIAsync("GET", "SYS_LEAVE_LIST"); + var getPermission = await _permission.GetPermissionAPIAsync("GET", "SYS_LEAVE_HISTORY"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { @@ -270,7 +327,7 @@ namespace BMA.EHR.Leave.Service.Controllers { var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); - var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_LIST"); + var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_HISTORY"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { @@ -325,7 +382,7 @@ namespace BMA.EHR.Leave.Service.Controllers try { var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); - var getPermission = await _permission.GetPermissionAPIAsync("CREATE", "SYS_LEAVE_LIST"); + var getPermission = await _permission.GetPermissionAPIAsync("CREATE", "SYS_LEAVE_HISTORY"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") { @@ -359,6 +416,12 @@ namespace BMA.EHR.Leave.Service.Controllers leaveBeginning.FirstName = profile.FirstName; leaveBeginning.LastName = profile.LastName; + leaveBeginning.RootDnaId = profile.RootDnaId; + leaveBeginning.Child1DnaId = profile.Child1DnaId; + leaveBeginning.Child2DnaId = profile.Child2DnaId; + leaveBeginning.Child3DnaId = profile.Child3DnaId; + leaveBeginning.Child4DnaId = profile.Child4DnaId; + leaveBeginning.CreatedUserId = userId.ToString("D"); leaveBeginning.CreatedFullName = FullName ?? ""; leaveBeginning.CreatedAt = DateTime.Now;