delete comment

This commit is contained in:
kittapath 2025-10-09 22:16:19 +07:00
parent 559765dd86
commit 8ba9d349db
4 changed files with 74 additions and 203 deletions

View file

@ -1,6 +1,7 @@
using Amazon.S3.Model;
using BMA.EHR.Application.Common.Interfaces;
using BMA.EHR.Application.Messaging;
using BMA.EHR.Application.Responses.Profiles;
using BMA.EHR.Domain.Extensions;
using BMA.EHR.Domain.Models.Leave.Commons;
using BMA.EHR.Domain.Models.Leave.Requests;
@ -97,7 +98,6 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
await _dbContext.SaveChangesAsync();
}
public async Task<LeaveBeginning?> GetByYearAndTypeIdForUserAsync(int year, Guid typeId, Guid userId)
{
var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
@ -165,6 +165,67 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
return data;
}
public async Task<LeaveBeginning?> GetByYearAndTypeIdForUser(int year, Guid typeId, GetProfileByKeycloakIdDto? pf)
{
var govAge = (pf?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
var leaveType = await _dbContext.Set<LeaveType>().FirstOrDefaultAsync(x => x.Id == typeId);
var data = await _dbContext.Set<LeaveBeginning>()
.Include(x => x.LeaveType)
.FirstOrDefaultAsync(x => x.LeaveYear == year && x.LeaveTypeId == typeId && x.ProfileId == pf.Id);
if (data == null)
{
var limit = 0.0;
var prev = await _dbContext.Set<LeaveBeginning>()
.Include(x => x.LeaveType)
.FirstOrDefaultAsync(x => x.LeaveYear == year - 1 && x.LeaveTypeId == typeId && x.ProfileId == pf.Id);
var prevRemain = 0.0;
if (prev != null)
{
prevRemain = prev.LeaveDays - prev.LeaveDaysUsed;
}
if (govAge >= 180)
{
if (govAge >= 3650)
{
limit = 10 + prevRemain;
if (limit > 30) limit = 30;
}
else
{
limit = 10 + prevRemain;
if (limit > 20) limit = 20;
}
}
else
{
limit = 0.0;
}
data = new LeaveBeginning
{
LeaveYear = year,
LeaveTypeId = typeId,
ProfileId = pf.Id,
Prefix = pf.Prefix,
FirstName = pf.FirstName,
LastName = pf.LastName,
LeaveDaysUsed = 0,
LeaveDays = leaveType?.Code == "LV-005" ? limit : 0
};
_dbContext.Set<LeaveBeginning>().Add(data);
await _dbContext.SaveChangesAsync();
}
return data;
}
public async Task<LeaveBeginning?> GetByYearAndTypeIdForUser2Async(int year, Guid typeId, Guid userId)
{
var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);

View file

@ -9,7 +9,6 @@ using BMA.EHR.Domain.Models.Organizations;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Nest;
using Newtonsoft.Json;
namespace BMA.EHR.Application.Repositories

View file

@ -149,24 +149,8 @@ namespace BMA.EHR.Leave.Service.Controllers
await _leaveRequestRepository.GetLastLeaveRequestByTypeForUserAsync(data.KeycloakUserId,
data.Type.Id, data.LeaveStartDate.Date);
//var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty, AccessToken);
//var approver = string.Empty;
//if (rootOc != null)
//{
// var list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty);
// if (list.Count > 0)
// approver = list.First().Name;
//}
//var sumLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(data.KeycloakUserId, data.Type.Id, data.LeaveStartDate.Year);
//GetSumApproveLeaveByRangeForUser
var startFiscalYear = new DateTime(data.LeaveStartDate.Year - 1, 10, 1);
var endFiscalYear = data.LeaveStartDate.Date.AddDays(-1); // นับจากวันที่ยื่นลา
var leaveData = await _leaveBeginningRepository.GetByYearAndTypeIdForUserAsync(data.LeaveStartDate.Year, data.Type.Id, data.KeycloakUserId);
//var sumLeave = leaveData == null ? 0 : leaveData.LeaveDaysUsed;
var sumLeave = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser(data.KeycloakUserId, data.Type.Id, startFiscalYear, endFiscalYear);
return new
@ -211,17 +195,6 @@ namespace BMA.EHR.Leave.Service.Controllers
var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}";
//var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty, AccessToken);
//var approver = string.Empty;
//if (rootOc != null)
//{
// var list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty);
// if (list.Count > 0)
// approver = list.First().Name;
//}
return new
{
template = "leave10",
@ -250,47 +223,22 @@ namespace BMA.EHR.Leave.Service.Controllers
private async Task<dynamic> GetReport03(LeaveRequest data)
{
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken);
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);
//var approver = string.Empty;
//if (rootOc != null)
//{
// var list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty);
// if (list.Count > 0)
// approver = list.First().Name;
//}
//var sumLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(data.KeycloakUserId, data.Type.Id, data.LeaveStartDate.Year);
//var userCalendar = await _userCalendarRepository.GetExist(profile.Id);
//var category = userCalendar == null ? "NORMAL" : userCalendar.Calendar;
//var sumWorkDay = await _holidayRepository.GetHolidayCountAsync(data.LeaveStartDate.Date, data.LeaveEndDate.Date, category);
//var sumWeekend = _holidayRepository.GetWeekEndCount(data.LeaveStartDate.Date, data.LeaveEndDate.Date, category);
var startFiscalYear = new DateTime(data.LeaveStartDate.Year - 1, 10, 1);
var endFiscalYear = data.LeaveStartDate.Date.AddDays(-1); // นับจากวันที่ยื่นลา
var thisYear = data.LeaveStartDate.Year;
var toDay = data.LeaveStartDate.Date;
if(toDay >= new DateTime(toDay.Year, 10, 1) && toDay <= new DateTime(toDay.Year, 12, 31))
thisYear = thisYear + 1;
if (toDay >= new DateTime(toDay.Year, 10, 1) && toDay <= new DateTime(toDay.Year, 12, 31))
thisYear = thisYear + 1;
var leaveData = await _leaveBeginningRepository.GetByYearAndTypeIdForUserAsync(thisYear, data.Type.Id, data.KeycloakUserId);
//var sumLeave = leaveData == null ? 0 : leaveData.LeaveDaysUsed;
var sumLeave = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser(data.KeycloakUserId, data.Type.Id, startFiscalYear, endFiscalYear);
@ -298,7 +246,6 @@ namespace BMA.EHR.Leave.Service.Controllers
var leaveLimit = leaveData == null ? 0.0 : leaveData.LeaveDays;
var extendLeave = leaveLimit - 10;
return new
{
template = "leave11",
@ -318,9 +265,6 @@ namespace BMA.EHR.Leave.Service.Controllers
restDayOldTotal = extendLeave.ToString().ToThaiNumber(),
restDayCurrentTotal = (10).ToString().ToThaiNumber(),
//restDayOldTotal = data.RestDayOldTotal.ToString().ToThaiNumber(),
//restDayCurrentTotal = data.RestDayCurrentTotal.ToString().ToThaiNumber(),
leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(),
leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(),
@ -2193,7 +2137,7 @@ namespace BMA.EHR.Leave.Service.Controllers
range.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
range.Style.Font.Bold = true;
}
worksheet.Cells[2, 1].Value = organizationName;
worksheet.Cells[3, 1].Value = dateTimeStamp;

