Compare commits

..

No commits in common. "dev" and "insignia-dev1.0.13" have entirely different histories.

9 changed files with 59 additions and 542 deletions

View file

@ -80,7 +80,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
public async Task UpdateLeaveUsageAsync(int year, Guid typeId, Guid userId, double day)
{
// var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (pf == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -102,7 +102,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
public async Task UpdateLeaveCountAsync(int year, Guid typeId, Guid userId, int count)
{
// var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (pf == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -124,7 +124,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
public async Task<LeaveBeginning?> GetByYearAndTypeIdForUserAsync(int year, Guid typeId, Guid userId)
{
// var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (pf == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -263,7 +263,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
public async Task<LeaveBeginning?> GetByYearAndTypeIdForUser2Async(int year, Guid typeId, Guid userId)
{
// var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (pf == null)
{
return null;

View file

@ -254,7 +254,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
public async Task<List<LeaveRequest>> GetLeaveRequestByYearAsync(int year, Guid userId)
{
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (profile == null)
{
@ -497,7 +497,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
public async Task<double> GetSumLeaveByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId, int year)
{
// var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(keycloakUserId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(keycloakUserId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(keycloakUserId, AccessToken);
if (pf == null)
throw new Exception(GlobalMessages.DataNotFound);
@ -651,7 +651,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
try
{
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken ?? "");
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(data.KeycloakUserId, AccessToken ?? "");
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(data.KeycloakUserId, AccessToken ?? "");
if (profile == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -728,7 +728,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
}
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId, AccessToken ?? "");
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(rawData.KeycloakUserId, AccessToken ?? "");
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(rawData.KeycloakUserId, AccessToken ?? "");
if (profile == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -817,7 +817,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
}
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId, AccessToken ?? "");
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(rawData.KeycloakUserId, AccessToken ?? "");
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(rawData.KeycloakUserId, AccessToken ?? "");
if (profile == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -1242,7 +1242,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
else
{
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(rawData.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(rawData.KeycloakUserId, AccessToken);
if (profile == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -1412,7 +1412,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
else
{
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(rawData.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(rawData.KeycloakUserId, AccessToken);
if (profile == null)
{
throw new Exception(GlobalMessages.DataNotFound);

View file

@ -10,7 +10,6 @@ using System.Net.Http.Headers;
using Microsoft.Extensions.Configuration;
using System.Security.Claims;
using System.Net.Http.Json;
using BMA.EHR.Application.Responses.Leaves;
namespace BMA.EHR.Application.Repositories
{
@ -77,39 +76,6 @@ namespace BMA.EHR.Application.Repositories
}
}
public async Task<GetPermissionWithActingResultDto?> GetPermissionWithActingAPIAsync(string action, string system)
{
try
{
var apiPath = $"{_configuration["API"]}/org/permission/dotnet-acting/{action}/{system}";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", AccessToken.Replace("Bearer ", ""));
client.DefaultRequestHeaders.Add("api-key", _configuration["API_KEY"]);
var req = await client.GetAsync(apiPath);
if (!req.IsSuccessStatusCode)
{
throw new Exception("Error calling permission API");
}
var apiResult = await req.Content.ReadAsStringAsync();
//return res;
if (apiResult != null)
{
var raw = JsonConvert.DeserializeObject<GetPermissionWithActingResultDto>(apiResult);
return raw;
}
return null;
}
}
catch
{
throw;
}
}
public async Task<dynamic> GetPermissionOrgAPIAsync(string action, string system, string profileId)
{
try

View file

@ -1,37 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BMA.EHR.Domain.Shared;
using Newtonsoft.Json;
namespace BMA.EHR.Application.Responses.Leaves
{
public class GetPermissionWithActingDto
{
public string privilege {get; set;} = string.Empty;
public bool isAct {get; set;} = false;
public List<ActingPermission> posMasterActs {get; set;} = new();
}
public class ActingPermission
{
public string posNo {get; set;} = string.Empty;
//public string? privilege {get; set;} = "PARENT";
[JsonConverter(typeof(PrivilegeConverter))]
public string privilege {get; set;} = "CHILD";
public Guid? rootDnaId {get; set;}
public Guid? child1DnaId {get; set;}
public Guid? child2DnaId {get; set;}
public Guid? child3DnaId {get; set;}
public Guid? child4DnaId {get; set;}
}
public class GetPermissionWithActingResultDto
{
public int status {get; set;} = 0;
public string message {get; set;} = string.Empty;
public GetPermissionWithActingDto result {get; set;} = new();
}
}

View file

@ -8,8 +8,6 @@
public static readonly string DataNotFound = "ไม่พบข้อมูลในระบบ";
public static readonly string ProfileNotFound = "ไม่พบข้อมูลในระบบทะเบียนประวัติ";
public static readonly string NotAuthorized = "กรุณาเข้าสู่ระบบก่อนใช้งาน!";
public static readonly string ForbiddenAccess = "คุณไม่ได้รับอนุญาติให้เข้าใช้งาน!";

View file

@ -1,30 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace BMA.EHR.Domain.Shared
{
public class PrivilegeConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return "CHILD";
}
return reader.Value;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(value);
}
}
}

View file

@ -3,10 +3,8 @@ using BMA.EHR.Application.Repositories.Commands;
using BMA.EHR.Application.Repositories.Leaves.LeaveRequests;
using BMA.EHR.Application.Repositories.Leaves.TimeAttendants;
using BMA.EHR.Application.Repositories.MessageQueue;
using BMA.EHR.Application.Responses.Leaves;
using BMA.EHR.Application.Responses.Profiles;
using BMA.EHR.Domain.Common;
using BMA.EHR.Domain.Extensions;
using BMA.EHR.Domain.Models.Leave.TimeAttendants;
using BMA.EHR.Domain.Models.Notifications;
using BMA.EHR.Domain.Shared;
@ -449,7 +447,7 @@ namespace BMA.EHR.Leave.Service.Controllers
// Get user's last check-in record and profile in parallel
var dataTask = _userTimeStampRepository.GetLastRecord(userId);
var profileTask = _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profileTask = _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
var defaultRoundTask = _dutyTimeRepository.GetDefaultAsync();
await Task.WhenAll(dataTask, profileTask, defaultRoundTask);
@ -938,7 +936,7 @@ namespace BMA.EHR.Leave.Service.Controllers
await _checkInJobStatusRepository.UpdateToProcessingAsync(taskId);
}
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, data.Token);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, data.Token);
if (profile == null)
{
@ -1591,7 +1589,7 @@ namespace BMA.EHR.Leave.Service.Controllers
public async Task<ActionResult<ResponseObject>> CheckInOldAsync([FromForm] CheckTimeDto data)
{
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (profile == null)
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
@ -1756,7 +1754,7 @@ namespace BMA.EHR.Leave.Service.Controllers
{
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (profile == null)
{
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
@ -2045,7 +2043,7 @@ namespace BMA.EHR.Leave.Service.Controllers
}
else
{
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(d.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(d.KeycloakUserId, AccessToken);
if (profile == null)
{
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
@ -2995,7 +2993,7 @@ namespace BMA.EHR.Leave.Service.Controllers
var time = DateTime.Now;
var userId = UserId != null ? Guid.Parse(UserId) : Guid.Empty;
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (profile == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -3115,7 +3113,7 @@ namespace BMA.EHR.Leave.Service.Controllers
}
var userId = UserId != null ? Guid.Parse(UserId) : Guid.Empty;
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (profile == null)
{
throw new Exception(GlobalMessages.DataNotFound);
@ -3164,14 +3162,13 @@ namespace BMA.EHR.Leave.Service.Controllers
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<ResponseObject>> GetAdditionalCheckRequestAsync([Required] int year, [Required] int month, [Required] int page = 1, [Required] int pageSize = 10, string keyword = "", string? sortBy = "", bool? descending = false)
{
var jsonData = await _permission.GetPermissionWithActingAPIAsync("LIST", "SYS_CHECKIN_SPECIAL");
//var jsonData = JsonConvert.DeserializeObject<GetPermissionWithActingResultDto>(getPermission);
if (jsonData!.status != 200)
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_CHECKIN_SPECIAL");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData.message, StatusCodes.Status403Forbidden);
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
//string role = jsonData["result"]?.ToString();
string role = jsonData.result.privilege;
string role = jsonData["result"]?.ToString();
var nodeId = string.Empty;
var profileAdmin = new GetUserOCAllDto();
profileAdmin = await _userProfileRepository.GetUserOCAll(Guid.Parse(UserId!), AccessToken);
@ -3209,80 +3206,6 @@ 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);
// ถ้ามีการรักษาการ
if (jsonData.result.isAct)
{
var posActs = jsonData.result.posMasterActs;
foreach(var act in posActs)
{
var actRole = act.privilege;
string actNodeId = string.Empty;
int? actNode;
if (role == "NORMAL" || role == "CHILD")
{
actNodeId = act.child4DnaId != null ?
act.child4DnaId.Value.ToString("D") :
act.child3DnaId != null ?
act.child3DnaId.Value.ToString("D") :
act.child2DnaId != null ?
act.child2DnaId.Value.ToString("D") :
act.child1DnaId != null ?
act.child1DnaId.Value.ToString("D") :
act.rootDnaId != null ?
act.rootDnaId.Value.ToString("D") :
"";
actNode = act.child4DnaId != null ?
4 :
act.child3DnaId != null ?
3 :
act.child2DnaId != null ?
2 :
act.child1DnaId != null ?
1 :
act.rootDnaId != null ?
0 :
null;
}
else if (role == "BROTHER")
{
actNodeId = act.child3DnaId != null ?
act.child3DnaId.Value.ToString("D") :
act.child2DnaId != null ?
act.child2DnaId.Value.ToString("D") :
act.child1DnaId != null ?
act.rootDnaId!.Value.ToString("D") :
act.rootDnaId != null ?
act.rootDnaId.Value.ToString("D") :
"";
actNode = act.child4DnaId != null ?
4 :
act.child3DnaId != null ?
4 :
act.child2DnaId != null ?
3 :
act.child1DnaId != null ?
2 :
act.rootDnaId != null ?
0 :
null;
}
else if (role == "ROOT" /*|| role == "PARENT"*/)
{
actNodeId = act.rootDnaId!.Value.ToString("D");
actNode = 0;
}
var rawDataAct = await _additionalCheckRequestRepository.GetAdditionalCheckRequestsByAdminRole(year, month, actRole, actNodeId, profileAdmin?.Node, keyword);
if (rawDataAct != null)
{
if (rawData != null)
rawData = rawData.Union(rawDataAct).ToList();
else
rawData = rawDataAct;
}
}
}
var total = rawData.Count;
var getDefaultRound = await _dutyTimeRepository.GetDefaultAsync();
@ -3353,7 +3276,7 @@ namespace BMA.EHR.Leave.Service.Controllers
foreach (var data in rawDataPaged)
{
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(data.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(data.KeycloakUserId, AccessToken);
UserDutyTime? effectiveDate = null;
if (profile != null)
{
@ -3532,7 +3455,7 @@ namespace BMA.EHR.Leave.Service.Controllers
// change user timestamp
var processTimeStamp = await _processUserTimeStampRepository.GetTimestampByDateAsync(requestData.KeycloakUserId, requestData.CheckDate.Date);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(requestData.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(requestData.KeycloakUserId, AccessToken);
if (processTimeStamp == null)
{
@ -3686,7 +3609,7 @@ namespace BMA.EHR.Leave.Service.Controllers
requestData.Comment = req.Reason;
await _additionalCheckRequestRepository.UpdateAsync(requestData);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(requestData.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(requestData.KeycloakUserId, AccessToken);
var recvId = new List<Guid> { profile.Id };
await _notificationRepository.PushNotificationsAsync(recvId.ToArray(), "ลงเวลากรณีพิเศษ", "การขอลงเวลากรณีพิเศษของคุณไม่ได้รับการอนุมัติ", "", "", true, false);
@ -3730,7 +3653,7 @@ namespace BMA.EHR.Leave.Service.Controllers
}
else
{
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(d.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(d.KeycloakUserId, AccessToken);
if (profile == null)
{
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
@ -3824,7 +3747,7 @@ namespace BMA.EHR.Leave.Service.Controllers
foreach (var data in rawData)
{
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(data.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(data.KeycloakUserId, AccessToken);
if (profile == null)
{
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
@ -4114,7 +4037,7 @@ namespace BMA.EHR.Leave.Service.Controllers
//var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
// แก้เป็นมาใช้งาน KeycloakUserId แทน
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(data.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(data.KeycloakUserId, AccessToken);
var defaultRound = await _dutyTimeRepository.GetDefaultAsync();
if (defaultRound == null)
{
@ -4184,7 +4107,7 @@ namespace BMA.EHR.Leave.Service.Controllers
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<ResponseObject>> GetLeaveSummaryByProfileAsync(Guid id, [FromBody] GetLeaveSummaryDto req)
{
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(id, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(id, AccessToken);
var thisYear = DateTime.Now.Year;
var startDate = req.StartDate;
@ -4254,7 +4177,7 @@ namespace BMA.EHR.Leave.Service.Controllers
{
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (profile == null)
{
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);

View file

@ -214,7 +214,7 @@ namespace BMA.EHR.Leave.Service.Controllers
var thisYear = DateTime.Now.Year;
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (profile == null)
{
@ -502,7 +502,7 @@ namespace BMA.EHR.Leave.Service.Controllers
foreach (var leave in leaves)
{
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(leave.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(leave.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(leave.KeycloakUserId, AccessToken);
if (profile != null)
{
leave.Prefix = profile.Prefix;
@ -563,7 +563,7 @@ namespace BMA.EHR.Leave.Service.Controllers
// }
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (profile == null)
{
@ -1026,7 +1026,7 @@ namespace BMA.EHR.Leave.Service.Controllers
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
var startDate = profile?.DateStart?.Date ?? DateTime.Now.Date;
// var date1Raw = profile?.DateStart?.Date ?? DateTime.Now.Date;
@ -1352,14 +1352,14 @@ namespace BMA.EHR.Leave.Service.Controllers
public async Task<ActionResult<ResponseObject>> GetLeaveRequestCalendarAdminAsync(
[FromBody] GetLeaveRequestCalendarDto req)
{
var jsonData = await _permission.GetPermissionWithActingAPIAsync("LIST", "SYS_LEAVE_LIST");
//var jsonData = JsonConvert.DeserializeObject<GetPermissionWithActingResultDto>(getPermission);
if (jsonData!.status != 200)
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_LEAVE_LIST");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData.message, StatusCodes.Status403Forbidden);
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
//string role = jsonData["result"]?.ToString();
string role = jsonData.result.privilege;
string role = jsonData["result"]?.ToString();
var nodeId = string.Empty;
var profileAdmin = new GetUserOCAllDto();
profileAdmin = await _userProfileRepository.GetUserOCAll(Guid.Parse(UserId!), AccessToken);
@ -1395,85 +1395,6 @@ namespace BMA.EHR.Leave.Service.Controllers
}
var data = await _leaveRequestRepository.GetLeaveRequestByYearForAdminAsync(req.Year, role, nodeId, profileAdmin.Node);
// ถ้ามีการรักษาการ
if (jsonData.result.isAct)
{
var posActs = jsonData.result.posMasterActs;
foreach(var act in posActs)
{
var actRole = act.privilege;
string actNodeId = string.Empty;
int? actNode = null;
if (role == "NORMAL" || role == "CHILD")
{
actNodeId = act.child4DnaId != null ?
act.child4DnaId.Value.ToString("D") :
act.child3DnaId != null ?
act.child3DnaId.Value.ToString("D") :
act.child2DnaId != null ?
act.child2DnaId.Value.ToString("D") :
act.child1DnaId != null ?
act.child1DnaId.Value.ToString("D") :
act.rootDnaId != null ?
act.rootDnaId.Value.ToString("D") :
"";
actNode = act.child4DnaId != null ?
4 :
act.child3DnaId != null ?
3 :
act.child2DnaId != null ?
2 :
act.child1DnaId != null ?
1 :
act.rootDnaId != null ?
0 :
null;
}
else if (role == "BROTHER")
{
actNodeId = act.child3DnaId != null ?
act.child3DnaId.Value.ToString("D") :
act.child2DnaId != null ?
act.child2DnaId.Value.ToString("D") :
act.child1DnaId != null ?
act.rootDnaId!.Value.ToString("D") :
act.rootDnaId != null ?
act.rootDnaId.Value.ToString("D") :
"";
actNode = act.child4DnaId != null ?
4 :
act.child3DnaId != null ?
4 :
act.child2DnaId != null ?
3 :
act.child1DnaId != null ?
2 :
act.rootDnaId != null ?
0 :
null;
}
else if (role == "ROOT" /*|| role == "PARENT"*/)
{
actNodeId = act.rootDnaId!.Value.ToString("D");
actNode = 0;
}
var rawDataAct = await _leaveRequestRepository.GetLeaveRequestByYearForAdminAsync(req.Year, actRole, actNodeId, actNode);
if (rawDataAct != null)
{
if (data != null)
data = data.Union(rawDataAct).ToList();
else
data = rawDataAct;
}
}
}
var resultData = (from d in data
//join p in profileList on d.KeycloakUserId equals p.Keycloak
select new GetLeaveRequestCalendarResultDto
@ -1656,7 +1577,7 @@ namespace BMA.EHR.Leave.Service.Controllers
}
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(rawData.KeycloakUserId, AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(rawData.KeycloakUserId, AccessToken);
if (profile == null)
{
@ -1829,14 +1750,14 @@ namespace BMA.EHR.Leave.Service.Controllers
public async Task<ActionResult<ResponseObject>> GetLeaveRequestForAdminAsync(
[FromBody] GetLeaveRequestForAdminDto req)
{
var jsonData = await _permission.GetPermissionWithActingAPIAsync("LIST", "SYS_LEAVE_LIST");
//var jsonData = JsonConvert.DeserializeObject<GetPermissionWithActingResultDto>(getPermission);
if (jsonData!.status != 200)
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_LEAVE_LIST");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData.message, StatusCodes.Status403Forbidden);
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
//string role = jsonData["result"]?.ToString();
string role = jsonData.result.privilege;
string role = jsonData["result"]?.ToString();
var nodeId = string.Empty;
var profileAdmin = new GetUserOCAllDto();
profileAdmin = await _userProfileRepository.GetUserOCAll(Guid.Parse(UserId!), AccessToken);
@ -1873,83 +1794,6 @@ namespace BMA.EHR.Leave.Service.Controllers
var rawData = await _leaveRequestRepository.GetListLeaveRequestForAdminAsync(req.Year, req.Type, req.Status, req.StartDate, req.EndDate, role, nodeId, profileAdmin?.Node);
// ถ้ามีการรักษาการ
if (jsonData.result.isAct)
{
var posActs = jsonData.result.posMasterActs;
foreach(var act in posActs)
{
var actRole = act.privilege;
string actNodeId = string.Empty;
int? actNode = null;
if (role == "NORMAL" || role == "CHILD")
{
actNodeId = act.child4DnaId != null ?
act.child4DnaId.Value.ToString("D") :
act.child3DnaId != null ?
act.child3DnaId.Value.ToString("D") :
act.child2DnaId != null ?
act.child2DnaId.Value.ToString("D") :
act.child1DnaId != null ?
act.child1DnaId.Value.ToString("D") :
act.rootDnaId != null ?
act.rootDnaId.Value.ToString("D") :
"";
actNode = act.child4DnaId != null ?
4 :
act.child3DnaId != null ?
3 :
act.child2DnaId != null ?
2 :
act.child1DnaId != null ?
1 :
act.rootDnaId != null ?
0 :
null;
}
else if (role == "BROTHER")
{
actNodeId = act.child3DnaId != null ?
act.child3DnaId.Value.ToString("D") :
act.child2DnaId != null ?
act.child2DnaId.Value.ToString("D") :
act.child1DnaId != null ?
act.rootDnaId!.Value.ToString("D") :
act.rootDnaId != null ?
act.rootDnaId.Value.ToString("D") :
"";
actNode = act.child4DnaId != null ?
4 :
act.child3DnaId != null ?
4 :
act.child2DnaId != null ?
3 :
act.child1DnaId != null ?
2 :
act.rootDnaId != null ?
0 :
null;
}
else if (role == "ROOT" /*|| role == "PARENT"*/)
{
actNodeId = act.rootDnaId!.Value.ToString("D");
actNode = 0;
}
var rawDataAct = await _leaveRequestRepository.GetListLeaveRequestForAdminAsync(req.Year, req.Type, req.Status, req.StartDate, req.EndDate, actRole, actNodeId, actNode);
if (rawDataAct != null)
{
if (rawData != null)
rawData = rawData.Union(rawDataAct).ToList();
else
rawData = rawDataAct;
}
}
}
var result = new List<GetLeaveRequestForAdminResultDto>();
foreach (var item in rawData)
@ -2032,12 +1876,6 @@ namespace BMA.EHR.Leave.Service.Controllers
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
}
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(data.KeycloakUserId, AccessToken);
if (profile == null)
{
return Error(GlobalMessages.ProfileNotFound, StatusCodes.Status404NotFound);
}
// change status to delete
// แก้จาก DELETE เป็น DELETING ไว้ก่อน รอ approve ค่อยเปลี่ยนเป็น DELETE
// data.LeaveStatus = "DELETE";
@ -2074,7 +1912,7 @@ namespace BMA.EHR.Leave.Service.Controllers
// TODO: Send notification to all users who need to approve the cancel leave request
var approvers = data.Approvers
//.Where(x => x.ApproveStatus!.ToUpper() == "PENDING")
.Where(x => x.ApproveStatus!.ToUpper() == "PENDING")
.OrderBy(x => x.Seq)
.ToList();
@ -2086,33 +1924,11 @@ namespace BMA.EHR.Leave.Service.Controllers
Body = $"คำร้องขอยกเลิกการลาของคุณ {data.FirstName} {data.LastName} รอรับการอนุมัติจากคุณ",
ReceiverUserId = approver!.ProfileId,
Type = "",
Payload = $"{URL}/leave-reject/detail/{id}",
Payload = $"{URL}/leave/detail/{id}",
};
_appDbContext.Set<Notification>().Add(noti1);
}
// Get Officer List
var officers = await _userProfileRepository.GetOCStaffAsync(profile.Id, AccessToken);
var approverProfileIdList = approvers.Select(x => x.ProfileId).ToList();
if(officers != null && officers.Count > 0)
{
officers = officers.Where(x => !approverProfileIdList.Contains(x.ProfileId)).ToList();
foreach (var officer in officers)
{
// Send Notification
var noti = new Notification
{
Body = $"คำร้องขอยกเลิกการลาของคุณ {data.FirstName} {data.LastName} รอรับการอนุมัติจากคุณ",
ReceiverUserId = officer.ProfileId,
Type = "",
Payload = $"{URL}/leave-reject/detail/{id}",
};
_appDbContext.Set<Notification>().Add(noti);
}
await _appDbContext.SaveChangesAsync();
}
return Success();
}
@ -2132,14 +1948,14 @@ namespace BMA.EHR.Leave.Service.Controllers
public async Task<ActionResult<ResponseObject>> GetCancelLeaveRequestForAdminAsync(
[FromBody] GetLeaveRequestForAdminDto req)
{
var jsonData = await _permission.GetPermissionWithActingAPIAsync("LIST", "SYS_LEAVE_LIST");
//var jsonData = JsonConvert.DeserializeObject<GetPermissionWithActingResultDto>(getPermission);
if (jsonData!.status != 200)
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_LEAVE_LIST");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData.message, StatusCodes.Status403Forbidden);
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
//string role = jsonData["result"]?.ToString();
string role = jsonData.result.privilege;
string role = jsonData["result"]?.ToString();
var nodeId = string.Empty;
var profileAdmin = new GetUserOCAllDto();
profileAdmin = await _userProfileRepository.GetUserOCAll(Guid.Parse(UserId!), AccessToken);
@ -2177,82 +1993,6 @@ namespace BMA.EHR.Leave.Service.Controllers
var rawData =
await _leaveRequestRepository.GetCancelLeaveRequestForAdminAsync(req.Year, req.Type, req.Status, role, nodeId, profileAdmin?.Node);
// ถ้ามีการรักษาการ
if (jsonData.result.isAct)
{
var posActs = jsonData.result.posMasterActs;
foreach(var act in posActs)
{
var actRole = act.privilege;
string actNodeId = string.Empty;
int? actNode = null;
if (role == "NORMAL" || role == "CHILD")
{
actNodeId = act.child4DnaId != null ?
act.child4DnaId.Value.ToString("D") :
act.child3DnaId != null ?
act.child3DnaId.Value.ToString("D") :
act.child2DnaId != null ?
act.child2DnaId.Value.ToString("D") :
act.child1DnaId != null ?
act.child1DnaId.Value.ToString("D") :
act.rootDnaId != null ?
act.rootDnaId.Value.ToString("D") :
"";
actNode = act.child4DnaId != null ?
4 :
act.child3DnaId != null ?
3 :
act.child2DnaId != null ?
2 :
act.child1DnaId != null ?
1 :
act.rootDnaId != null ?
0 :
null;
}
else if (role == "BROTHER")
{
actNodeId = act.child3DnaId != null ?
act.child3DnaId.Value.ToString("D") :
act.child2DnaId != null ?
act.child2DnaId.Value.ToString("D") :
act.child1DnaId != null ?
act.rootDnaId!.Value.ToString("D") :
act.rootDnaId != null ?
act.rootDnaId.Value.ToString("D") :
"";
actNode = act.child4DnaId != null ?
4 :
act.child3DnaId != null ?
4 :
act.child2DnaId != null ?
3 :
act.child1DnaId != null ?
2 :
act.rootDnaId != null ?
0 :
null;
}
else if (role == "ROOT" /*|| role == "PARENT"*/)
{
actNodeId = act.rootDnaId!.Value.ToString("D");
actNode = 0;
}
var rawDataAct = await _leaveRequestRepository.GetCancelLeaveRequestForAdminAsync(req.Year, req.Type, req.Status, actRole, actNodeId, actNode);
if (rawDataAct != null)
{
if (rawData != null)
rawData = rawData.Union(rawDataAct).ToList();
else
rawData = rawDataAct;
}
}
}
var recCount = rawData.Count;
if (req.Keyword != "")
@ -2372,7 +2112,7 @@ namespace BMA.EHR.Leave.Service.Controllers
}
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(Guid.Parse(UserId!), AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(Guid.Parse(UserId!), AccessToken);
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(Guid.Parse(UserId!), AccessToken);
if (profile == null)
{
@ -3017,7 +2757,7 @@ namespace BMA.EHR.Leave.Service.Controllers
var rejectList = await _leaveRequestRepository.GetSumRejectLeaveAsync(thisYear);
var deleteList = await _leaveRequestRepository.GetSumDeleteLeaveAsync(thisYear);
// var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNew2Async(userId, AccessToken);
var pf = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
if (pf == null)
{

View file

@ -903,49 +903,6 @@ namespace BMA.EHR.Placement.Service.Controllers
return Success();
}
/// <summary>
/// API สำหรับยกเลิกการส่งตัว
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPost("update/draft-status")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<ResponseObject>> PersonUpdateDraftStatus([FromBody] PersonUpdateStatusRequest req)
{
var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_PLACEMENT_PASS");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
string role = jsonData["result"]?.ToString();
if (role != "OWNER")
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
var person = await _context.PlacementProfiles
.FirstOrDefaultAsync(x => x.Id == req.PersonalId);
if (person == null)
return Error(GlobalMessages.DataNotFound, 404);
if (person.PlacementStatus == "REPORT")
return Error("ไม่สามารถยกเลิกการส่งตัวได้ เนื่องจากส่งไปออกคำสั่งแล้ว");
if (person.PlacementStatus == "DONE")
return Error("ไม่สามารถยกเลิกการส่งตัวได้ เนื่องจากบรรจุไปแล้ว");
person.Draft = false;
person.LastUpdateFullName = FullName ?? "System Administrator";
person.LastUpdateUserId = UserId ?? "";
person.LastUpdatedAt = DateTime.Now;
await _context.SaveChangesAsync();
return Success();
}
[HttpGet("pass/deferment/{personalId:length(36)}")]
public async Task<ActionResult<ResponseObject>> GetPersonDeferment(Guid personalId)
{
@ -2045,7 +2002,7 @@ namespace BMA.EHR.Placement.Service.Controllers
.Where(x => req.refIds.Contains(x.Id.ToString()))
// .Where(x => x.PlacementStatus.ToUpper() == "REPORT")
.ToListAsync();
placementProfiles.ForEach(profile => profile.PlacementStatus = "PREPARE-CONTAIN");
placementProfiles.ForEach(profile => profile.PlacementStatus = "PREPARE-CONTAI");
await _context.SaveChangesAsync();
return Success();
}