diff --git a/BMA.EHR.Application/Repositories/UserProfileRepository.cs b/BMA.EHR.Application/Repositories/UserProfileRepository.cs index 9ef3f76e..b868a4e9 100644 --- a/BMA.EHR.Application/Repositories/UserProfileRepository.cs +++ b/BMA.EHR.Application/Repositories/UserProfileRepository.cs @@ -233,6 +233,36 @@ namespace BMA.EHR.Application.Repositories } } + public async Task GetProfileLeaveReportByKeycloakIdAsync(Guid keycloakId, string? accessToken, string? report) + { + try + { + var apiPath = $"{_configuration["API"]}/org/dotnet/profile-leave/keycloak"; + var apiKey = _configuration["API_KEY"]; + var body = new + { + keycloakId = keycloakId, + report = report + }; + + var profiles = new List(); + + var apiResult = await PostExternalAPIAsync(apiPath, accessToken, body, apiKey); + if (apiResult != null) + { + var raw = JsonConvert.DeserializeObject(apiResult); + if (raw != null) + return raw.Result; + } + + return null; + } + catch + { + throw; + } + } + public async Task GetProfileByProfileIdAsync(Guid profileId, string? accessToken) { try diff --git a/BMA.EHR.Application/Responses/Leaves/GetProfileLeaveByKeycloakDto.cs b/BMA.EHR.Application/Responses/Leaves/GetProfileLeaveByKeycloakDto.cs index 52a9b948..c6c79bfd 100644 --- a/BMA.EHR.Application/Responses/Leaves/GetProfileLeaveByKeycloakDto.cs +++ b/BMA.EHR.Application/Responses/Leaves/GetProfileLeaveByKeycloakDto.cs @@ -2,6 +2,11 @@ { public class GetProfileLeaveByKeycloakDto { + public string ProfileType { get; set; } + public string Prefix { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string CitizenId { get; set; } public DateTime BirthDate { get; set; } public DateTime RetireDate { get; set; } public string GovAge { get; set; } = string.Empty; @@ -10,11 +15,14 @@ public DateTime DateCurrent { get; set; } public int Amount { get; set; } public string? TelephoneNumber { get; set; } = string.Empty; - public string PositionName { get; set; } = string.Empty; + public string Position { get; set; } = string.Empty; public string PosLevel { get; set; } = string.Empty; public string PosType { get; set; } = string.Empty; + public string? PositionLeaveName { get; set; } + public string? PosExecutiveName { get; set; } public string CurrentAddress { get; set; } = string.Empty; public string Oc { get; set; } = string.Empty; + public bool isCommission { get; set; } = false; public string Root { get; set; } = string.Empty; public string? Child1 { get; set; } public string? Child2 { get; set; } diff --git a/BMA.EHR.Leave/Controllers/LeaveReportController.cs b/BMA.EHR.Leave/Controllers/LeaveReportController.cs index 5dad15fa..f8c22956 100644 --- a/BMA.EHR.Leave/Controllers/LeaveReportController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveReportController.cs @@ -137,7 +137,12 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport01(LeaveRequest data) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave9"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); @@ -152,7 +157,11 @@ namespace BMA.EHR.Leave.Service.Controllers var startFiscalYear = new DateTime(data.LeaveStartDate.Year - 1, 10, 1); var endFiscalYear = data.LeaveStartDate.Date.AddDays(-1); // นับจากวันที่ยื่นลา var sumLeave = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser(data.KeycloakUserId, data.Type.Id, startFiscalYear, endFiscalYear); - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); + return new { template = "leave9", @@ -183,10 +192,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, leaveDetail = data.LeaveDetail.ToThaiNumber(), leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), @@ -227,14 +236,22 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport02(LeaveRequest data) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave10"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}"; - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); return new { template = "leave10", @@ -265,10 +282,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, wifeDayName = data.WifeDayName ?? "", wifeDayDateBorn = data.WifeDayDateBorn == null || data.WifeDayDateBorn == "" ? "" : DateTime.Parse(data.WifeDayDateBorn).ToThaiShortDate().ToThaiNumber(), leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), @@ -289,7 +306,12 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport03(LeaveRequest data) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave11"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); @@ -313,8 +335,10 @@ namespace BMA.EHR.Leave.Service.Controllers var sumLeave = leaveData == null ? 0.0 : leaveData.LeaveDaysUsed; var leaveLimit = leaveData == null ? 0.0 : leaveData.LeaveDays; var extendLeave = leaveLimit - 10; - - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); return new { template = "leave11", @@ -345,10 +369,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, restDayOldTotal = extendLeave.ToString().ToThaiNumber(), restDayCurrentTotal = (10).ToString().ToThaiNumber(), @@ -379,7 +403,12 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport04(LeaveRequest data, bool isHajj = false) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, isHajj ? "leave13": "leave12"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); @@ -399,7 +428,10 @@ namespace BMA.EHR.Leave.Service.Controllers { isHajj = true; } - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); if (isHajj == true) { return new @@ -432,11 +464,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, - + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, leavegovernmentDate = data.LeaveGovernmentDate == null ? "" : data.LeaveGovernmentDate.Value.Date.ToThaiShortDate().ToThaiNumber(), hajjDayStatus = data.HajjDayStatus, @@ -487,10 +518,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, leavebirthDate = data.LeaveBirthDate == null ? "" : data.LeaveBirthDate.Value.Date.ToThaiShortDate().ToThaiNumber(), leavegovernmentDate = data.LeaveGovernmentDate == null ? "" : data.LeaveGovernmentDate.Value.Date.ToThaiShortDate().ToThaiNumber(), @@ -520,12 +551,16 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport05(LeaveRequest data) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave14"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } - var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}"; //var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty, AccessToken); @@ -536,7 +571,10 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); return new { template = "leave14", @@ -567,10 +605,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, absentDaySummon = data.AbsentDaySummon.ToThaiNumber(), absentDayLocation = data.AbsentDayLocation.ToThaiNumber(), @@ -594,12 +632,16 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport06(LeaveRequest data) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave15"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } - var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}"; //var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty, AccessToken); @@ -610,7 +652,10 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); return new { template = "leave15", @@ -641,10 +686,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, leavebirthDate = data.LeaveBirthDate == null ? "" : data.LeaveBirthDate.Value.Date.ToThaiShortDate().ToThaiNumber(), leavegovernmentDate = data.LeaveGovernmentDate == null ? "" : data.LeaveGovernmentDate.Value.Date.ToThaiShortDate().ToThaiNumber(), @@ -684,18 +729,22 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport07(LeaveRequest data) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + + //var profileLeave = await _userProfileRepository.GetProfileLeaveByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profileLeave == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave16"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } - - var profileLeave = await _userProfileRepository.GetProfileLeaveByKeycloakIdAsync(data.KeycloakUserId, AccessToken); - if (profileLeave == null) - { - return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); - } - var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}"; //var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty, AccessToken); @@ -706,7 +755,10 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); return new { template = "leave16", @@ -738,36 +790,36 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), profileType = profile.ProfileType, - birthDate = profileLeave.BirthDate.ToThaiShortDate().ToThaiNumber(), - retireDate = profileLeave.RetireDate.ToThaiShortDate().ToThaiNumber(), - govAge = profileLeave.GovAge.ToThaiNumber(), - age = profileLeave.Age.ToThaiNumber(), - dateAppoint = profileLeave.DateAppoint.ToThaiShortDate().ToThaiNumber(), - dateCurrent = profileLeave.DateCurrent.ToThaiShortDate().ToThaiNumber(), - amount = ((double)profileLeave.Amount).ToNumericText().ToThaiNumber(), - telephoneNumber = profileLeave.TelephoneNumber == null ? "" : profileLeave.TelephoneNumber.ToThaiNumber(), + birthDate = profile.BirthDate.ToThaiShortDate().ToThaiNumber(), + retireDate = profile.RetireDate.ToThaiShortDate().ToThaiNumber(), + govAge = profile.GovAge.ToThaiNumber(), + age = profile.Age.ToThaiNumber(), + dateAppoint = profile.DateAppoint.ToThaiShortDate().ToThaiNumber(), + dateCurrent = profile.DateCurrent.ToThaiShortDate().ToThaiNumber(), + amount = ((double)profile.Amount).ToNumericText().ToThaiNumber(), + telephoneNumber = profile.TelephoneNumber == null ? "" : profile.TelephoneNumber.ToThaiNumber(), - posLevel = profileLeave.PosLevel.ToThaiNumber(), - posType = profileLeave.PosType.ToThaiNumber(), - currentAddress = profileLeave.CurrentAddress.ToThaiNumber(), - oc = profileLeave.Oc.ToThaiNumber(), - root = profileLeave.Root.ToThaiNumber(), - child1 = profileLeave.Child1 == null ? "" : profileLeave.Child1!.ToThaiNumber(), - child2 = profileLeave.Child2 == null ? "" : profileLeave.Child2!.ToThaiNumber(), - child3 = profileLeave.Child3 == null ? "" : profileLeave.Child3!.ToThaiNumber(), - child4 = profileLeave.Child4 == null ? "" : profileLeave.Child4!.ToThaiNumber(), + posLevel = profile.PosLevel.ToThaiNumber(), + posType = profile.PosType.ToThaiNumber(), + currentAddress = profile.CurrentAddress.ToThaiNumber(), + oc = profile.Oc.ToThaiNumber(), + root = profile.Root.ToThaiNumber(), + child1 = profile.Child1 == null ? "" : profile.Child1!.ToThaiNumber(), + child2 = profile.Child2 == null ? "" : profile.Child2!.ToThaiNumber(), + child3 = profile.Child3 == null ? "" : profile.Child3!.ToThaiNumber(), + child4 = profile.Child4 == null ? "" : profile.Child4!.ToThaiNumber(), - positions = profileLeave.Positions.Select(x => new + positions = profile.Positions.Select(x => new { positionName = x.PositionName == null ? "" : x.PositionName.ToThaiNumber(), dateStart = x.DateStart.ToThaiShortDate().ToThaiNumber(), @@ -780,7 +832,7 @@ namespace BMA.EHR.Leave.Service.Controllers orgChild3 = x.OrgChild3 == null ? "" : x.OrgChild3.ToThaiNumber(), orgChild4 = x.OrgChild4 == null ? "" : x.OrgChild4.ToThaiNumber(), }).ToList(), - educations = profileLeave.Educations.Select(x => new + educations = profile.Educations.Select(x => new { educationLevel = x.EducationLevel == null ? "" : x.EducationLevel.ToThaiNumber(), institute = x.Institute == null ? "" : x.Institute.ToThaiNumber(), @@ -802,12 +854,16 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport08(LeaveRequest data) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave17"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } - var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}"; //var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty, AccessToken); @@ -818,7 +874,10 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); return new { template = "leave17", @@ -849,10 +908,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, leaveSalary = data.LeaveSalary == null ? "" : data.LeaveSalary.Value.ToNumericText().ToThaiNumber(), leaveSalaryText = data.LeaveSalaryText.ToThaiNumber(), @@ -884,14 +943,19 @@ namespace BMA.EHR.Leave.Service.Controllers private async Task GetReport09(LeaveRequest data) { - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); - if (profile == null) - { - return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); - } + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} - var profileLeave = await _userProfileRepository.GetProfileLeaveByKeycloakIdAsync(data.KeycloakUserId, AccessToken); - if (profileLeave == null) + //var profileLeave = await _userProfileRepository.GetProfileLeaveByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profileLeave == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave18"); + if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } @@ -906,7 +970,10 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); return new { template = "leave18", @@ -937,36 +1004,36 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), profileType = profile.ProfileType, - birthDate = profileLeave.BirthDate.ToThaiShortDate().ToThaiNumber(), - retireDate = profileLeave.RetireDate.ToThaiShortDate().ToThaiNumber(), - govAge = profileLeave.GovAge.ToThaiNumber(), - age = profileLeave.Age.ToThaiNumber(), - dateAppoint = profileLeave.DateAppoint.ToThaiShortDate().ToThaiNumber(), - dateCurrent = profileLeave.DateCurrent.ToThaiShortDate().ToThaiNumber(), - amount = ((double)profileLeave.Amount).ToNumericText().ToThaiNumber(), - telephoneNumber = profileLeave.TelephoneNumber == null ? "" : profileLeave.TelephoneNumber.ToThaiNumber(), + birthDate = profile.BirthDate.ToThaiShortDate().ToThaiNumber(), + retireDate = profile.RetireDate.ToThaiShortDate().ToThaiNumber(), + govAge = profile.GovAge.ToThaiNumber(), + age = profile.Age.ToThaiNumber(), + dateAppoint = profile.DateAppoint.ToThaiShortDate().ToThaiNumber(), + dateCurrent = profile.DateCurrent.ToThaiShortDate().ToThaiNumber(), + amount = ((double)profile.Amount).ToNumericText().ToThaiNumber(), + telephoneNumber = profile.TelephoneNumber == null ? "" : profile.TelephoneNumber.ToThaiNumber(), - posLevel = profileLeave.PosLevel.ToThaiNumber(), - posType = profileLeave.PosType.ToThaiNumber(), - currentAddress = profileLeave.CurrentAddress.ToThaiNumber(), - oc = profileLeave.Oc.ToThaiNumber(), - root = profileLeave.Root.ToThaiNumber(), - child1 = profileLeave.Child1 == null ? "" : profileLeave.Child1!.ToThaiNumber(), - child2 = profileLeave.Child2 == null ? "" : profileLeave.Child2!.ToThaiNumber(), - child3 = profileLeave.Child3 == null ? "" : profileLeave.Child3!.ToThaiNumber(), - child4 = profileLeave.Child4 == null ? "" : profileLeave.Child4!.ToThaiNumber(), + posLevel = profile.PosLevel.ToThaiNumber(), + posType = profile.PosType.ToThaiNumber(), + currentAddress = profile.CurrentAddress.ToThaiNumber(), + oc = profile.Oc.ToThaiNumber(), + root = profile.Root.ToThaiNumber(), + child1 = profile.Child1 == null ? "" : profile.Child1!.ToThaiNumber(), + child2 = profile.Child2 == null ? "" : profile.Child2!.ToThaiNumber(), + child3 = profile.Child3 == null ? "" : profile.Child3!.ToThaiNumber(), + child4 = profile.Child4 == null ? "" : profile.Child4!.ToThaiNumber(), - positions = profileLeave.Positions.Select(x => new + positions = profile.Positions.Select(x => new { positionName = x.PositionName == null ? "" : x.PositionName.ToThaiNumber(), dateStart = x.DateStart.ToThaiShortDate().ToThaiNumber(), @@ -980,7 +1047,7 @@ namespace BMA.EHR.Leave.Service.Controllers orgChild4 = x.OrgChild4 == null ? "" : x.OrgChild4.ToThaiNumber(), }).ToList(), - educations = profileLeave.Educations.Select(x => new + educations = profile.Educations.Select(x => new { educationLevel = x.EducationLevel == null ? "" : x.EducationLevel.ToThaiNumber(), institute = x.Institute == null ? "" : x.Institute.ToThaiNumber(), @@ -1109,12 +1176,16 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } - var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken); + //if (profile == null) + //{ + // return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); + //} + var profile = await _userProfileRepository.GetProfileLeaveReportByKeycloakIdAsync(data.KeycloakUserId, AccessToken, "leave9"); if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } - var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}"; //var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty, AccessToken); @@ -1125,7 +1196,10 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - var approveResult = await GetApproverData(data.Approvers); + var Oc = profile.isCommission == false + ? profile.Oc.ToThaiNumber() + : profile.Oc.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.").ToThaiNumber(); + var approveResult = await GetApproverData(data.Approvers, profile.isCommission); var result = new { template = "แบบใบขอยกเลิกวันลา", @@ -1154,10 +1228,10 @@ namespace BMA.EHR.Leave.Service.Controllers organizationName = profile!.Oc!.ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(profile.PositionLeaveName) && (profile.PositionLeaveName.Contains("อำนวยการ") || profile.PositionLeaveName.Contains("บริหาร")) - ? new[] { (profile!.Oc!.ToThaiNumber()) } + ? new[] { Oc } : !string.IsNullOrEmpty(profile.PosExecutiveName) - ? new[] { (profile.PosExecutiveName.ToThaiNumber()), (profile!.Oc!.ToThaiNumber()) } - : new[] { (profile!.Oc!.ToThaiNumber()) }, + ? new[] { profile.PosExecutiveName.ToThaiNumber(), Oc } + : new[] { Oc }, leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), @@ -2811,7 +2885,7 @@ namespace BMA.EHR.Leave.Service.Controllers } #endregion - private async Task GetApproverData(List list) + private async Task GetApproverData(List list, bool? isCommission = false) { var _default = new { @@ -2842,10 +2916,10 @@ namespace BMA.EHR.Leave.Service.Controllers : $"{x.PositionName}{x.PositionLevelName}").ToThaiNumber(), posExOrg = !string.IsNullOrEmpty(x.PositionLevelName) && (x.PositionLevelName.Contains("อำนวยการ") || x.PositionLevelName.Contains("บริหาร")) - ? new[] { (x!.OrganizationName!.ToThaiNumber()) } + ? new[] { (isCommission == false ? x!.OrganizationName : x!.OrganizationName.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.")).ToThaiNumber() } : !string.IsNullOrEmpty(x.PosExecutiveName) - ? new[] { (x.PosExecutiveName.ToThaiNumber()), (x!.OrganizationName!.ToThaiNumber()) } - : new[] { (x!.OrganizationName!.ToThaiNumber()) }, + ? new[] { (x.PosExecutiveName.ToThaiNumber()), (isCommission == false ? x!.OrganizationName : x!.OrganizationName.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.")).ToThaiNumber() } + : new[] { (isCommission == false ? x!.OrganizationName : x!.OrganizationName.Replace("สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร", "สำนักงาน ก.ก.")).ToThaiNumber() }, positionSign = !string.IsNullOrEmpty(x.PositionSign) ? x.PositionSign.Replace("\r", "").Replace("\n", " ") : "............................................",