View file

@ -848,7 +848,6 @@ namespace BMA.EHR.Leave.Service.Controllers
}
var leaveLimit = 0.0;
var remainPrev = 0.0;
var orgName = "";
@ -869,59 +868,16 @@ namespace BMA.EHR.Leave.Service.Controllers
if (leaveType.Code.Trim().ToUpper() == "LV-005")
{
leaveLimit = leaveData == null ? 0 : leaveData.LeaveDays;
//var beginningLeave = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(thisYear, leaveType.Id);
//if (govAge >= 180)
//{
// var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
// if (govAge >= 3650)
// {
// leaveLimit = beginningLeave != null ? beginningLeave.LeaveDays : 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
// remainPrev = beginningLeave != null ? beginningLeave.LeaveDays : 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
// if (remainPrev >= 20) remainPrev = 20;
// }
// else
// {
// leaveLimit = beginningLeave != null ? beginningLeave.LeaveDays : 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
// remainPrev = beginningLeave != null ? beginningLeave.LeaveDays : 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
// if (remainPrev >= 10) remainPrev = 10;
// }
//}
//else
//{
// leaveLimit = 0;
//}
}
else
leaveLimit = leaveType.Limit;
//var sumLeave = await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, thisYear);
var restOldDay = leaveData == null ? 0 : leaveData.LeaveDays - 10;
var restCurrentDay = 10.0;
var sumLeave = leaveData == null ? 0 : leaveData.LeaveDaysUsed;
//if (leaveType.Code.Trim().ToUpper() == "LV-005")
//{
// restOldDay = remainPrev;
//}
//else
// restOldDay = await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1);
var lastSalary = profile.ProfileSalary;
//var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty, AccessToken);
//var approver = profile.Commander ?? "";
//var userOc = profile.Root ?? "";
//if (rootOc != null)
//{
// var list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty);
// if (list.Count > 0)
// approver = list.First().Name;
//}
var leaveLast = await _leaveRequestRepository.GetLeaveLastByTypeForUserAsync(userId, req.Type);
var result = new GetUserLeaveProfileResultDto
@ -1349,7 +1305,7 @@ namespace BMA.EHR.Leave.Service.Controllers
// return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
// }
var rawData =
await _leaveRequestRepository.GetLeaveRequestByUserIdAsync(userId, req.Year, req.Type, req.Status);
@ -1477,8 +1433,6 @@ namespace BMA.EHR.Leave.Service.Controllers
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<ResponseObject>> GetLeaveRequestByIdAsync(Guid id)
{
//var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
var rawData = await _leaveRequestRepository.GetByIdAsync(id);
var thisYear = DateTime.Now.Year;
@ -2297,8 +2251,8 @@ namespace BMA.EHR.Leave.Service.Controllers
}
var thisYear = DateTime.Now.Year;
var toDay = DateTime.Now.Date;
if(toDay >= new DateTime(toDay.Year, 10, 1) && toDay <= new DateTime(toDay.Year, 12, 31))
thisYear = thisYear + 1;
if (toDay >= new DateTime(toDay.Year, 10, 1) && toDay <= new DateTime(toDay.Year, 12, 31))
thisYear = thisYear + 1;
//var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId, AccessToken);
@ -2355,70 +2309,10 @@ namespace BMA.EHR.Leave.Service.Controllers
if (rawData.Type.Code == "LV-005")
{
//var leaveData = await _leaveBeginningRepository.GetByYearAndTypeIdForUserAsync(thisYear, leaveType.Id, userId);
leaveLimit = leaveData == null ? 0.0 : leaveData.LeaveDays;
extendLeave = leaveLimit - 10;
//var beginningLeave = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(thisYear, leaveType.Id);
//var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
//var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
//var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
//var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
//if (govAge >= 180)
//{
// if (govAge >= 3650)
// {
// // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
// extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
// if (extendLeave >= 20) extendLeave = 20;
// }
// else
// {
// extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
// if (extendLeave >= 10) extendLeave = 10;
// }
//}
//else
// leaveLimit = 0;
}
// #1136
//var extendLeave = 0.0;
//var leaveLimit = rawData.Type.Limit;
//var approvePrevYear = await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear - 1);
//if (rawData.Type.Code == "LV-005")
//{
// var beginningLeave = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(thisYear, rawData.Type.Id);
// var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == rawData.KeycloakUserId && x.LeaveTypeId == rawData.Type.Id);
// var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId, AccessToken);
// var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
// if (govAge >= 180)
// {
// if (govAge >= 3650)
// {
// // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
// extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
// if (extendLeave >= 20) extendLeave = 20;
// }
// else
// {
// extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
// if (extendLeave >= 10) extendLeave = 10;
// }
// }
// else
// leaveLimit = 0;
//}
var result = new GetLeaveRequestForAdminByIdDto
{
Id = rawData.Id,
@ -2594,22 +2488,21 @@ namespace BMA.EHR.Leave.Service.Controllers
thisYear = thisYear + 1;
var sendList = await _leaveRequestRepository.GetSumSendLeaveAsync(thisYear);
//var approveList = await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear);
var rejectList = await _leaveRequestRepository.GetSumRejectLeaveAsync(thisYear);
var deleteList = await _leaveRequestRepository.GetSumDeleteLeaveAsync(thisYear);
//var approvePrevYear = await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear - 1);
var result = new List<dynamic>();
var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
if (pf == null)
{
throw new Exception(GlobalMessages.DataNotFound);
}
foreach (var leaveType in leaveTypes)
{
var sendData = sendList.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
var send = sendData == null ? 0 : sendData.SumLeaveDay;
//var approveData = approveList.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
//var approve = approveData == null ? 0 : approveData.SumLeaveDay;
var leaveData = await _leaveBeginningRepository.GetByYearAndTypeIdForUserAsync(thisYear, leaveType.Id, userId);
var leaveData = await _leaveBeginningRepository.GetByYearAndTypeIdForUser(thisYear, leaveType.Id, pf);
var approve = leaveData == null ? 0 : leaveData.LeaveDaysUsed;
var rejectData = rejectList.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
@ -2625,34 +2518,8 @@ namespace BMA.EHR.Leave.Service.Controllers
if (leaveType.Code == "LV-005")
{
//var leaveData = await _leaveBeginningRepository.GetByYearAndTypeIdForUserAsync(thisYear, leaveType.Id, userId);
leaveLimit = leaveData == null ? 0.0 : leaveData.LeaveDays;
extendLeave = leaveLimit - 10;
//var beginningLeave = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(thisYear, leaveType.Id);
//var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
//var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
//var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
//var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
//if (govAge >= 180)
//{
// if (govAge >= 3650)
// {
// // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
// extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
// if (extendLeave >= 20) extendLeave = 20;
// }
// else
// {
// extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
// if (extendLeave >= 10) extendLeave = 10;
// }
//}
//else
// leaveLimit = 0;
}
var data = new